1

2 つのタブレット デバイスがあります。

1) Asus Memo Pad 172V タブレット

オンラインで提供される仕様: 600 * 1024 ピクセル、7.0 インチ (~170 ppi ピクセル密度) LINK

コードによる仕様: 1024 * 552 ピクセル、7.0 インチ (160 ppi ピクセル密度)

2) MID 7510 タブレット

オンラインで提供される仕様: 800 * 480 ピクセル、7.0 インチ (密度はどこにも言及されていません) LINK

コードによる仕様: 1024 * 552 ピクセル、7.0 インチ (160 ppi ピクセル密度)

私の問題は次のとおりです。

-両方のタブレットの密度と解像度は (コードで) 同じであるため、ビットマップの高さを設定するためにそれらを区別するにはどうすればよいですか (幅は両方とも正しくなります) MID7510。ビットマップの高さはわずかに下に拡張されます。

-
両方の タブレットでビットマップ サイズが異なる原因となる他の要因はありますか?

-コードによって仕様が異なり、オンラインで異なる仕様が与えられているのはなぜですか?

密度と解像度を取得するコード:

 DisplayMetrics dm = new DisplayMetrics();
 getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);                       

    int screenWidth = dm.widthPixels;
    int screenHeight = dm.heightPixels;                     

    // Display device dpi (density) value in pixels
    int screenDPIy = (int)dm.ydpi;
4

2 に答える 2

0

チャートはdrawable-hdpiフォルダーにありました。

私は単純にこれをしていました:

img.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));

そうすることで、 MID 7510の高さが適切ではありませんでした。

このような高さの設定は、両方のタブレットで機能しました。

static int imgHeight = 0;

Drawable d = (BitmapDrawable) getResources().getDrawable(R.drawable.chart);

imgHeight = d.getIntrinsicHeight(); 

final ImageView img = new ImageView(getActivity());

img.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, (int) (imgHeight * 1.5)));

これは、1 hdpi = 1.5 mdpiであるためです。したがって、全体の高さは画像の高さの 1.5 倍にする必要があります。

于 2013-09-05T07:33:03.360 に答える
0

それぞれの質問に答えようとしますが、より重要な質問から始めます。

- コードによって仕様が異なり、オンラインで異なる仕様が与えられるのはなぜですか?

デバイスに使用されている材料をオンラインで見つけることができるため、通常は正しい値です。コンストラクターがデバイス用の Android バージョンをビルドしているときに、コンストラクターによって設定されたコード仕様を見つけます。意味 : それは誤りかもしれません! 特に、不明なコンストラクターまたは「weisung」などの中国の低コストのデバイスの場合。

それを考えると、他の質問に対する答え:

- 両方のタブレットでビットマップ サイズが異なる原因となる他の要因はありますか?

そうは思いません。画面サイズと密度が異なりますが、システムは同じだと思います...最終的なビットマップサイズの違いを説明しています。

-どうすればそれらを区別できますか?

間違いなく画面の仕様からではありません。本当に「weisung」デバイスを管理する必要がある場合は、コードでデバイス構成のメーカーをいつでも確認できます。(メーカー フィールド XD で ID を正しく設定していると仮定します)

定数値を確認します。android.os.Build.MANUFACTURER

このトピックについても詳しく知りたいので、さらに情報があれば大歓迎です。

于 2013-08-30T14:49:53.033 に答える