[Android] - 官方轉換dp, sp 至 pixel的函式
16lz
2022-08-09
http://shareandopen.tumblr.com/post/20110980401/android-util-typedvalue-applydimension#
[Android] - 官方轉換dp, sp 至 pixel的函式
在寫Android Custom的View時,多多少少會在程式碼當中去轉換你的圖片、元件、文字的大小
但是Android程式碼只認得Pixel,而Android Design的原則是希望大家能夠在元件大小用dp為主,而文字大小則用sp為主。網路上也很多dp轉pixel的程式碼。但如果還是覺得不保險,可以試試官方轉換各種類型至pixel的函式:TypedValue.applyDimension,是在android.util這個package下面。原始碼如下
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | /** * Converts an unpacked complex data value holding a dimension to its final floating * point value. The two parametersunit andvalue* are as in {@link #TYPE_DIMENSION}. * * @param unit The unit to convert from. * @param value The value to apply the unit to. * @param metrics Current display metrics to use in the conversion -- * supplies display density and scaling information. * * @return The complex floating point value multiplied by the appropriate * metrics depending on its unit. */ public static float applyDimension( int unit, float value, DisplayMetrics metrics) { switch (unit) { case COMPLEX_UNIT_PX: return value; case COMPLEX_UNIT_DIP: return value * metrics.density; case COMPLEX_UNIT_SP: return value * metrics.scaledDensity; 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 ; } |
那要怎麼使用了,很簡單,請參考以下作法,此範例是說明如何將20dp轉換成實際的Pixel
?1 2 3 4 | Resources r = context.getResources(); // 取得手機資源 float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, //轉換dp值 20 , //dp值 r.getDisplayMetrics()); |
更多相关文章
- 三、安卓UI学习(1)
- android Dialog大小修改
- android style
- Android获取屏幕大小
- Android中获取屏幕相关信息(屏幕大小,状态栏、标题栏高度)
- android 设置bitmap 设置图片的大小
- android中定制的dialog
- Android(安卓)常用的SDCARD和内存操作
- Android(安卓)TextView自带padding 10dp问题