[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();

你可能感兴趣的:(Android_Develop)