編輯:關於Android編程
該節主要記錄從代碼中獲取與屏幕適配相關的各個參數:
Java代碼如下
public class ScreenUtil {
/**
* Note:
* 只有activity可以使用getWindowManager,否則應該使用
* Context.getResources().getDisplayMetrics()來獲取
*/
/**
* 獲取DisplayMetric相關參數
* @param context
* @return
*/
public static String getMetricParams(Activity context){
DisplayMetrics dm = new DisplayMetrics();
context.getWindowManager().getDefaultDisplay().getMetrics(dm);
return "density:"+dm.density+";densityDpi:"+dm.densityDpi
+";height:"+dm.heightPixels+";width:"+dm.widthPixels
+";scaledDensity:"+dm.scaledDensity+";xdpi:"+dm.xdpi
+";ydpi:"+dm.ydpi;
}
/**
* 獲取屏幕尺寸,單位為像素
* @param context
* @return
*/
public static String getScreenSizeInInPixels(Activity context){
DisplayMetrics dm = new DisplayMetrics();
context.getWindowManager().getDefaultDisplay().getMetrics(dm);
double heightInInPixels = (double)dm.heightPixels;
double widthInInPixels = (double)dm.widthPixels;
return "高:"+heightInInPixels+" 寬:"+widthInInPixels+" 單位(像素)";
}
/**
* 獲取屏幕尺寸,單位為英寸
* 計算屏幕尺寸應該使用精確密度:xdpi ydpi來計算
* 使用歸一化密度:densitydpi是錯誤的,它是固定值,
* 120 160 240 320 480,根據dp計算像素才使用它
* @param context
* @return
*/
public static String getScreenSizeInInch(Activity context){
DisplayMetrics dm = new DisplayMetrics();
context.getWindowManager().getDefaultDisplay().getMetrics(dm);
double heightInInch = (double)dm.heightPixels / (double)dm.ydpi;
double widthInInch = (double)dm.widthPixels / (double)dm.xdpi;
double ScrrenSizeInInch = Math.sqrt(heightInInch*heightInInch
+ widthInInch*widthInInch);
return "高:"+heightInInch+" 寬:"+widthInInch+" 尺寸:"+ScrrenSizeInInch
+" 單位(英寸)";
}
/**
* 獲取屏幕尺寸,單位為dp
* @param context
* @return
*/
public static String getScreenSizeInInDp(Activity context){
DisplayMetrics dm = new DisplayMetrics();
context.getWindowManager().getDefaultDisplay().getMetrics(dm);
float heightInInDp = px2dip((Context)context, (float)dm.heightPixels);
float widthInInDp = px2dip((Context)context, (float)dm.widthPixels);
return "高:"+heightInInDp+" 寬:"+widthInInDp+" 單位(dp)";
}
/**
* dp轉px
* @param context
* @param dpValue
* @return
*/
public static int dip2px (Context context, float dpValue){
final float scale = context.getResources().getDisplayMetrics().density;
return (int)(dpValue*scale+0.5f);
}
/**
* px轉dp
* @param context
* @param pxValue
* @return
*/
public static int px2dip(Context context, float pxValue){
final float scale = context.getResources().getDisplayMetrics().density;
return (int)(pxValue/scale+0.5f);
}
}
XML的設置:
android:largeScreens = "true"
android:normalScreens = "true"
android:resizeable = "true"
android:smallScreens = "true
android:xlargeScreens = "true">
android:anyDensity = "true"時,應用程序安裝在不同的密度的終端上面,
程序分別會去加載xxhdpi, xhdpi, hdpi, mdpi,ldpi文件夾中的資源。
【React Native開發】React Native控件之ToolbarAndroid工具欄控件講解以及使用(15)
(一)前言今天我們一起來看一下工具欄控件ToolBarAndroid的介紹完全解析以及最佳實踐。剛創建的React Native技術交流群(282693535),歡迎各位
Android新手入門2016(6)--客戶端編程思想的初步思考和Android學習路線
做了幾年游戲服務端,不過也不是沒接觸過客戶端的。畢業前的作業就不說了,剛畢業的時候,是在億迅公司做CRM,開發廣東電信內部使用的系統。每個功能從頭到尾自己搞。要說客戶端,
Android RSA加密解密
概述 RSA是目前最有影響力的公鑰加密算法,該算法基於一個十分簡單的數論事實:將兩個大素數相乘十分容易,但那時想要對其乘積進行因式分解卻極其困 難,因此可以
為什麼 Android Studio 工程文件夾占用空間這麼大
偶然中發現Android Studio的工程文件夾比ADT Bundle的大很多。用Android Studio新建一個空工程,工程文件夾大小為30M,運行一次後大小為4