1. 程式人生 > >Android下的單位及相互之間的關係和換算

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中servicedao層的關係

【部分轉載】 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

JDKAndroid 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(