jop*_*jop 2 android bitmap screen-orientation imageview
我的应用程序应该首先显示图像,当按下按钮时,另一个图像显示在图像视图中.但是,当旋转屏幕时,imageView会显示旧图像.我该怎么办呢?(bits是在创建时加载到imageView的Bitmap)
我的代码如下:
RGBToBitmap(rgb.getWindow(), bits); //this loads a new image into bits
imageView.setImageBitmap(bits);
Run Code Online (Sandbox Code Playgroud)
我想你是在Activity的onCreate或onStart方法中设置ImageView的第一个图像.
旋转屏幕后,再次调用onCreate和onStart方法,因此ImageView会再次显示第一个图像.
要保存您的活动状态,请查看以下内容:http: //developer.android.com/reference/android/app/Activity.html#SavingPersistentState
这可能是一个可能的解决方案:
Bitmap image = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
image = (Bitmap) getLastNonConfigurationInstance();
if(bitmap == null){
image = downloadImage();
}
setImage(bitmap);
}
@Override
public Object onRetainNonConfigurationInstance() {
return bitmap;
}
Run Code Online (Sandbox Code Playgroud)
您还可以在使用片段时阅读此方法:
Fragment.setRetainInstance
Run Code Online (Sandbox Code Playgroud)
或Bundle :( onSaveInstanceState(Bundle)也可在您的Activity中使用)
//Save it onSaveInstanceState:
@Override
public void onSaveInstanceState(Bundle toSave) {
super.onSaveInstanceState(toSave);
toSave.putParcelable("bitmap", bitmap);
}
//nd get it back onCreate:
@Override
public void onCreate(Bundle savedState) {
super.onCreate(savedState);
if (savedState != null) bitmap = savedState.getParcelable("bitmap");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4817 次 |
| 最近记录: |