これだけのために記事を書きました。あなたの質問に答えられることを望みます。
https://plus.google.com/112740367348600290235/posts/VNAfFLDcKrw
ImageView画像を指定するための 4 つの API があります。どちらを使用しますか?違いはなんですか?
- setImageDrawable(ドローアブル ドローアブル)
- setImageBitmap(ビットマップ bm)
- setImageResource(int resId)
- setImageURI(URI uri)
ImageViewという名前で、画像を表示するために使用されます。しかし、イメージとは何ですか?ABitmapはイメージであり、理解するのが難しくなくsetImageBitmap、その目的のために使用します。ただし、内部的には、ImageViewhas-aDrawableではなく、BitmapそれがsetImageDrawable目的です。内部でを呼び出すと、最初にビットマップがIS-AsetImageBitmapにラップされ、次に が呼び出されます。BitmapDrawableDrawablesetImageDrawable
これがコードです。
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 を介して を設定する以外に、DrawableXML 属性を使用して のソースを設定することもできDrawableますImageView。以下の例を参照してください。形状は、画像ファイル (.png、.jpg、.bmp) または xml ファイルのいずれかであることに注意してください。