android 等比控件,Android打造可按宽高比例缩放的ImageView

一、概述

图片多的页面,经常会听见UI说,你写的UI变形了。图片拉伸、变形也是开发有时会遇到的问题。

二、先看一下缩放的效果图

698c01cfcca1

效果图.jpg

测试图片的宽高尺寸:840 * 420,也就是 2:1,宽是高的2倍。

三、缩放的需求分析

1. 按宽或者高来缩放

2. 缩放的倍数或者说比例

四、自定义属性

五、控件的宽高是在onMeasure指定的,先分析一下有多少种情况

1. 明确的指定了宽高

2. 按宽度来缩放

3. 按高度缩放

/**

* 测量控件的代码

*/

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

// 不设置任何属性

if (mScaleType == 0 || mScaleRadio == 0) {

super.onMeasure(widthMeasureSpec, heightMeasureSpec);

return;

}

int widthMode = MeasureSpec.getMode(widthMeasureSpec);

int heightMode = MeasureSpec.getMode(heightMeasureSpec);

int widthSize = MeasureSpec.getSize(widthMeasureSpec);

int heightSize = MeasureSpec.getSize(heightMeasureSpec);

// 如果子类设置了精确的宽高

if (widthMode == MeasureSpec.EXACTLY && heightMode == MeasureSpec.EXACTLY

&& (widthSize != 0 && heightSize != 0)) {

setMeasuredDimension(widthSize, heightSize);

return;

}

// 如果是按宽度来缩放

if (mScaleType == WIDTH && widthMode == MeasureSpec.EXACT

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值