android:点击放大图像
问题描述:
我正在制作一个android应用程序,我需要在点击时放大图像大小。 我得到从服务器下载的这些图像,然后以编程方式在活动中添加这些图像,并因此以编程方式设置图像的ID。现在我的问题是,当我发送imageid o另一个活动来放大它时,它只取最后一张图片的ID。android:点击放大图像
因此给出以下例外。
Unable to start activity ComponentInfo{com.emx.OnDaMove/com.emx.OnDaMove.FullImageActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x5
我用下面的代码制作图像,并将它们添加到表行。
imageUrl = "http://ondamove.it/English/images/users/";
imageUrl = imageUrl + listObject.get(j).getImage();
image = new ImageView(this);
image.setPadding(20, 10, 0, 0);
image.setId(j+1);
imageId=image.getId();
tr.addView(image);
和clickliastener下面的方法:
private OnClickListener clickImageListener = new OnClickListener() {
public void onClick(View v) {
Intent fullScreenIntent = new Intent(v.getContext(),FullImageActivity.class);
fullScreenIntent.putExtra(ProfilePageNormalUser.class.getName(),imageId) ;
ProfilePageNormalUser.this.startActivity(fullScreenIntent);
}
};
,并在图像被放大的活动是:
ImageView myimage = (ImageView) findViewById(R.id.imageviewEnlarged);
Intent intent = getIntent();
int imageId = (Integer) intent.getExtras().get(ProfilePageNormalUser.class.getName());
System.out.println("********"+imageId +"**********");
InputStream is = this.getResources().openRawResource(imageId);
Bitmap originalBitmap = BitmapFactory.decodeStream(is);
Matrix imageMatrix = new Matrix();
imageMatrix.postRotate(90);
Bitmap scaledBitmap = Bitmap.createBitmap(originalBitmap, myimage.getWidth(), myimage.getHeight(), originalBitmap.getWidth(), originalBitmap.getHeight(), imageMatrix, false);
myimage.setImageBitmap(scaledBitmap);
myimage.setScaleType(ScaleType.FIT_XY);
答
雅它肯定会给最后一个ID,因为imageId的值将在每个循环中更新。这将在循环过程中存储最后一个已知值。
您应该使用数组而不是简单变量。
或者您可以在onClick方法中使用v.getId。 (更简单一个)
即使在onclick方法中获取id也会给我相同的异常 – Aditya1510
您可以在onClick中记录ID并查看它返回的内容。如果它不是用于ID的,那么InputStream中的错误应该是= this.getResources()。openRawResource(imageId); – Hardik4560
雅其可能,但你需要一个接收和发送文本的服务器。接收器也应该有你的应用程序。 – Hardik4560