更新時(shí)間:2016年10月31日17時(shí)30分 來源:傳智播客Android培訓(xùn) 瀏覽次數(shù):
2,如何支持屏幕的密度?
對(duì)于屏幕密度進(jìn)行優(yōu)化,主要指的就是放置圖片。
1.如果需要設(shè)定控件或者圖片的寬高時(shí),使用非密度制約像素,也就是dp和sp,可以適配屏幕的大小和密度。
2.提供備用的視圖。
提供多套圖片。
這樣高分辨的手機(jī)顯示不會(huì)造成模糊的現(xiàn)象,低分辨率手機(jī)顯示不會(huì)模糊圖片也不會(huì)內(nèi)存溢出。
3.如何去實(shí)施自適應(yīng)的用戶界面的流程。
(1).確定當(dāng)前的布局。
(2).確定當(dāng)前布局做出的響應(yīng)。顯示結(jié)果是單面板還是雙面板。
(3).可以重復(fù)的使用其他的activity當(dāng)中的碎片。
(4).處理屏幕適配時(shí)發(fā)生的變化。
在代碼中獲取屏幕的寬度和高度:
//獲取屏幕寬高的第一種方式:
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth();
int height = wm.getDefaultDisplay().getHeight();
Log.i("tag", "width=="+width+",height=="+height);
//獲取屏幕寬高的第二種方式:
DisplayMetrics outMetrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(outMetrics);
width = outMetrics.widthPixels;
在代碼中獲取包的信息的方法:
String pkName = this.getPackageName();
Log.i("tag", "當(dāng)前應(yīng)用的包名:"+pkName);
//獲取應(yīng)用包管理器
PackageManager pm = this.getPackageManager();
//獲取應(yīng)用的信息
try {
PackageInfo info = pm.getPackageInfo(pkName, 0);
int versionCode = info.versionCode;
String versionName = info.versionName;
Log.i("tag", "versionCode=="+versionCode+",versionName=="+versionName);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
圖片的加工處理代碼:
//1.得到用來設(shè)置圖片尺寸的參數(shù)的對(duì)象
BitmapFactory.Options options = new BitmapFactory.Options();
//2.解碼邊緣
options.inJustDecodeBounds = true;
//3.對(duì)圖片進(jìn)行解碼
BitmapFactory.decodeByteArray(data, 0, data.length, options);
//4.獲取圖片原來的寬度和高度
int oldWidth = options.outWidth;
int oldHeight = options.outHeight;
//5.得到壓縮的比例
double scaleWidth = oldWidth/newWidth; //寬度要壓縮的比例
double scaleHeight = oldHeight/newHeight; //高度要壓縮的比例。
//6.取出寬高的壓縮比例當(dāng)中較大的值作為縮放比例
int scale = (int) Math.round(scaleHeight>scaleWidth?scaleHeight:scaleWidth);
//7.設(shè)置參數(shù)當(dāng)中的縮放比例,必須要設(shè)置大于1的整數(shù),數(shù)越大,縮放越小
options.inSampleSize = scale;
//8.縮放邊緣
options.inJustDecodeBounds = false;
//9.通過屬性參數(shù)對(duì)象得到新的位圖
Bitmap bm = BitmapFactory.decodeByteArray(data, 0, data.length,options);
本文版權(quán)歸傳智播客Android培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!
作者:傳智播客Android培訓(xùn)學(xué)院
首發(fā):http://m.fskzgqt.cn/Android
Android培訓(xùn)之常見的 20 個(gè) jQuery 面試問題及答案 (3)
2016-10-27Android培訓(xùn)之常見的 20 個(gè) jQuery 面試問題及答案 (2)
2016-10-27Android培訓(xùn)之常見的 20 個(gè) jQuery 面試問題及答案 (1)
2016-10-27Android培訓(xùn)之sqlserver中的增刪改查記錄
2016-10-27Android培訓(xùn)之AdapterView與Adapter(2)
2016-10-26Android培訓(xùn)之AdapterView與Adapter (1)
2016-10-26北京校區(qū)