dp與px,sp的安卓轉換。

2021-08-02 14:14:50 字數 1443 閱讀 8724

一種是網上的單位轉換**:

/** 

* 根據手機的解析度從 dp 的單位 轉成為 px(畫素)

**@param context

*@param dpvalue

*/public

static

intdip2px(context context, float dpvalue)

/**

* 根據手機的解析度從 px(畫素) 的單位 轉成為 dp

**@param context

*@param pxvalue

*/public

static

intpx2dip(context context, float pxvalue)

/**

* 將px值轉換為sp值,保證文字大小不變

* *@param pxvalue

*@param fontscale

* (displaymetrics類中屬性scaleddensity)

*@return

*/public

static

intpx2sp(context context, float pxvalue)

/**

* 將sp值轉換為px值,保證文字大小不變

* *@param spvalue

*@param fontscale

* (displaymetrics類中屬性scaleddensity)

*@return

*/public

static

intsp2px(context context, float spvalue)

另一種是用安卓自帶的類轉換。

實際上,android中也提供了單位轉換的函式,那就是typedvalue類。

typedvalue.complex_unit_sp,16 設定成16sp。

typedvalue:這個類是工具類,作為乙個動態容器,它存放一些資料值,這些值主要是

resource中的值。typedvalue類把對應的值轉化為實際螢幕上的點值,也就是畫素

值。具體的用法如下:

其中,第乙個引數是你想要得到的單位,第二個引數是你想得到的單位的數值,第三個

引數封裝了顯示區域的各種屬性值。

例如,我要得到乙個25sp,那麼我就用

25,context.getresources().getdisplaymetrics())

就是說,我想要乙個25(第二個引數)sp(第乙個引數)在當前裝置上對應的px值。

注意:complex_unit_dip:乘以顯示密度density(dpi/160)。

typedvalue.complex_unit_sp:乘以畫素密度scaleddensity(=density)。

安卓開發 Activity狀態的轉換

activity狀態會根據使用者的不同操作進行轉換。上午導師過來指點了一下,說明了一下 規範,並且檢查了一下昨天的學習情況。其中發現,我對activity狀態轉換有點模糊。按安卓機器上的home鍵和返回鍵,一直到返回主介面,activity的狀態是不同的。按home鍵的時候,最後顯示的這個介面的狀態...

安卓開發Activity轉換動畫

安卓開發執行時,頁面切換的動畫效果對使用者體驗有一定影響,以前不知道怎麼弄的,還以為是主題自帶的 package com.example.activitytransfer import android.content.intent import android.os.bundle import an...

Unity與安卓通訊

unity5.0以後,將unityplayeractivity打成jar包,打包報錯。解決方法 將bin下面所有包含r的類刪掉再打jar包,打jar包命令 cd到classes目錄,jar cvf jar 記錄下plugins android下面的檔案位置 1 jar包 res資料夾 android...