2

画面に要素を配置し、タッチイベントをマッピングするためにデバイスのピクセル幅/高さを取得しようとしていますが、目的の効果が得られません (右下の四角が右下と完全に一致する必要があることに注意してください):

白い四角は右下隅で平らにする必要があります

// screen size
    DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
    float ScrDensity = metrics.density;
    int metricHeight = metrics.heightPixels;//
    int metricWidth = metrics.widthPixels;//

    Log.i("AllMetrics", metrics.toString());

    // temp
    int rightButton_diameter = 100;
    int rightButton_xpos = metricWidth - rightButton_diameter;
    int rightButton_ypos = metricHeight - rightButton_diameter;

AllMetrics が返す場所:

DisplayMetrics{density=2.0, width=720, height=1184, scaledDensity=2.0, xdpi=320.0, ydpi=320.0}

返された高さも仮想デバイス マネージャー (API 19、Android 4.4) にリストされている 720x1280 とは異なり、タッチ イベントの x/y 位置は描画された要素に対して正確であるように見えます (つまり、ボタンのクリック可能な領域は描かれているところと同じ)

これは構成エラーですか、それとも画面位置を取得する方法が間違っていますか?

4

2 に答える 2

3

このコードをチェックしてください

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

活動の外では、これを試すことができます

 ((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(dm)
于 2016-07-23T14:09:07.527 に答える
0

DisplayMetrics メンバーにアクセスするには、次のようにオブジェクトを初期化します。

DisplayMetrics メトリック = 新しい DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(メトリックス);

于 2016-07-23T14:11:30.930 に答える