2012-04-09 19 views
5

私が開発しているアプリには、2つのレイアウトが含まれています.1つは通常の電話用、もう1つはNOOKcolorなどの小さなタブレット用です。画面幅の解像度(現在は600dpi)に基づいて決定されます。それはヌークで素晴らしいですが、恐ろしいHTC Rezoundには720 x 1280のディスプレイがあります。後者では、高解像度にかかわらず、すべて(テキスト、画像など)ははるかに大きく見えるので、すべてが束ねられます。Android - 小さなタブレットと大きな携帯電話を検出しますか?

適切なデバイスを選択するにはどうすればよいでしょうか?恐らく、物理的なサイズ(4.3 "対7")の解像度を検出するでしょうか?

+0

Configuration.screenLayoutビットマスクがあります - ここhttp://stackoverflow.com/questionsを参照してください/ 5015094 /決定するデバイスの画面カテゴリ - 小規模 - ノーマル - 大規模 - 大容量使用コード – dag

答えて

4

お使いのデバイスの画面サイズを検出するために、次のメソッドを使用します。

/** 
    * Checks if the screen size is equal or above given length 
    * @param activity activity screen 
    * @param screen_size diagonal size of screen, for example 7.0 inches 
    * @return True if its equal or above, else false 
    */ 
    public static boolean checkScreenSize(Activity activity, double screen_size) 
    { 
     Display display = activity.getWindowManager().getDefaultDisplay(); 
     DisplayMetrics displayMetrics = new DisplayMetrics(); 
     display.getMetrics(displayMetrics); 

     int width = displayMetrics.widthPixels/displayMetrics.densityDpi; 
     int height = displayMetrics.heightPixels/displayMetrics.densityDpi; 

     double screenDiagonal = Math.sqrt(width * width + height * height); 
     return (screenDiagonal >= screen_size); 
    } 
+0

Aha!密度はここの鍵です!ありがとう、これは動作するようです – Bostone

+0

何?私は入力パラメータとして7.0を置き、それは私のKindleの火災に対してfalseを返します。 –

+0

私のデバイスでそれをテストし、その完璧に正常に動作しているので、奇妙です。 * return *の前に 'screenDiagonal'をロギングし、実際にあなたのデバイスのために計算したものを確認してください。 – waqaslam

1

Supporting Multiple Screensのドキュメントをご覧ください。あらかじめ設定されたフォルダ命名構造に従うことで、Androidがさまざまな画面サイズ/密度のさまざまなレイアウトと描画可能ファイルを読み込むようにすることができます。例えば

res/layout/my_layout.xml    // layout for normal screen size ("default") 
res/layout-small/my_layout.xml  // layout for small screen size 
res/layout-large/my_layout.xml  // layout for large screen size 
res/layout-xlarge/my_layout.xml  // layout for extra large screen size 
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation 

res/drawable-mdpi/my_icon.png  // bitmap for medium density 
res/drawable-hdpi/my_icon.png  // bitmap for high density 
res/drawable-xhdpi/my_icon.png  // bitmap for extra high density 
+0

プリハニカムの場合これはやや役に立たない – Bostone

関連する問題