亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

android中px和dp,px和sp之間的轉換方法

2019-10-21 21:49:57
字體:
來源:轉載
供稿:網友

在Android開發中dp和px,sp和px之間的轉換時必不可少的,網上流傳的方法

public class DisplayUtils {  /**   * convert px to its equivalent dp   * 將px轉換為與之相等的dp   */  public static int px2dp(Context context, float pxValue) {    final float scale = context.getResources().getDisplayMetrics().density;    return (int) (pxValue / scale + 0.5f);  }  /**   * convert dp to its equivalent px   * 將dp轉換為與之相等的px   */  public static int dp2px(Context context, float dipValue) {    final float scale = context.getResources().getDisplayMetrics().density;    return (int) (dipValue * scale + 0.5f);  }  /**   * convert px to its equivalent sp    * 將px轉換為sp   */  public static int px2sp(Context context, float pxValue) {    final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;    return (int) (pxValue / fontScale + 0.5f);  }  /**   * convert sp to its equivalent px   * 將sp轉換為px   */  public static int sp2px(Context context, float spValue) {    final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;    return (int) (spValue * fontScale + 0.5f);  }}

關于轉換公式中,通過類比一元一次函數,怎么看都是有問題的,這么明顯的問題,為什么沒人糾正,后來發現是自己并沒有理解,原因是float類型在強轉為int類型是,用的是去尾法,精度上有較大差異,所以通過+0.5f的方式,將去尾法轉變成四舍五入法,提高精度。

調用TypedValue類實現轉換

