現(xiàn)在android智能手機(jī)在市場上非常普遍,各式各樣的款式,各種類型,各種屏幕大小不一,真的挺為用戶感到高興,但有部分人還是挺郁悶的,那就是程序猿,為什么這樣說呢?現(xiàn)在的android程序猿工作量非常大,在哪方面體現(xiàn)呢?那就是對手機(jī)進(jìn)行適配。什么是適配,那就是要將某個應(yīng)用在不同屏幕上顯示效果要一致或者是不能亂。
上面的是作為android開發(fā)工程師的感受,現(xiàn)進(jìn)入正題:
要做到適配,那先了解主流的手機(jī)是哪些分辨率,比如480*800,720*1280等,那怎么樣獲取這些信息?下面是獲取信息的代碼:
??????????DisplayMetrics?dm?=?new?DisplayMetrics();??
??????????getWindowManager().getDefaultDisplay().getMetrics(dm);??
??
float?density??=?dm.density;??????//?屏幕密度(像素比例:0.75/1.0/1.5/2.0)??
int?densityDPI?=?dm.densityDpi;?????//?屏幕密度(每寸像素:120/160/240/320)??
float?xdpi?=?dm.xdpi;???????????
float?ydpi?=?dm.ydpi;??
??
Log.e("??Jeny",?"xdpi="?+?xdpi?+?";?ydpi="?+?ydpi);??
Log.e(?"??Jeny",?"density="?+?density?+?";?densityDPI="?+?densityDPI);??
??
int?screenWidthDip?=?dm.widthPixels;????????//?屏幕寬(dip,如:320dip)??
int?screenHeightDip?=?dm.heightPixels;??????//?屏幕寬(dip,如:533dip)??
??
Log.e("??Jeny",?"screenWidthDip="?+?screenWidthDip?+?";?screenHeightDip="?+?screenHeightDip);??
??
int?screenWidth??=?(int)(dm.widthPixels?*?density?+?0.5f);??????//?屏幕寬(px,如:480px)??
int?screenHeight?=?(int)(dm.heightPixels?*?density?+?0.5f);?????//?屏幕高(px,如:800px)??
??
Log.e("??Jeny",?"screenWidth="?+?screenWidth?+?";?screenHeight="?+?screenHeight);?
Configuration?config?=?getResources().getConfiguration();
????????int??smallestScreenWidth?=?config.smallestScreenWidthDp; //?屏幕最小寬
????????
????????Log.e("??Jeny",?"smallestScreenWidth="?+?smallestScreenWidth);
以上代碼可以讓你了解你用的手機(jī)上的信息,但最主要的還是int? smallestScreenWidth = config.smallestScreenWidthDp; 這句,獲取屏幕最小寬,因為以下適配方案是需要根據(jù)該值來進(jìn)行解說的:
在獲取smallestScreenWidth值后,在資源文件中新增values-sw300dp、values-sw400dp類似的文件夾,values-sw300dp表示最小寬為300dp的手機(jī)會使用該文件夾下的資源;values-sw400dp表示最小寬為400dp的手機(jī)會使用該文件夾下的資源。這個是個人測試獲取的結(jié)果,分享出來,希望能幫助android工程師們!





