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



更多相关文章

  1. 三、安卓UI学习(1)
  2. android Dialog大小修改
  3. android style
  4. Android获取屏幕大小
  5. Android中获取屏幕相关信息(屏幕大小,状态栏、标题栏高度)
  6. android 设置bitmap 设置图片的大小
  7. android中定制的dialog
  8. Android(安卓)常用的SDCARD和内存操作
  9. Android(安卓)TextView自带padding 10dp问题

随机推荐

  1. compileSdkVersion、buildToolsVersion、
  2. Android使用了ProGuard时注意的事项
  3. Android(安卓)解析IMEI
  4. android触摸实现方式
  5. Android(安卓)在指定 LinearLayout 中动
  6. android webview js交互 (java和js交互)
  7. android触摸实现方式
  8. android 通知Notification的使用小实例(振
  9. android Dialog弹在底部核心代码
  10. Failed to fetch URL http://dl-ssl.goog