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

时间:2015-03-24 00:43:12

标签: android image resize imageview getresource

我有两个ImageViews如下:

        <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 个答案:

答案 0 :(得分:4)

您可以尝试这样的事情:

ImageView img2 = (ImageView) findViewById(R.id.image2);
img2.setScaleType(ImageView.ScaleType.CENTER_CROP);
img2.setImageDrawable(img1.getDrawable());

答案 1 :(得分:0)

不要使用相同的drawable。 Drawables有界限,这样他们就会分享这些界限。您需要复制Drawable,并将其设置为img2的可绘制。

Drawable clone = drawable.getConstantState().newDrawable();

将复制drawable。

答案 2 :(得分:0)

使用Glide lib。它可以帮助你

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);