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. Android - Android Studio修改字体(font)大小(size)
  2. Android: android自适应屏幕方向和大小
  3. Android搜索TextView显示关键字标红(忽略大小写)
  4. Android 修改Camera默认preview size预览大小为4:3
  5. Android 5.0 Material 自定义Dialog 背景 字体大小颜色 ui组件颜
  6. Android需要大量内存时自己设置堆大小
  7. Android 中,应用程序需要的图片资源如何针对不同屏幕大小手机设计

随机推荐

  1. Android(安卓)的设计模式---责任链模式
  2. android 写入收件箱
  3. 监听android:drawableLeft和android:draw
  4. aaa
  5. android 写入收件箱
  6. Android那些事儿 成长中的Android(1)
  7. Android实现隐藏状态栏和标题栏
  8. android系统定制从听说到入门五
  9. Android与Unity交互研究
  10. android 自定义progressbar style