我有两个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只显示图像作为第一个。是的,实际尺寸。
任何人都可以帮忙找到解决方案吗?
由于
答案 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);