mee*_*eee 37 android imageview android-bitmap
setImageBitmap和之间有什么区别setImageDrawable?
我有一个图像,我想从文件动态设置.我遵循的教程说将我转换Bitmap为a BitmapDrawable然后使用它进行设置setImageDrawable.我注意到Bitmap直接设置setImageBitmap也有效,但我没有发现任何差异.
Bitmap image = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
BitmapDrawable bitmapDrawable = new BitmapDrawable(image);
imageView.setImageDrawable(bitmapDrawable);
Run Code Online (Sandbox Code Playgroud)
要么
Bitmap image = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
imageView.setImageBitmap(image);
Run Code Online (Sandbox Code Playgroud)
nan*_*esh 76
内部setImageBitmap调用两者没有区别setImageDrawable.
下面的代码是从AOSP的ImageView.java中选取的
public void setImageBitmap(Bitmap bm) {
// if this is used frequently, may handle bitmaps explicitly
// to reduce the intermediate drawable object
setImageDrawable(new BitmapDrawable(mContext.getResources(), bm));
}
Run Code Online (Sandbox Code Playgroud)
Fen*_*res 17
实际上,如果你有时候null用作参数,你可能会看到差异:
imageView.setImageDrawable(null);
Drawable d = imageView.getDrawable(); // d == null
imageView.setImageBitmap(null);
Drawable d = imageView.getDrawable(); // d == some BitmapDrawable, != null
Run Code Online (Sandbox Code Playgroud)
因此,如果您正在检查是否存在可绘制的内容ImageView,请注意它.
pie*_*fou 11
我刚刚为此写了一篇文章.希望能够回答你的问题.
https://plus.google.com/112740367348600290235/posts/VNAfFLDcKrw
ImageView有4个API来指定图像.哪一个使用?有什么不同?
ImageView,名称,用于显示图像.但是什么是图像?A Bitmap是一个图像,不难理解,我们setImageBitmap用于此目的.但是,在内部,ImageView有一个Drawable但不是一个Bitmap,那就是setImageDrawable为了什么.在setImageBitmap内部调用时,首先将位图包装到BitmapDrawableIS-A Drawable,然后调用setImageDrawable.
这是代码.
public void setImageBitmap(Bitmap bm) {
setImageDrawable(new BitmapDrawable(mContext.getResources(), bm));
}
Run Code Online (Sandbox Code Playgroud)
那么,3和4 API怎么样?
您应该已经知道这是创建位图的一系列方法:来自文件路径,来自输入流,来自Uri或来自资源文件.
BitmapFactory.decodeFile(String pathName)
BitmapFactory.decodeStream(Inputstream)
BitmapFactory.decodeResource(Resource res, int id)
BitmapFactory.decodeByteArray(byte[] data)
Run Code Online (Sandbox Code Playgroud)
意识到这一点,很容易理解setImageResource/ setImageUri同样如此setImageBitmap.
总而言之,setImageDrawable是其他API所依赖的原始功能.其他3个只是帮助方法,使您编写更少的代码.
另外,要记住ImageView实际上有一个非常重要Drawable,不一定是一个BitmapDrawable!您可以将任何设置设置Drawable为图像视图.
除了设置了Drawable通过Java API,你也可以使用XML属性设置源Drawable的ImageView.见下面的例子.请注意,形状可以是图像文件(.png,.jpg,.bmp)或xml文件.
| 归档时间: |
|
| 查看次数: |
60499 次 |
| 最近记录: |