編輯:關於android開發
1.px (pixels)(像素):是屏幕的物理像素點,與密度相關,密度大了,單位面積上的px會比較多。通常不推薦使用這個。
2.dip或dp(與密度無關的像素):一個基於density的抽象單位,這個和設備硬件有關,通常在開發中設置一些view的寬高推薦用這個,一般情況下,在不同分辨率,都不會有縮放的感覺。在運行時, Android根據使用中的屏幕的實際密度, 透明地處理任何所需dip單位的縮放。
3.sp(與刻度無關的像素):同dip/dp相似,會根據用戶的字體大小偏好來縮放,主要用於設置字體的大小。
可能很多朋友對dip和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在不同分辨率時,是否支持多密度的方法。
... <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" /> ...
附:
系統對屏幕大小和密度分類對照圖 :
表 1. Android SDK中包含的模擬器皮膚的屏幕尺寸和密度,以及其他典型的分辨率.
* 要模擬此配置, 使用WVGA800 或 WVGA854創建一個AVD, 指定自定義密度160.
** 要模擬此配置, 使用WVGA800 或 WVGA854創建一個AVD, 指定自定義密度120.
輔助工具類:
import android.content.Context; 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); } }
手機無須ROOT不用修改hosts即可在本地測試安卓、蘋果APP和H5應用,安卓h5開發手機APP和 H5 應用經常需要在本地和線上環境分開測試,一般想到的操作都是修改h
我的android學習經歷15,android學習經歷15利用Intent實現有返回結果的頁面跳轉 主要用的方法: (1)Intent的構造方法:intent(當前界面對
android加固—1.如何檢驗so文件是否加殼成功,androidso程序對so文件加殼後,如何驗證是否加殼成功呢,首先除了能在應用中正常運行外,還要用IDA來檢測:
Android-操作欄之副標題,android-副標題 我們的目標是在操作欄右側加上一個選項菜單,點擊它就可顯示或者隱藏操作欄的副標題。 由於操作欄是在API11級
Android系統之路(初識MTK) ------ 默認第一次開機屏幕亮