在ImageView中交换图像

sca*_*ana 5 android image

我一直在尝试在我的应用程序中实现简单的事情。我以为这很简单,但是以某种方式却无法正常工作。

我想做的是:

  • 中心有一个ImageView活动-它有自己的图像(嗯,有两个)。
  • 我想按该ImageView(或者可能是ImageButton),用相机打开图库/拍照。
  • 然后,在拍照后,我要使ImageView显示图片的缩略图。

我的布局

                <ImageView
                    android:id="@+id/add_photo_left"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginRight="20dp"
                    android:layout_weight="1"
                    android:adjustViewBounds="true"
                    android:src="@drawable/add_photo_button" />

                <ImageView
                    android:id="@+id/add_photo_right"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:adjustViewBounds="true"
                    android:src="@drawable/add_photo_button" />
            </LinearLayout>
Run Code Online (Sandbox Code Playgroud)

我的代码-获取图片路径后

        BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();
        bmpFactoryOptions.inSampleSize = 8;
        Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/5.png",bmpFactoryOptions);
        lastClicked.setImageBitmap(bitmap);
        //lastClicked.setImageResource(R.drawable.green_circle);
Run Code Online (Sandbox Code Playgroud)

我想做的是从sdcard读取调整大小的文件(使用inSampleSize),然后用它填充ImageView(或ImageButton)。但是在使用setImageBitmap函数之后,视图消失了-就像刚加载了空图像一样(注释行正常工作-只是绿色的点)。

也许有人遇到过类似的问题?我将不胜感激。

斯堪纳Greetz

编辑:ofc lastClicked:

lastClicked = (ImageView)findViewById(R.id.add_photo_left);
Run Code Online (Sandbox Code Playgroud)

mja*_*ski 5

你为什么不尝试一下lastClicked.invalidate()呢?

我至少在我的代码中这样做,并且它是这样工作的;)

  • 哇!这是我在 stackoverflow.com 上第一个接受的答案:D 了解何时需要 invalidate() 会很有趣,但昨天我没有找到一个好的答案。 (2认同)