![](/img/trans.png)
[英]How can I make an ImageView rotate the image when the device is rotated from portrait/landscape?
[英]ImageView disapears when changing to portrait/landscape
我有一张 imageview 上面有一张 bitmap 图片。 我在 onActivityResault 中设置了这张图片。 问题是当我更改为纵向/横向时,图像消失了。
protected void onActivityResult(int requestCode,int resultCode, Intent imageReturnedIntent) {
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
switch(requestCode) {
case 1:
if(resultCode == RESULT_OK){
Uri selectedImage = imageReturnedIntent.getData();
InputStream imageStream;
try {
imageStream = getContentResolver().openInputStream(selectedImage);
Bitmap yourSelectedImage = BitmapFactory.decodeStream(imageStream);
image.setImageBitmap(yourSelectedImage);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
当方向改变时,活动被销毁并再次创建。 如果您使用 xml 创建布局,则所有设置了 @id 的小部件都应使用其内容自动重新创建。 否则,您必须手动执行此操作 - 看看 Activity 的方法onRestoreInstanceState() onSaveInstanceState()
只需覆盖它们并编写您自己的保存/恢复代码。 一些未经测试的代码,希望它能给你一个想法:
@Override
public void onSaveInstanceState(Bundle b){
b.putParcelable("image", image.getBitmap());
}
@Override
public void onRestoreInstanceState(Bundle b){
//you need to handle NullPionterException here.
image.setBitmap((Bitmap) b.getParcelable("image"));
}
建立 piotrpo 的答案,这是一个更具体的版本:
@Override
public void onSaveInstanceState(Bundle b){
b.putParcelable("image", imageMap);
}
@Override
public void onRestoreInstanceState(Bundle b){
imageMap = b.getParcelable("image");
imageView.setImageBitmap(imageMap);
}
其中imageMap
是您的 bitmap 图像
如果你给你的 imageview 一个 ID,当你改变方向时它不会消失。 我认为这是保持你的观点最简单的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.