如何从ImageView中获取图像并将其设置到其他ImageView?

6

我有两个ImageView如下:

        <ImageView android:id="@+id/image1"
          android:layout_width="match_parent"  
          android:layout_height="match_parent"  
          android:src="@drawable/ic_launcher" />

        <ImageView android:id="@+id/image2"
          android:layout_width="match_parent"  
          android:layout_height="match_parent"  
          android:adjustViewBounds="true" 
          android:scaleType="fitCenter"
           />

第一个ImageView应该显示实际大小的图像,第二个ImageView应该以fitCenter的方式显示图像。
我一直在尝试这段代码:
    ImageView img1 = (ImageView) findViewById(R.id.image1);
    ImageView img2 = (ImageView) findViewById(R.id.image2);

    img2.setImageDrawable(img1.getDrawable());

但是第二个ImageView显示的只是与第一个相同的图片。是的,它以实际尺寸显示。
有人能帮忙找到解决方案吗?
谢谢。
3个回答

8
您可以尝试类似以下的操作:
ImageView img2 = (ImageView) findViewById(R.id.image2);
img2.setScaleType(ImageView.ScaleType.CENTER_CROP);
img2.setImageDrawable(img1.getDrawable());

0
不要像那样使用相同的drawable。Drawable有边界,这样做它们将共享这些边界。你需要复制一份Drawable,并将其设置为img2的drawable。
Drawable clone = drawable.getConstantState().newDrawable();

将制作一个 drawable 的副本。


0
使用Glide库可以帮助你。
ImageView imV1 = (ImageView) findViewById(R.id.im_v1);
ImageView imV2 = (ImageView) findViewById(R.id.im_v2);
Glide.with(getActivity()).load("https://www.google.es/images/srpr/logo11w.png")
            .thumbnail(0.5f)
            .crossFade()
            .diskCacheStrategy(DiskCacheStrategy.ALL)
            .into(imV1);
 Drawable d = ((ImageView) imV1).getDrawable();
 Bitmap bmp =  ((GlideBitmapDrawable)d.getCurrent()).getBitmap();
imV2.setImageBitmap(bmp);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接