1

異なる解像度の画面で同じ場所にテキストを配置できないようです。問題は、テキストがフローティングであることです。これは、レイアウト タイプのコントロールの一部ではありません。

画面サイズと比較して相対的な単位でテキストを配置しようとしています。たとえば、X 軸に 50%、Y 軸に 67.89% を配置します。それにもかかわらず、テキストは解像度の異なる画面では別の場所に表示されます。

そのため、特定の解像度の場所を概算するのに行き詰まっており、これは非常に速く厄介になります。

DPI / 画面サイズに関係なく、キャンバス上の同じ場所を特定するにはどうすればよいですか?

4

2 に答える 2

4

DisplayMetricsを使用して距離を計算します。たとえば、テキストを常に左と上から 1.5 インチにしたい場合です。

これは、描画しているビューまたはビットマップで機能します。

draw(Canvas canvas){
    Matrix identity = new Matrix; // Used to have canvas draw on
    Matrix savedMatrix = new Matrix();
    canvas.getMatrix(savedMatrix);
    canvas.setMatrix(identity);

    float y = displayMetrics.ydpi * 1.5;
    float x = displayMetrics.xdpi * 1.5;

    canvas.drawText(text, x, y + paint.getTextSize(), paint);
    canvas.setMatrix(savedMatrix);
}
于 2011-08-28T01:39:01.710 に答える