0

Javaで簡単なAndroidアプリを作成しようとしていますが、道に迷いました。

多くのビットマップを含む配列リストがあり、それらをキャンバスに描画していますが、ピクセルの測定を使用しているため、ほとんどのデバイスで正しく表示されません。

それで、私のグラフィックのサイズをdpで見つけて、それをdpで画面密度/サイズにスケーリングし、dpまたはdipで配置する方法はありますか。

マイグラフィックス(四角):

ldpiのグラフィックサイズ=50px

mdpiでのグラフィックサイズ=75px

hdpiのグラフィックサイズ=100px

コード内の他のすべては、奇妙に見えることを除けば問題ありませんか?

どんな助けでもいただければ幸いです。

ジェームズ。

4

2 に答える 2

7

アンドロイド開発者ドキュメントから:

UIレイアウトを定義するときに、密度に依存しない方法でレイアウトの寸法または位置を表現するために使用する必要がある仮想ピクセル単位。密度に依存しないピクセルは、160 dpi画面の1つの物理ピクセルに相当します。これは、「中」密度画面のシステムで想定されるベースライン密度です。実行時に、システムは、使用中の画面の実際の密度に基づいて、必要に応じてdp単位のスケーリングを透過的に処理します。dp単位から画面ピクセルへの変換は簡単です:px = dp *(dpi / 160)。たとえば、240 dpiの画面では、1dpは1.5物理ピクセルに相当します。アプリケーションのUIを定義するときは、密度の異なる画面でUIが適切に表示されるように、常にdp単位を使用する必要があります。

詳細については、こちらをご覧ください。

于 2012-03-11T19:45:09.917 に答える
1
/**
 * Convert dp in pixels
 * @param dp
 * @return
 */
public int getPx(int dp){       
    float scale = getResources().getDisplayMetrics().density;
    return((int) (dp * scale + 0.5f));
}
于 2013-01-04T00:45:43.423 に答える