ScaleDrawable的正确打开方式

安卓中有一个ScaleDrawable类,类的说明是这样的 :

A Drawable that changes the size of another Drawable based on its current level value

OK,字面意思理解就是根据原有的Drawable创建出另一个缩/放了的Drawable。

但是,请不用忽略的一个关键字"level"!!!!!

也就是说,ScaleDrawable的缩放,并不是自动的建立在原有Drawable尺寸的基础上的。而是,需要给原有的Drawable指定一个Level,然后ScaleDrawable是在这个Level的基础上进行缩放的!!

而且,更加坑爹的事情是,在设置百分比的时候,设置的值是缩小的比例。也就是说,设置0.1,意为缩小10%!!而不是原始大小的10%!!

所以,要想让ScaleDrawable发挥作用,一定要注意上述两点:在原Drawable上设置一个Level(这个Level就相当于为SeekBar设置Max的作用是一样的),并且设置的浮点数意为缩小的比例,这个值越小,图形越大,值越大,图形越小。

代码参考:

Drawable drawable = getResources().getDrawable(R.drawable.test);//原始图像
drawable.setLevel(100);//设置level
ScaleDrawable sd = new ScaleDrawable(d,Gravity.Center,1.0f,1.0f);
iv.setImageDrawable(sd);

上述这段代码的意思是,在iv中放一个图像。这个图像是一个缩小了的drawable,它比原始图像在长和宽上都缩小10%,也就是原始图像81%大小的图像。

如果使用ScaleDrawable不设置Level的时候,默认值为0,根据0进行缩放是得不到缩放后的图像的。因此,如果不设置level,根本看不到任何缩放后的图像。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值