私のアプリでは、相対レイアウトの背景として、非常に大きなメッシュの壁紙があります(どの電話/テーブル画面よりも大きい)。だから、Androidでサイズを変更して見栄えを悪くする代わりに、自分でサイズを変更できるのではないかと思っていました。私がやりたいのは、画像と画面の高さが一致するまで、画像のサイズを変更することです(垂直方向と水平方向の両方で、見栄えを良くします)。
ありがとう、すべての助けに感謝します-Lijap
私のアプリでは、相対レイアウトの背景として、非常に大きなメッシュの壁紙があります(どの電話/テーブル画面よりも大きい)。だから、Androidでサイズを変更して見栄えを悪くする代わりに、自分でサイズを変更できるのではないかと思っていました。私がやりたいのは、画像と画面の高さが一致するまで、画像のサイズを変更することです(垂直方向と水平方向の両方で、見栄えを良くします)。
ありがとう、すべての助けに感謝します-Lijap
これに対する解決策は、Googleが非常に多大な努力を払ったことです。
基本的に、ターゲットサイズ/レイアウトごとに異なるサイズを作成する必要があります。
これは、複数の画面をサポートするためのGoogle Dev Guideドキュメントに(私が与えることができるよりもはるかに優れた)広範な説明があります
そのページから:
画面サイズ
画面の対角線として測定された実際の物理サイズ。簡単にするために、Androidはすべての実際の画面サイズを、小、通常、大、特大の4つの一般的なサイズにグループ化します。
画面密度
画面の物理領域内のピクセルの量。通常、dpi(1インチあたりのドット数)と呼ばれます。
たとえば、「低」密度の画面は、「通常」または「高密度」の画面と比較して、特定の物理領域内のピクセルが少なくなります。簡単にするために、Androidはすべての実際の画面密度を、低、中、高、および超高の4つの一般化された密度にグループ化します。
オリエンテーション
ユーザーの視点から見た画面の向き。これは横向きまたは縦向きのいずれかであり、画面のアスペクト比がそれぞれ広いまたは高いことを意味します。デフォルトでは、さまざまなデバイスがさまざまな向きで動作するだけでなく、実行時にユーザーがデバイスを回転させると向きが変わる可能性があることに注意してください。
解像度
画面上の物理ピクセルの総数。複数の画面のサポートを追加する場合、アプリケーションは解像度で直接動作しません。アプリケーションは、一般化されたサイズと密度のグループで指定されているように、画面のサイズと密度のみに関係する必要があります。
密度に依存しないピクセル(dp)
UIレイアウトを定義するときに、密度に依存しない方法でレイアウトの寸法または位置を表現するために使用する必要がある仮想ピクセル単位。密度に依存しないピクセルは、160 dpi画面の1つの物理ピクセルに相当します。これは、「中」密度画面のシステムで想定されるベースライン密度です。実行時に、システムは、使用中の画面の実際の密度に基づいて、必要に応じてdp単位のスケーリングを透過的に処理します。dp単位から画面ピクセルへの変換は簡単です:px = dp *(dpi / 160)。たとえば、240 dpiの画面では、1dpは1.5物理ピクセルに相当します。アプリケーションのUIを定義するときは、密度の異なる画面でUIが適切に表示されるように、常にdp単位を使用する必要があります。
このようにして、ユーザーはデバイスサイズに一致するビットマップを確認します。
ドキュメントを理解するのに助けが必要な場合、またはこれがあなたの質問に適切に答えない場合は、私に知らせてください。
Pheonixblade9の答えは正しいですが、自分でサイズ変更を行うことにした場合は、ImageViewクラスのonSizeChanged()メソッドを実装できる可能性があります。ただし、onSizeChanged()
メソッドはスーパークラスのビューからのものであることに注意してください。
画像が大きすぎる場合(特に、他のどの解像度よりも大きい場合)、OOM(メモリ不足)エラーが発生する可能性があります。
そのような場合、あなたはメモリ効率が良くなければなりません、そしてグーグルはこの問題に関していくつかのチュートリアルを公開しました。
参照:http ://developer.android.com/training/displaying-bitmaps/index.html