1. 程式人生 > >Android平板適配寬高笨方法

Android平板適配寬高笨方法


遇到的問題

  • 抽屜裡的headview背景圖片在手機里正常,而跑在平板裡就變得非常扁

解決方法

先說第一種方法,這種方法只會獲得螢幕解析度,而Android平板的解析度有可能比配置高的Android智慧機解析度還低,我手機解析度是,而公司分配的平板解析度是800*1280,所以沒有

navView.inflateHeaderView(R.layout.nav_header_main);
WindowManager wm = (WindowManager) getContext()
            .getSystemService(Context.WINDOW_SERVICE);
int
width = wm.getDefaultDisplay().getWidth(); int height = wm.getDefaultDisplay().getHeight(); View headerView = navView.getHeaderView(0); mLayoutOfHeader = headerView.findViewById(R.id.ll_header_bg); if (width>790 && height >1100){ heightOfHeader = (int) getResources().getDimension(R.dimen.header_height); Log.d("MainActivity"
, "heightOfHeader:" + heightOfHeader); mLayoutOfHeader.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,heightOfHeader)); }

第二種有用的方法–自己根據解析度,螢幕DPI(dots-per-inch(每英寸的點數))計算裝置的物理英寸大小

先看結果

Log.d("abc", x + "\n" + y + "\n" + diagonal + "\n" + dens + "\n"
); Log.d("abc","The screenInches "+screenInches); 首先是平板測試結果

輸出日誌為
07-25 09:18:32.532 32128-32128/? D/abc: 640000.0
1478656.0
1455.5603731896524
213
07-25 09:18:32.532 32128-32128/? D/abc: The screenInches 6.833616775538275
螢幕大小大約為6.8

再看看我手機的測試結果
輸出日誌
07-25 09:35:27.193 22155-22155/com.example.administrator.hlfrobot D/abc: 1166400.0
3686400.0
2202.9071700822983
480
07-25 09:35:27.193 22155-22155/com.example.administrator.hlfrobot D/abc: The screenInches 4.589389937671455
螢幕大小為4.6

只要判斷出物理螢幕的大小就可以愉快的判斷來動態設定具體的寬高了。

現在貼一下程式碼

        DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
        int width = displayMetrics.widthPixels;
        int height = displayMetrics.heightPixels;
        double x = Math.pow(width,2);
        double y = Math.pow(height,2);
        double diagonal = Math.sqrt(x + y);
        int dens = displayMetrics.densityDpi;
        double screenInches = diagonal/(double)dens;
        Log.d("abc", x + "\n" + y + "\n" + diagonal + "\n" + dens + "\n");
        Log.d("abc","The screenInches "+screenInches);