8

欲求は480x800ピクセル、3.7インチで、HDは480 x 800ピクセル、4.3インチの画面仕様です。

このスレッドから回答として受け入れられたコードを実行しますデバイスの画面サイズを取得するにはどうすればよいですか?しかし、それは間違っています!たとえば、画面サイズが3.7インチの場合、2.4が返されます。これは非常に間違っています!

誰かが実際の画面サイズを取得する方法を知っていますか?、私はインチ単位の画面の画面サイズが必要な解像度は必要ありません。

注:このコードは間違っています(少なくとも私には機能しません)

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels; //give me 320
int height = dm.heightPixels; //give me 533

私はHTCDesireを持っていて、解像度は480 x 800ピクセルです!

私は愚かだと知っています!、そして明らかに私は何か間違ったことをしますが、誰かが私に実際の画面サイズをインチで取得し、デバイスの実際の解像度を取得する方法を教えてもらえますか?

ありがとう

4

4 に答える 4

16

OK ついに私は自分の問題が何であるかを見つけました

はい、このコードは正常に動作しますが、ピクセルを返しません。同じではない DIP (密度に依存しないピクセル) を返します。

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

私が必要としたのは REAL ピクセルであり、それらの計算は次のようになります。

int widthPix = (int) Math.ceil(dm.widthPixels * (dm.densityDpi / 160.0));

widthPix は 480 になりました。

于 2011-07-27T08:16:06.273 に答える
8

あなたの質問を見つけて、開発中またはテスト中のデバイスでこの効果がまったく見られないのはなぜだろうと思いました... getWidth()/getHeight() は、使用可能な画面の正確な範囲を返しています。他の人も同様にここに行き着き、コードを追加して混乱を招き、根本的な原因を理解していないのではないかと思います。

これは、事前スケーリングを明示的に無効にした場合に起こることです。このドキュメントの 2 番目の箇条書きを参照してください。(「320x533」という用語で Google をすばやく検索すると、これに遭遇した他の多くの人が見つかりました。) 事前スケーリングを取り除くと、不一致は解消されます (getWidth()/getHeight() は実際の値を返します)。サイズであり、スケーリングされたサイズではありません。

タブレット開発者への注意: getWidth()/getHeight() は生の画面サイズを返しません。これは、下部のバー (48 ピクセル程度) がアプリが描画できる領域の一部ではないためです。描画できるすべてのサイズが得られます(たとえば、横向きモードのフル 1280x800 ではなく 1280x752)。繰り返しますが、事前スケーリングがないということは、これらの値が正確で正確であることを意味します。

于 2011-10-21T13:55:16.480 に答える
0

Displayではなくクラスを使用してみてくださいDisplayMetrics

Display dispOb = getWindowManager().getDefaultDisplay();
String widthAndHeight= dispOb.getWidth()+"X"+dispOb.getHeight();
于 2012-07-14T11:06:46.163 に答える