/*** convert dp to its equivalent px*/protected int dp2px(int dp){    return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp,getResources().getDisplayMetrics());}/*** convert sp to its equivalent px*/protected int sp2px(int sp){    return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp,getResources().getDisplayMetrics());}public class TypedValue {  ...  /** {@link #TYPE_DIMENSION} complex unit: Value is raw pixels. */  public static final int COMPLEX_UNIT_PX = 0;  /** {@link #TYPE_DIMENSION} complex unit: Value is Device Independent   * Pixels. */  public static final int COMPLEX_UNIT_DIP = 1;  /** {@link #TYPE_DIMENSION} complex unit: Value is a scaled pixel. */  public static final int COMPLEX_UNIT_SP = 2;  /** {@link #TYPE_DIMENSION} complex unit: Value is in points. */  public static final int COMPLEX_UNIT_PT = 3;  /** {@link #TYPE_DIMENSION} complex unit: Value is in inches. */  public static final int COMPLEX_UNIT_IN = 4;  /** {@link #TYPE_DIMENSION} complex unit: Value is in millimeters. */  public static final int COMPLEX_UNIT_MM = 5;  /**   * Converts an unpacked complex data value holding a dimension to its final floating    * point value. The two parameters <var>unit</var> and <var>value</var>   * 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;  }  ...}

對比兩種方式的差異,其實就在+0.5f上,去尾法和四舍五入法的區別,即精度問題。

總結

以上所述是小編給大家介紹的android中px和dp,px和sp之間的轉換方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲aaaaaa| 国产精品扒开腿做爽爽爽视频| 午夜精品一区二区三区在线播放| 92看片淫黄大片看国产片| 欧美日韩一区二区三区在线免费观看| 精品少妇一区二区30p| 国内精品400部情侣激情| 在线视频日本亚洲性| 国产精品久久久久久久久久小说| 国产极品精品在线观看| 国产91精品视频在线观看| 日韩免费在线播放| 国内外成人免费激情在线视频| 久久最新资源网| 国产女人精品视频| 欧美夫妻性生活xx| 国产精品美腿一区在线看| 国产在线观看一区二区三区| 成人在线观看视频网站| 亚洲精品www久久久久久广东| 午夜精品久久久久久久久久久久| 国产精品一区二区三区免费视频| 精品国内亚洲在观看18黄| 中文字幕免费精品一区| 欧美在线视频在线播放完整版免费观看| 欧美精品videosex牲欧美| 国产精品av电影| 成人精品福利视频| 最近2019年日本中文免费字幕| 亚洲最大成人免费视频| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲欧洲高清在线| 欧美精品videossex88| 91中文在线观看| 国产精品高潮呻吟久久av野狼| 国产精品2018| 亚洲a成v人在线观看| 久久久亚洲国产| 尤物yw午夜国产精品视频明星| 最近2019年好看中文字幕视频| 中文字幕九色91在线| 中国日韩欧美久久久久久久久| 欧美专区福利在线| 日韩欧美国产高清91| 国产免费一区二区三区香蕉精| 亚洲午夜久久久影院| 性视频1819p久久| www.亚洲一二| 欧美午夜精品久久久久久浪潮| 国产精品视频男人的天堂| 国内外成人免费激情在线视频| 色小说视频一区| 4k岛国日韩精品**专区| 国模叶桐国产精品一区| 欧美激情欧美狂野欧美精品| 欧美日韩一二三四五区| 亚洲欧美一区二区精品久久久| 欧美乱大交xxxxx| 欧美电影在线观看| 国产亚洲视频在线| 久久久极品av| 国产在线98福利播放视频| 日韩经典一区二区三区| 久久亚洲电影天堂| 精品人伦一区二区三区蜜桃网站| 欧美性受xxxx白人性爽| 欧美尤物巨大精品爽| 亚洲xxxxx电影| 亚洲免费精彩视频| 亚洲视频一区二区三区| 久久中文字幕在线视频| 欧美电影电视剧在线观看| 91久久久久久久久久久久久| 国产欧美日韩精品丝袜高跟鞋| 米奇精品一区二区三区在线观看| 日av在线播放中文不卡| 亚洲国产精品yw在线观看| 国产一区二区三区在线播放免费观看| 国产一区二区三区在线免费观看| 久久露脸国产精品| 亚洲护士老师的毛茸茸最新章节| 中文字幕日韩av电影| 亚洲精品日产aⅴ| 久久影院资源站| 2020欧美日韩在线视频| 久久国产精品久久国产精品| 精品国产一区二区三区久久| 91在线观看免费观看| 欧美极品第一页| 欧美日本高清一区| 精品久久久久久久久国产字幕| 国产ts一区二区| 欧美激情二区三区| 亚洲精品视频免费| 午夜精品视频在线| 中文字幕亚洲欧美在线| 欧美在线精品免播放器视频| 日韩av影片在线观看| 97人人爽人人喊人人模波多| 日韩av资源在线播放| 亚洲国产精久久久久久久| 亚洲国产精品yw在线观看| 日韩中文av在线| 国产精品99久久久久久久久久久久| 国产精品99久久久久久白浆小说| 精品高清一区二区三区| 亚洲www在线| 精品久久久久久国产91| 国产精自产拍久久久久久| 国产91露脸中文字幕在线| 欧美成年人网站| 色综合天天狠天天透天天伊人| 日本亚洲欧美三级| 亚洲aⅴ日韩av电影在线观看| 欧洲精品在线视频| 91在线看www| 亚洲mm色国产网站| 欧美日韩aaaa| 久久久91精品国产一区不卡| 搡老女人一区二区三区视频tv| 亚洲欧美国产va在线影院| 欧美视频13p| 91精品中国老女人| 亚州精品天堂中文字幕| 国产精品久久久999| 国产精品免费一区豆花| 亚洲最大的免费| 色综合老司机第九色激情| 在线观看精品国产视频| 国产一区二区三区视频免费| 亚洲人成网站777色婷婷| 日韩av在线天堂网| 久久久人成影片一区二区三区| 国产精品久久久久影院日本| 久久国产视频网站| 日韩在线免费视频| 91精品久久久久久久久| 菠萝蜜影院一区二区免费| 91精品在线看| 色老头一区二区三区| 亲爱的老师9免费观看全集电视剧| 久久久久久一区二区三区| 91免费看视频.| 久久人人看视频| 国产午夜精品视频| 在线激情影院一区| 亚洲精品福利视频| 日韩一区二区三区在线播放| 一区二区欧美激情| 久久色精品视频| 欧美日韩国产中文精品字幕自在自线| 午夜精品久久久久久久久久久久| 亚洲精品99久久久久中文字幕| 欧美wwwxxxx| 国产精品88a∨| 国产精品一区二区久久久| 91av成人在线| 亚洲综合在线做性| 国产精品日韩在线播放| 精品国产一区二区在线| 亚洲欧美自拍一区| 日韩在线观看免费av| 亚洲欧美国产高清va在线播| 欧美精品激情视频|