6

私が開発しているアプリには、2つの別々のレイアウトが含まれています。1つは通常の電話用で、もう1つはNOOKcolorなどの小型タブレット用です。画面幅の解像度(現在は600dip)に基づいて決定されます。Nookでは見栄えがしますが、720x1280のディスプレイを備えたHTCRezoundではひどいです。後者の場合、解像度が高くても、すべて(テキスト、画像など)がはるかに大きく見えるため、すべてがまとめられます。

適切なデバイスを選択するための良いアプローチは何でしょうか?おそらく、物理的なサイズ(4.3 "対7")対解像度を検出しますか?

4

2 に答える 2

6

次の方法を使用して、デバイスの画面サイズを検出します。

    /**
     * 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 );
    }
于 2012-04-09T22:12:17.197 に答える
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
于 2012-04-09T22:11:51.920 に答える