1. 程式人生 > >【轉】Android 為什麼 dp2px 或 px2dp 公式需要加 0.5f

【轉】Android 為什麼 dp2px 或 px2dp 公式需要加 0.5f

轉自:http://blog.csdn.net/changcsw/article/details/52440543

網上 dp2px 和 px2dp 公式:

  1. public static int px2dip(Context context, float pxValue) {    
  2.      final float scale = context.getResources().getDisplayMetrics().density;    
  3.      return (int) (pxValue / scale + 0.5f);    
  4. }    
  5. public static int dip2px(Context context, float dipValue) {    
  6.      final float scale = context.getResources().getDisplayMetrics().density;    
  7.      return (int) (dipValue * scale + 0.5f);    
  8. }  

這兩個公式網上很多,但為什麼 最後都要加上0.5f 呢?

 按正常的推理應該是  dip = pxValue / scale 和 px = dipValue * scale ,

實際上準確的值就應該是 咱們推理出來的,之所以後面加上0.5f是因為 咱們要的只不是那麼精準,根據推理算出來的是個浮點數,而咱們程式中一般使用int型別就夠了,這裡涉及到一個型別轉換精準度問題,熟悉java特效的同學應該知道

float 型別的 4.1 和4.9 強轉成int型別後,會失去精準度變成 int型別的4, 而如果咱們想四捨五入的話,把他們都加上0.5f,這樣轉換出來的結果就是:

4.4 + 0.5 = 4.9 轉為int 還是4,而4.5 + 0.5 = 5.0 轉換成int後就是5,正好是四捨五入,這樣就保證了咱們算出來的值相對精準。

相關推薦

Android 為什麼 dp2px px2dp 公式需要 0.5f

轉自:http://blog.csdn.net/changcsw/article/details/52440543 網上 dp2px 和 px2dp 公式: public static int px2dip(Context context, float pxValue) {       

Android 4.0 Launcher2源碼分析——啟動過程分析

handler flag 這一 第一次啟動 asynctask pla size ontouch wait Android的應用程序的入口定義在AndroidManifest.xml文件中可以找出:[html] <manifest xmlns:android="htt

Android:No implementation found for native

stat void for boa bte pre shared int jnienv 解決方法: 1.檢查native c code的定義: JNIEXPORT void Java_com_example_something_MyClass_getMyString(JNI

Android橫豎屏重力自適應

ron ati lan target 設計 根據 use rpo 適應 通常我們的應用只會設計成橫屏或者豎屏,鎖定橫屏或豎屏的方法是在manifest.xml文件中設定屬性android:screenOrientation為"landscape"或"portrait":

Android路由實現

~~ 下載 bin 一個 setup 自己的路 rul 簡單 sync 本文轉自: http://blog.csdn.net/qibin0506/article/details/53373412 前幾個月有幸參加了CSDN組織的MDCC移動開發者大會, 一天下來我最大的收獲

Android開發筆記(序)寫在前面的目錄

animator 進程間通信 scrip cst 調用 receiver 手勢 打包 數據庫基礎 原文:http://blog.csdn.net/aqi00/article/details/50012511 知識點分類 一方面寫寫自己走過的彎路掉進去的坑,避免以後

Android Camera 相機開發詳解

exc troy start 當前 container rac google getconf 對比度 在Android 5.0(SDK 21)中,Google使用Camera2替代了Camera接口。Camera2在接口和架構上做了巨大的變動, 但是基於眾所周知的原因

Android Studio打包全攻略---從入門到精通

UC store 類型 安裝文件 public alt url tool 描述 原文地址:http://blog.csdn.net/zivensonice/article/details/51672846 初出茅廬 手動打包 怎麽手動打包 項目寫完了,現在需要把應用上傳

Android性能優化-過度繪制解決方案

裏的 watermark == ++ 深度 getc 像素 多次 但是 轉載請註明出處:http://blog.csdn.net/a740169405/article/details/53896497 過度繪制: 屏幕上某一像素點在一幀中被重復繪制多次,就是過度繪制。

android開發學習 ------- android中的單例模式 (詳解)

lan post tail -- and 使用 href details android開發 https://blog.csdn.net/u011418943/article/details/60139644 這篇文章 前因後果 都說出來了 ,值得學習。 htt

Android-使用Socket進行大檔案斷點上傳續傳

在Android中上傳檔案可以採用HTTP方式,也可以採用Socket方式,但是HTTP方式不能上傳大檔案,這裡介紹一種通過Socket方式來進行斷點續傳的方式,服務端會記錄下檔案的上傳進度,當某一次上傳過程意外終止後,下一次可以繼續上傳,這裡用到的其實還是J2SE裡的知識。   這個上傳程式的

adb.Android手機可以通過adb執行按鍵操作

1、Android手機可以通過adb執行按鍵操作 - sealee01 - CSDN部落格.html(https://blog.csdn.net/u013678906/article/details/78540585) 2、 Android手機可以通過adb執行按鍵操作 如下,執行的是home鍵的操作

Android動態破解微信本地資料庫(EnMicroMsg.db)

最近在公司接了一個任務,需要在幾百臺手機上安裝一個app,目的是獲取微信裡面的通訊錄,並且定時的把他傳送到我們的伺服器上。當時依次嘗試的如下幾個方案:   1.通過群控,將好友截圖傳送到服務端(python),利用python的影象識別庫來獲取好友的資訊。   2.開發一個app,使用

Android 平臺語音通話及迴音消除、噪音消除研究

本文轉自部落格:https://www.cnblogs.com/jianglijs/p/8583603.html -------------------------------------------------------------------------------------------

[Android Studio] Android Studio如何刪除module(轉載)

[Android Studio] Android Studio如何刪除module(轉載) 轉載地址:http://blog.csdn.net/hyr83960944/article/details/37519299 當你想在Android Studio中刪除某個module時,大家習慣性的

Android-Accessibility(輔助功能/無障礙,自動安裝APP)

參考: http://www.infoq.com/cn/articles/android-accessibility-installing https://developer.android.com/guide/topics/ui/accessibility/services https://devel

Android開發:Service和Thread的關係

不少Android初學者都可能會有這樣的疑惑,Service和Thread到底有什麼關係呢?什麼時候應該用Service,什麼時候又應該用Thread?答案可能會有點讓你吃驚,因為Service和Thread之間沒有任何關係! 之所以有不少人會把它們聯絡起來,主要就是因為Service的後臺概念。Threa

Android中保持Service的存活

這幾天一直在準備考試,總算有個半天時間可以休息下,寫寫部落格。 如何讓Service keep alive是一個很常見的問題。 在APP開發過程中,需要Service持續提供服務的應用場景太多了,比如鬧鐘需要作出及時提醒,那麼比如得有一個Service不斷去比較當前時間和設定時間;QQ要能流暢的聊天,必然

Android開發:Service和Thread的關系

墨跡天氣 關系 https 依賴 and 但是 size nac 後臺運行 不少Android初學者都可能會有這樣的疑惑,Service和Thread到底有什麽關系呢?什麽時候應該用Service,什麽時候又應該用Thread?答案可能會有點讓你吃驚,因為Service和T

android dev tools

2015-08-18 按:大陸連純搞技術的都被政治害慘了。下載正常的開發工具和sdk,要麼慢得像烏龜,要麼直接被GFW封鎖。所以一些面試官聽說候選人不會翻牆,立馬就開始鄙視。 測試了www.google.com, dl.goo