これだけのために記事を書きました。あなたの質問に答えられることを望みます。
https://plus.google.com/112740367348600290235/posts/VNAfFLDcKrw
ImageView
画像を指定するための 4 つの API があります。どちらを使用しますか?違いはなんですか?
- setImageDrawable(ドローアブル ドローアブル)
- setImageBitmap(ビットマップ bm)
- setImageResource(int resId)
- setImageURI(URI uri)
ImageView
という名前で、画像を表示するために使用されます。しかし、イメージとは何ですか?ABitmap
はイメージであり、理解するのが難しくなくsetImageBitmap
、その目的のために使用します。ただし、内部的には、ImageView
has-aDrawable
ではなく、Bitmap
それがsetImageDrawable
目的です。内部でを呼び出すと、最初にビットマップがIS-AsetImageBitmap
にラップされ、次に が呼び出されます。BitmapDrawable
Drawable
setImageDrawable
これがコードです。
public void setImageBitmap(Bitmap bm) {
setImageDrawable(new BitmapDrawable(mContext.getResources(), bm));
}
では、3 と 4 の API はどうでしょうか。
ファイル パスから、入力ストリームから、Uri から、またはリソース ファイルから、ビットマップを作成するさまざまな方法があることは既にご存じでしょう。
BitmapFactory.decodeFile(String pathName)
BitmapFactory.decodeStream(Inputstream)
BitmapFactory.decodeResource(Resource res, int id)
BitmapFactory.decodeByteArray(byte[] data)
これを意識すると、わかりやすいですsetImageResource
/setImageUri
とまったく同じsetImageBitmap
です。
要約すると、setImageDrawable
他の API が依存しているプリミティブ関数です。残りの 3 つはヘルパー メソッドであり、コードの記述を減らすことができます。
さらに、ImageView
実際には がありDrawable
、必ずしもBitmapDrawable
!であるとは限らないことに注意してください。Drawable
画像ビューにはどれでも設定できます。
Java API を介して を設定する以外に、Drawable
XML 属性を使用して のソースを設定することもできDrawable
ますImageView
。以下の例を参照してください。形状は、画像ファイル (.png、.jpg、.bmp) または xml ファイルのいずれかであることに注意してください。