0

画面密度に基づく Android のボタン用画像リソースの選択は役に立たないことがわかりました。

私は子供向けのアプリを開発しているので、大きくわかりやすいボタンを付けたいと思っていますが、同時に、利用可能な画面の領域に制限する必要があります。

基本的に、密度ではなく、使用している画面サイズに適した画像サイズを使用したいと考えています。

たとえば、横向きモードで画面の横に 5 つのボタンを配置したいとします。私はこのようなことをしたい..

  1. 画面の高さを PIXELS で取得します。
  2. 各ボタン (hButton) の高さを計算し、間にスペースを確保します。
  3. 適切な画像リソースをロードします。つまり、少なくとも hButton ピクセルの最小のものです。
  4. 画像を hButton ピクセルの高さにスケーリングします。

そんな感じ。

Android にはこれを行う良い方法がありますか、それとも自分でコーディングする必要がありますか? 適切な画像にアクセスするにはどうすればよいですか? (私のボタンのほとんどは2つの画像を使用しています - 上と下)

ありがとう

編集:

私の質問では十分に明確ではなかったようです。ボタンのレイアウト方法を知る必要はありません。また、Android が密度に基づいて画像を選択する方法をよく理解しています。それが問題です。

これらの 2 つのデバイスを検討してください -

1/ Galaxy I9000 電話 - 画面サイズ 4 インチ HDPI

2/ Samsung Tab 3 タブレット - 画面サイズ 7 インチ HDPI

どちらも同じ画面密度であるため、同じ物理サイズで画像が表示されます。一方が 1 インチの正方形のアイコンは、もう一方が 1 インチの正方形になります。それが問題だ。ボタンを画面サイズに比例させたい。

サイズ固有のリソース (drawable-small など) を使用することもできますが、異なる密度の小さなデバイス間で問題が発生し、より多くのディレクトリを作成することになり、悪い考えに思えます

私はさまざまなサイズを no-dpi ディレクトリに置き、必要に応じてロードすることに傾いています。

4

3 に答える 3

0
  1. あなたはそれがどのくらいビットであるかをボタンに尋ねることができます

    int hButton = imageButton.getHeight()

  2. 次に、同じ方法でボタンの高さを取得できるため、簡単な学校の数学を使用できます。

    getHeight()/buttonCount+(buttonCount*padding)

  3. 取得した最大の画像をロードし、必要に応じて縮小します。自分でマップしない限り、その大きさがわからないためです。つまり、imageNames とそのサイズが px のマップを含む utils クラスのようなものを構築できるということです。

于 2013-09-19T09:02:44.190 に答える
-1

画面のランタイムの高さと幅を取得する

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

ボタンの高さ

int buttonHeight = hButton.getHeight():

次に、最小のボタンの高さを取得して画像の高さを計算し、画像リソースとして設定します。画像のサイズ変更コードを要求する場合は、ここをチェックしてください。

Bitmap yourBitmap;
Bitmap resized = Bitmap.createScaledBitmap(yourBitmap, newWidth, newHeight, true);
于 2013-09-19T09:19:18.283 に答える