[Android]【安卓】在代码中实时获取控件尺寸的几种方法

[Android]【安卓】在代码中实时获取控件尺寸的几种方法

本篇博客已收录到我的安卓开发小结中——点击【安卓开发小结】

1、已知控件大小,想知道他在不同设备上的px值。
使用TypedValue.applyDimension方法。
如果这个控件你知道了大小,但不知道在各个设备上的大小,可以使用TypedValue.applyDimension方法来获取实际大小。getResources().getDisplayMetrics()方法Activity类和View中都有提供,因此可以在Activity和自定义View中都可以使用这个方法。

int ballRadius = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, BALL_RADIUS, getResources().getDisplayMetrics());

applyDimension是android.util.TypedValue类下的一个静态方法,可以看到这个方法的作用就是将value的值换算为dp、sp等对应的px值,因为在实时运行过程中很多方法接受的是px值,而不是xml中的dp值。

public static float applyDimension(int unit, float value,DisplayMetrics metrics)
    {
        switch (unit) {
        case COMPLEX_UNIT_PX://获得value作为px值对应的px值
            return value;
        case COMPLEX_UNIT_DIP:
            return value * metrics.density;//获得value作为dp值对应的px值
        case COMPLEX_UNIT_SP:
            return value * metrics.scaledDensity;//获得value作为sp值对应的px值
        case COMPLEX_UNIT_PT:
            return value * metrics.xdpi * (1.0f/72);
        case COMPLEX_UNIT_IN:
            return value * metrics.xdpi;
        case COMPLEX_UNIT_MM:
            return value * metrics.xdpi * (1.0f/25.4f);
        }
        return 0;
    }

2、已经获取到控件的对象。
已经得到了控件的对象的话,可以使用View类带的getHeight和getWidth方法,但是这两个方法在绘制好之前的值会一直是0。

view.getHeight();
view.getWidth();

3、想获取的对象是切图。
如果你想获取的控件大小是一张UI提供的图片在设备上的实际大小,那么可以用以下方法。先把drawable资源放到一个bitmap对象里,然后调用bitmap对象的getHeight和getWidth方法即可得到切图在当前设备里的px值。

Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.island_off);
int imgHeight = bitmap.getHeight();
int imgWidth = bitmap.getWidth();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值