現(xiàn)在android智能手機在市場上非常普遍,各式各樣的款式,各種類型,各種屏幕大小不一,真的挺為用戶感到高興,但有部分人還是挺郁悶的,那就是程序猿,為什么這樣說呢?現(xiàn)在的android程序猿工作量非常大,在哪方面體現(xiàn)呢?那就是對手機進行適配。什么是適配,那就是要將某個應(yīng)用在不同屏幕上顯示效果要一致或者是不能亂。
上面的是作為android開發(fā)工程師的感受,現(xiàn)進入正題:
要做到適配,那先了解主流的手機是哪些分辨率,比如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);
以上代碼可以讓你了解你用的手機上的信息,但最主要的還是int? smallestScreenWidth = config.smallestScreenWidthDp; 這句,獲取屏幕最小寬,因為以下適配方案是需要根據(jù)該值來進行解說的:
在獲取smallestScreenWidth值后,在資源文件中新增values-sw300dp、values-sw400dp類似的文件夾,values-sw300dp表示最小寬為300dp的手機會使用該文件夾下的資源;values-sw400dp表示最小寬為400dp的手機會使用該文件夾下的資源。這個是個人測試獲取的結(jié)果,分享出來,希望能幫助android工程師們!