Android屏幕適配總結

   長期以來,適配都是Android開發人員的通病,Android的開源導致了Android的多樣化,各大手機廠商對Android系統進行了深度定製,根據自己需求,開發出各種各樣尺寸的手機。這些各種各樣尺寸的手機,無疑給我們這些開發人員添了很多麻煩,到底怎樣才能做到更好的適配呢,以下是本人適配總結,如果有欠缺或不對的地方,還望指出與海涵。

  1. 首先先知道基礎概念

      屏幕大小(screen size):屏幕的實際大小,用屏幕對角線長度來衡量。ndroid把屏幕分爲以下4種:small(小                              屏),normal(正常屏),large(大屏),extra large(特大屏)。

      屏幕密度(Screen Density):一塊實際的屏幕區域有多少個像素,一般用dpi衡量(每英寸有多少個點)。相比                                  起medium、high屏幕密度的設備,在一塊確定大小的屏幕區域l密度爲low的屏                                  幕擁有的像素更少。

      方向(orientation):屏幕方向分爲landscape(橫屏)和portrait(豎屏)。

      分辨率(Resolution) : 屏幕上的總實際像素數。對屏幕進行適配時,一般不關注它的分辨率,只關注它的屏                            幕大小和密度。

      密度無關的像素(Density-independent pixel,dp或dip): 爲了保證你的UI適合不同的屏幕密度,建議你採                                                            用dp來定義程序UI。 

   計算方法: 

	public static int dip2px(Context context, float dipValue) {
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (dipValue * scale + 0.5f);
	}

	public static int px2dip(Context context, float pxValue) {
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (pxValue / scale + 0.5f);
	}

 android把屏幕密度分爲4種:low,medium,high,extra high。各dpi代表的密度:ldpi:120 mdpi:160 hdpi:240  xdpi:320 xxdpi:480 你可以根據下面的方法獲取你手機的密度

        DisplayMetrics metric = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metric);
        int width = metric.widthPixels;  // 屏幕寬度(像素)
        int height = metric.heightPixels;  // 屏幕高度(像素)
        float density = metric.density;  // 屏幕密度(0.75 / 1.0 / 1.5)
        int densityDpi = metric.densityDpi;  // 屏幕密度DPI(120 / 160 / 240)
        System.out.println("width:"+width+"\nheight:"+height+"\n屏幕密度:"+density+"\n屏幕密度DPI:"+densityDpi);



2. 具體的適配方法

首先需要在Manifest裏面需要設置支持屏幕類型 

<supports-screens
                android:smallScreens="true"  //是否支持小屏
                android:normalScreens="true" //是否支持中屏
                android:largeScreens="true"   //是否支持大屏
                android:xlargeScreens="true"  //是否支持超大屏
                android:anyDensity="true"    //是否支持多種不同密度的屏幕
                ”/>

1、對應用圖標的適配: 

            hdpi  72*72 | ldpi  36*36 | mdpi  48*48 | xdpi  96*96 | xxdpi 120*120

2、對不同屏幕進行適配

  1. 在res目錄下面創建不同的layout文件夾,例如:layout-large 也可以根據分辨率創建如layout-480x800 ,然後放響應的xml文件即可

  2. 可以對不同密度的手機提供不同的圖片(建議使用)因爲很多時候如果你做的應用,圖片很多的話,一套圖是肯定滿足不了的,因爲可能低密度顯示沒問題,但是較高密度手機就會顯示很小

  3. 另外界面適配很大一部分也取決於你的佈局,要學會靈活的使用四大布局 儘量多的使用wrap_content match_parent dp ,多分析一下界面的設計, 有時候能起到事半功倍的作用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章