PX轉DP
- 先上代碼
- 思路
- 關于DP
- 使用
- DP轉PX
海外版接入AppLovin的廣告MAX,據說Topon就是仿照的他,根據長期接入Topon的經驗,分分鐘接入激勵,插屏,banner一條龍,結果到資訊流,自定義位置的地方卡住了,
先上代碼
//Android PX轉DP 就這兩行,我喜歡直接在Unity用,直接用下面Unity代碼就行
final float scale = getResources().getDisplayMetrics().density;
int dp = (int) (px / scale + 0.5f);//px是像素值
unity代碼
AndroidJavaClass unityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject _unityContext = unityClass.GetStatic<AndroidJavaObject>("currentActivity");
float scale = _unityContext.Call<AndroidJavaObject>("getResources").Call<AndroidJavaObject>("getDisplayMetrics").Get<float>("density");
int widthDP = (int)(Screen.width/scale + 0.5f);//根據設備像素寬度獲取設備寬度DP
int heightDP = (int)(Screen.height/scale + 0.5f);//根據設備像素高度獲取設備高度DP
思路

這是官方檔案,就這么點,300x250的尺寸怎么適配怎么不對,弄半天才明白,用的是Android適配設計用的DP
這樣的話,我求出來設備寬高的DP值,不就可以按比例想放哪放哪了么
關于DP
詳細就不說了,自己查,不理解也沒關系,就是Android的一種適配方案

使用
根據以上方法,已經求出設備的寬高的DP值,Unity設計一般原點在螢屏中心,Android設計原點在左上角,
需求:
資訊流橫向要居中顯示,資訊流縱向上部與螢屏中心平齊
x坐標 = [ 螢屏寬DP - 資訊流DP(300)] / 2
y坐標 = 螢屏高DP / 2
傳入對應API,完事,

螢屏寬高都有了,復雜點的可以自己按比例計算位置,不在贅述
DP轉PX
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
沒用著,unity的不寫了,需要的按上面抄就行
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/277146.html
標籤:其他
