2016-12-20 3 views
0

にはデバイスの幅を検出し、デバイスの画面の幅に基づいてプログラムでビューを追加できる方法があります。たとえば、シングルペインまたはデュアルペインです。アンドロイド検出デバイスの幅

今、付加的なUIのための方法は、レイアウトXMLをさまざまなデバイスサイズに使用しています。私たちの場合、これは十分柔軟ではありません。

layout-small/ 
layout-large/ 
layout-sw600dp/ 

layout.xmlはルートの空のコンテナのみを定義し、実行時に検出されるデバイスサイズに基づいてプログラムでビューを追加します。

ありがとうございました。

+0

を設定することができます。あなたの「十分な柔軟性がない」ということは、あなたが本当に間違っていることです。 Androidのほぼすべてのコストでそのアプローチが回避される理由があります。あなたの例には、Androidが実際に本当に上手なものの古典的な例があります。 –

答えて

1

Uは、Uは、このコードは、Androidデバイスの解像度(幅、高さ)のすべてのバージョンをサポートします

view.setLayoutParams(new LayoutParams(width, height)); 
+0

Uはそのパラメータを使って幅を設定できます – Athul

0

のように設定することができます

DisplayMetrics displaymetrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
int height = displaymetrics.heightPixels; 
int width = displaymetrics.widthPixels; 

ランタイムデバイスの表示幅&高さを取得するには、このコードを使用することができますランタイムで正確に

private void calculateDeviceResolution(Activity context) { 
     Display display = context.getWindowManager().getDefaultDisplay(); 

     if (Build.VERSION.SDK_INT >= 17) { 
      //new pleasant way to get real metrics 
      DisplayMetrics realMetrics = new DisplayMetrics(); 
      display.getRealMetrics(realMetrics); 
      realWidth = realMetrics.widthPixels; 
      realHeight = realMetrics.heightPixels; 

     } else if (Build.VERSION.SDK_INT >= 14) { 
      //reflection for this weird in-between time 
      try { 
       Method mGetRawH = Display.class.getMethod("getRawHeight"); 
       Method mGetRawW = Display.class.getMethod("getRawWidth"); 
       realWidth = (Integer) mGetRawW.invoke(display); 
       realHeight = (Integer) mGetRawH.invoke(display); 
      } catch (Exception e) { 
       //this may not be 100% accurate, but it's all we've got 
       realWidth = display.getWidth(); 
       realHeight = display.getHeight(); 
       Constants.errorLog("Display Info", "Couldn't use reflection to get the real display metrics."); 
      } 

     } else { 
      //This should be close, as lower API devices should not have window navigation bars 
      realWidth = display.getWidth(); 
      realHeight = display.getHeight(); 
     } 
    } 

高さは、あなたがそのように痛みの世界のために自分自身を設定するつもりだ、この活性の

view.setLayoutParams(new LayoutParams(realWidth , realHeight)); 
0

のようなフラグメントで

DisplayMetrics dm = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(dm); 
int height = dm.heightPixels; 
int width = dm.widthPixels; 

DisplayMetrics dm = new DisplayMetrics(); 
((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(dm); 
int height = dm.heightPixels; 
int width = dm.widthPixels; 
関連する問題