点击时总体要变大,外面还有个边框B:
于是我选RelativeLayout做为上面A和B的布局,大小不一样都是固定宽高,里面的图片也是固定宽高,A和B都居中于其父布局,父布局也是个RelativeLayout,点击就切换AB两个visible,问题来了,当我切换到B可见时,里面的ImageView被撑大了,超出了蓝色边框,打印出来的信息也显示其宽高被改大了,但是切换到A时又是正常的,百思不得其解。
后面我发现,在xml布局中不要指定ImageView的src,利用Glide设置placeholder和error就没问题了。
然而,当我以为解决了的时候,另一个地方由于加载的图片是宽高比例较大的矩形,仍然出现这个问题,后来经过不断修改发现,不要指定layout_width和layout_height固定值,通过match_parent和margin来间接设置它的大小就没问题了:
虽然问题解决了,但是还是很困扰,有知道原因的帮忙解答下。
有一个布局,是这样的A:点击时总体要变大,外面还有个边框B:于是我选RelativeLayout做为上面A和B的布局,大小不一样都是固定宽高,里面的图片也是固定宽高,A和B都居中于其父布局,父布局也是个RelativeLayout,点击就切换AB两个visible,问题来了,当我切换到B可见时,里面的ImageView被撑大了,超出了蓝色边框,打印出来的信息也显示其宽高被改大了,但...
在UITableView中自定义了一个UITableViewCell,里面有一个Label和
ImageView
,问题是在点击这个Table的这一条时,
imageview
的
大小
改变
了。
设置
imageview
的背景为红色,发现不是图片的
大小
改变
,而是整个UI
imageview
的
大小
改变
了。
找了很多问题,终于发现自定义的UITableViewCell变量名命名出了问题,我把这
有时候
ImageView
宽度是match_parent ,但是有些手机上却没铺满父布局。
这是因为
ImageView
的ScaleType 属性造成的,如果没设置这个属性的话 默认是ScaleType.FIT_CENTER ,表示图片等比例放大填充满高度或者宽度,所以如果
ImageView
的宽高比不是图片的宽高比,会导致宽度或者高度不够;
如果你想铺满父布局,就设置ScaleType 属性是Sca...
图片缩放是移动应用常见的一个功能,今天我们来讲基于Viewpager+Zoom
ImageView
实现的类似相册的图片放大器,支持双击缩放,双指触摸缩放,单击图片关闭退出当前Activity。
老规矩先上效果图,图一是未缩放时的图片,图二是切换和缩放后的图片效果
先来说说Zoom
ImageView
的实现思路,继承
ImageView
,主要通过捕获用户多指触控时的比例,计算出缩放的
大小
(这个根据个人喜好,可以自行调整的,若需要请动手设置,也增强大家的代码能力),然后获取图片的矩阵视图Matrix进行缩放。
之前写过一篇有关Glide的使用的文章:
Android
Glide图片加载框架使用过程中遇到的问题总结 ,这篇文章主要针对的是Glide 3.0使用过程中遇到的问题,最近一直在使用Glide 4.0做图片的加载,在最近的项目开发过程中,涉及到了宽度固定,高度自适应的情况(应用场景:流式布局、活动弹窗图等),当时的处理方式是在布局文件中添加如下代码:
<
ImageView
本来再xml里面定义也可以实现这种方式,不过我还是比较喜欢用代码的方式去实现public class M
ImageView
extends
ImageView
{
public M
ImageView
(Context context) {
super(context);
public M
ImageView
(Context context, Attrib
imageView
.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
imageView
.getViewTreeObserver().removeOnGlobalLayoutListener(this);
int width =
imageView
.getWidth();
int height =
imageView
.getHeight();
Bitmap bitmap = ((BitmapDrawable)
imageView
.getDrawable()).getBitmap();
int bitmapWidth = bitmap.getWidth();
int bitmapHeight = bitmap.getHeight();
float scaleX = (float) width / bitmapWidth;
float scaleY = (float) height / bitmapHeight;
float scale = Math.min(scaleX, scaleY);
int scaledWidth = (int) (bitmapWidth * scale);
int scaledHeight = (int) (bitmapHeight * scale);
// scaledWidth 和 scaledHeight 就是缩放后的
大小