web-dev-qa-db-ja.com

非推奨であるにもかかわらず、ディスプレイで.getWidthを使用しても安全ですか?

だから私は小さな問題があります、私はサーバーに画面幅を送信する必要がある関数を書いています。私はそれがすべて動作するようにし、私は使用します:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();

幅を取得します。ただし、.getWidht()関数は非推奨であり、使用する必要があると表示されます。

Point size = new Point();
display.getSize(size);

しかし、その機能はAPIレベル13以上でのみ利用でき、私の最小SDKは8です。 getWidthを使用し続けても安全ですか?なぜ新しい機能を追加し、下位互換性を持たないのですか?

50
gabrjan

このアプローチが役立つかもしれません:

DisplayMetrics displaymetrics = new DisplayMetrics();
mContext.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int screenWidth = displaymetrics.widthPixels;
int screenHeight = displaymetrics.heightPixels;
111
iBog

実行時にAPIレベルを確認し、使用するものを選択できます(例:

final int version = Android.os.Build.VERSION.SDK_INT;
final int width;
if (version >= 13)
{
    Point size = new Point();
    display.getSize(size);
    width = size.x;
}
else
{
    Display display = getWindowManager().getDefaultDisplay(); 
    width = display.getWidth();
}
11
nmw

正確になりたい場合は、このアプローチを使用してください>

           int sdk = Android.os.Build.VERSION.SDK_INT;
            if (sdk < Android.os.Build.VERSION.RELEASE) {
                Display display = getWindowManager().getDefaultDisplay();
                int width = display.getWidth();

            } else {
                Point size = new Point();
                display.getSize(size);

            }
4
slezadav