屏幕旋转后ImageView setImageBitmap未更新

时间:2014-07-30 07:34:44

标签: java android bitmap rotation imageview

我正在开发一个简单的Android应用程序,它在一个单独的线程中下载图像,然后更新主要活动中的imageViews。它工作得很好,但是当我在下载时旋转屏幕时,imageView不再与图像一起更新。

这是代码在更新imageViews的UI线程中的样子:

public void setImage(Bitmap bat, int view) {

    Log.d("main", pic1.getDrawable().toString());

    switch (view) {
    case 1:

        Log.d("main", bat.toString());

        pic1.setImageBitmap(bat);

        Log.d("main", pic1.getDrawable().toString());

        break;
    case 2:
        pic2.setImageBitmap(bat);
        break;
    }

我在日志中尝试调试它。我无需旋转即可下载。当我旋转我的日志时告诉我:

07-30 03:29:59.380: D/main(3658): android.graphics.drawable.BitmapDrawable@42357908
07-30 03:29:59.390: D/main(3658): android.graphics.Bitmap@423af618
07-30 03:29:59.390: D/main(3658): android.graphics.drawable.BitmapDrawable@423afb20

显然,imageView drawable正在改变,但屏幕保持不变。我想也许尝试用这个方法中的(ImageView)findViewById(R.id.imageView1);再次找到imageView,这样我就可以确定即使在屏幕旋转之后也会引用正确的imageView,但它并没有什么区别。

为什么我的屏幕上没有更新图像?

2 个答案:

答案 0 :(得分:1)

Why isn't the image updating on my screen?

首先,当你旋转它时,你仍在下载该图像,在场景后面它正在做的是当你旋转屏幕时,你正在重建活动,它应该摧毁前一个但是你仍然在下载完成时有ImageView的引用,它将从最后一个Activity中更新imageView而不是新重新创建的活动。

答案 1 :(得分:0)

检查方向更改或方向更改时是否得到相同的响应?

如果是,则使用全局变量(位图)使用asynctask存储下载的图像。在里面

       "onConfigurationChanged(..)" 

将下载的图像设置为

        ImageView.

这肯定会解决您的问题。