0

デバイスの画面解像度をプログラムで読み取ろうとしています。アプリで 4 からすべての API バージョンをサポートしたいのですが、残念ながら、解像度を読み取るための API がバージョン 12 から 13 に変更されました。

これは私のコードです:

int Measuredwidth = 0;
int Measuredheight = 0;

WindowManager w = getWindowManager();
if (Build.VERSION.SDK_INT >= 13) {
  Point size = new Point();
  w.getDefaultDisplay().getSize(size);
  Measuredwidth = size.x;
  Measuredheight = size.y;
} else {
  Display d = w.getDefaultDisplay();
  Measuredwidth = d.getWidth();
  Measuredheight = d.getHeight();
}

コンパイルされません。:(

Call requires API level 13 (current min is 4): android.view.Display#getSize 

では、どうすればこれを修正できますか?

4

2 に答える 2

2

この「コンパイル エラー」は、実際には Lint エラーです。

Lint API チェックの記事には、利用可能な多くの情報があります。

コードに @TargetApi アノテーションを付けるだけで、新しいバージョンの API をターゲットとしてコードを「マーク」できます。

そうすれば、minSdkVersion を保持して、古いバージョンの Android をサポートできます。

于 2013-03-22T16:20:41.003 に答える
-3

あなたはこのようにすることができます:

int Measuredwidth = 0;
int Measuredheight = 0;

Display d = getWindowManager().getDefaultDisplay();
Point size = new Point();
try {
    Method method = d.getClass().getMethod("getSize", Point.class);
    method.invoke(defaultDisplay, point);
    Measuredwidth = size.x;
    Measuredheight = size.y;

} catch (Exception e) {

}
if (Measuredwidth == 0){
    Measuredwidth = d.getWidth();
    Measuredheight = d.getHeight();
}
于 2013-03-22T16:22:32.317 に答える