Android下的單位及相互之間的關係和換算
dip(簡稱dp)
一個基於 density(密度)的抽象單位,這個和裝置硬體有關,通常在開發中設定一
些 view 的寬高推薦用這個,一般情況下,在不同解析度,都不會有縮放的感覺。在運
行時, Android 根據使用中的螢幕的實際密度, 透明地處理任何所需 dip 單位的縮放。
不依賴裝置畫素,依據裝置自動適應大小,推薦使用
sp
同 dip/dp 相似,會根據使用者的字型大小偏好來縮放,專門用於設定字型的大小。
總結:在設定中,控制元件的高低大小使用的dp,不依賴裝置的畫素,根據裝置自動適應大小。而,設定字型的大小要使用sp,可一個根據使用者字型的大小進行縮放。
px
畫素,是螢幕的物理畫素點,與密度相關,密度大了,單位面積上的 px 會比較多。
在不同解析度下會有不同的效果,通常不推薦使用這個,用dp進行替代;
dp與px之間的關係
首先明確一點: HVGA 屏 density=160;QVGA 屏 density=120; WVGA 屏 density=240;WQVGA 屏 density=120 density 值表示每英寸有多少個顯示點,與解析度是兩個概念。 dip 到 px 的轉換公式: px = dip * (density / 160) Android 官方定義 dip 等價於 160dpi 螢幕下的一個物理畫素點, 即 1dip=1px。舉例來 說, 在 240 dpi 的螢幕上, 1dip 等於 1.5px。 不同 density 下螢幕解析度資訊,以 480dip*800dip 的 WVGA(density=240)為例: 1. 當 density=120 時螢幕實際解析度為 240px*400px (兩個點對應一個解析度)狀態 欄和標題欄高為 19px 或者 25dip。 橫屏時螢幕寬度為 400px 或者 800dip,工作區域高度 211px 或者 455dip; 豎屏時螢幕寬度為 240px 或者 480dip,工作區域高度 381px 或者 775dip。 2. 當 density=160 時螢幕實際解析度為 320px*533px (3 個點對應兩個解析度)狀態 欄和標題欄高為 25px 或者 25dip。 橫屏是螢幕寬度 533px 或者 800dip,工作區域高度 295px 或者 455dip; 豎屏時螢幕寬度 320px 或者 480dip,工作區域高度 508px 或者 775dip。 3. 當 density=240 時螢幕實際解析度為 480px*800px (一個點對於一個解析度)狀態 欄和標題欄高為 38px 或者 25dip。 橫屏是螢幕寬度 800px 或者 800dip,工作區域高度 442px 或者 455dip; 豎屏時螢幕寬度 480px 或者 480dip,工作區域高度 762px 或者 775dip。
說明:
在 Android 的應用包 apk 中,系統會根據各個裝置的具體情況引用相應的
資原始檔(注:不加任何標籤的資源是各種解析度情況下共用的):
當螢幕 density=240 時,使用 hdpi 標籤的資源;
當螢幕 density=160 時,使用 mdpi 標籤的資源;
當螢幕 density=120 時,使用 ldpi 標籤的資源;
下面是在 manifest 中設定 app 在不同解析度時,是否支援多密度的方法
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="FrameLayout" android:versionCode="1" android:versionName="1.0" > -------- <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" /> ------- </manifest>
下面是dp與px的換算工具
public class DensityUtil {
public static int dip2px(Context context, float dipValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dipValue * scale + 0.5f);
}
public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
}
相關推薦
Android下的單位及相互之間的關係和換算
dip(簡稱dp) 一個基於 density(密度)的抽象單位,這個和裝置硬體有關,通常在開發中設定一 些 view 的寬高推薦用這個,一般情況下,在不同解析度,都不會有縮放的感覺。在運 行時, An
Android 下陀螺儀、加速度和磁場感測器資料定義
摘自Android SensorEvent.java程式碼註釋 Sensor.TYPE_ACCELEROMETER(加速度感測器型別) All values are in SI units (m/s^2) values[0]: Accelerati
Android ListView 使用及MVC關係概要
ListView使用模型MVC劃分及使用方法 MVC關係如下: 三種Adapter類圖關係如下: 有三種方式使用Adapter繫結資料,後兩者都帶使用layout的引數 自己擴充套件BaseAdapter使用ArrayAdapter使用S
Android下設定CPU核心數和頻率
現在的Android手機雙核、四核變得非常普遍,同時CPU頻率經常輕鬆上2G,功耗肯定會顯著增加。而大多數的ARM架構的CPU採用的是對稱多處理(SMP)的方式處理多CPU。這就意味著每個CPU核心是被平等對待的,同時開啟又同時關閉。顯然,這樣的做法在Mobile Dev
淺談linux系統下的權限管理和進程及服務的控制
cal water 控制 權限列表 The 加載 pro 進程查看 e30 一、文件權限的管理 1、權限存在意義為了安全2、權限的識別ls -l file 文件的權限ls -ld dir 目錄的權限3、權限的查看與理解 rw-r--r-- 1 root r
nginx反向代理、負載均衡配置與linux環境下的安裝及通過ip和域名訪問nginx
本文主題: 一、什麼是nginx 二、nginx的應用場景 三、linux環境下nigix的安裝 四、nginx配置虛擬機器(ip、域名) 五、nginx實現反向代理 六、nginx實現負載均衡 一、什麼是nginx 1、http伺服器(通過nginx配置檔案配置
Java刪除資料夾及資料夾下的子資料夾和子檔案
Java刪除資料夾及資料夾下的子資料夾和子檔案 public class Test { public static void main(String[] args){ File file = new File("D:\\a"); delAllFile(f
Android之自定義EditText游標和下劃線顏色
最近在寫些小Demo複習基礎,在用到EditText的時候突然發現之前幾乎沒有注意到它的游標和下劃線的顏色,於是花了不少時間,看了不少部落格,現在就來總結和分享一下收穫。 1、第一印象:原生的EditText 我們要在原生的EditText上修改,首先當然要認識一下它的本來面目。在Andro
SSM框架下,spring中service和dao層的關係
【部分轉載】 1、java web 中dao 層和service層都使用介面,是否是為使用介面而使用介面? 一個dao或者一個service都是一個介面,然後再一個類去實現,為什麼不直接使用一個類呢?在入門級(單表)的SSM+maven程式碼裡面,我們甚至可以看到dao和service的介面
android下建立資料夾和修改其許可權的方法
/** * File creation mode: the default mode, where the created file can only * be accessed by the calling application (or all applications shari
Java反射機制的原理及在Android下的簡單應用
package crazypebble.reflectiontest;import java.lang.reflect.Constructor;import java.lang.reflect.Method;publicclass LoadMethod { /** * 在執行時載入指定的類,並呼
計算機資料儲存單位及換算
1.bit(位元) bit,我們不一定聽說過的位元,大名鼎鼎的比特幣就是以此命名的。它的簡寫為小寫字母 “b” 。 作為資訊科技的最基本儲存單元,因為位元實在太小了,所以大家生活中並不是經常聽到。那麼 bit 是什麼呢? 電腦是以二進位制儲存以及傳送接收資料的。二進位制的一位,就叫做 1 b
Android下拉列表Spinner更改邊框和箭頭
直接在drawable檔案下建立xml檔案,寫spinner控制元件的時候background屬性引用樣式即可,程式碼中有詳細註釋 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns
JDK和Android SDK下載及安裝教程
Android SDK下載及安裝教程 1、安裝JDK 1)官網下載:http://www.Oracle.com/technetwork/Java/javase/downloads/index.html 2)安裝jdk 路徑可以自定義也可以預設,自定義時不可包含中文字元 安
C++_派生類的建構函式及派生類和基類之間的特殊關係
派生類和基類的概念及派生類建構函式的原理: 建立一個叫做TableTennisPlayer的基類,記錄會員的名字和是否有球桌。 1 //宣告一個基類 2 class TableTennisPlayer 3 { 4 private: 5 string firstname; 6
Android下拉重新整理和上拉載入
先看看XML佈局檔案,下拉重新整理和上拉載入哪個在外層並沒有什麼影響。最裡面嵌套了一個RecycleView。 <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/gridswipre
Android 實現TextView的部分文字和網路連結及電話號碼點選監聽
前言 最近在寫專案的時候遇到了一個這樣的需求,要像qq一樣,點選評論的者的名字要跳轉評論者的使用者資訊介面,並且點選評論資訊中的web連結要跳轉到WebActivity,同時如果是其他數字的話要像qq一樣點選並顯示底部Dialog提示是播打電話還是複製號碼。 效
tomcat高併發下優化詳解及連線數和執行緒池
高併發環境下,我知道優化配置tomcat,對連線數和執行緒池作修改,最重要的是connector的協議Http Connector使用NIO,而不是預設的AJP Connector,當時也沒有仔細研究其原理。現在來為以上這些設定做一下剖析。 要了解這些,不能避開tomcat
類與類之間的關係:依賴關係和關聯關係及繼承關係中self是什麼? 類裡面的特殊成員
類與類之間的關係 ⼤千世界, 萬物之間皆有規則和規律. 我們的類和物件是對⼤千世界中的所有事物進行歸類. 那事物之間存在著相對應的關係. 類與類之間也同樣如此. 在⾯向物件的世界中. 類與類中存在以下關係: 1. 依賴關係 2. 關聯關係 3. 組合關係 4. 聚合關係 5. 繼承關係 6.
android 開發零起步學習筆記(九):android 控制控制元件的位置和大小及Layout相關屬性
1、 ? 1 2 3 4 5 6 7 8 9 10 11 LinearLayout.LayoutParams p = newLinearLayout.LayoutParams(