图像不是从垂直到水平旋转屏幕方向,反之亦然?

时间:2012-01-09 07:46:58

标签: android android-lifecycle

我通过使用意图从SD卡中选择了一张图像,并且在选择图像后我在图像查看器中显示该图像并显示但是当我在旋转我的屏幕时所选图像没有到来,请帮帮我?

我使用了浏览屏幕的意图 -

public void onClick(View v) {   
   Intent intent = new Intent();     
   intent.setType("image/*");
   intent.setAction(Intent.ACTION_GET_CONTENT);    
   startActivityForResult(Intent.createChooser(intent, "Choose Key Picture"), PICK_FROM_FILE);
}

并显示

if (requestCode == PICK_FROM_FILE) {        
   mImageCaptureUri = data.getData();
   path = getRealPathFromURI(mImageCaptureUri); 
   if (path == null) {
      path = mImageCaptureUri.getPath(); 
   }
   if (path != null) {
      bitmap  = BitmapFactory.decodeFile(path);
   }
}
preview.setImageBitmap(bitmap);   

2 个答案:

答案 0 :(得分:0)

问题是在屏幕旋转期间,Android系统会重新创建您的活动,以使您的布局适应新的屏幕配置。

如果旋转屏幕后图像消失,有两种方法可以解决此问题。

第一种也是最简单的方法:将以下内容添加到清单中活动的声明中:

android:configChanges="orientation|keyboardHidden|keyboard"

这将告诉Android系统在屏幕旋转期间不重新创建您的活动。

另一种方法是在活动的onSaveInstanceState方法中保存图像的路径,并在重新创建活动后重新加载图像。这将帮助您解决由于内存问题而导致您的活动被杀死的错误(例如,如果您的应用正在运行且有人打电话)。在此之后,应该使用相同的娱乐过程。

无论您选择哪种方式,都要仔细查看Activity Lifecycle文档。了解这一点是了解整个Android系统如何运作的关键。

答案 1 :(得分:0)

你可以在Android清单中添加一些行作为onsurfacechange =“orientation”,这样你什么时候才能改变你的屏幕旋转而不会发生任何事情,所以你的图像就像以前一样