Android 与位图相比,FastBitmapDrawable有哪些优点?
这是一个实用程序类,用于更改位图的绘制方式。实际上,除了默认行为之外,它没有添加任何功能。将FastBitmapDrawable与位图进行比较是不公平的。传统的位图在Java中只是一种Android 与位图相比,FastBitmapDrawable有哪些优点?,android,drawable,Android,Drawable,这是一个实用程序类,用于更改位图的绘制方式。实际上,除了默认行为之外,它没有添加任何功能。将FastBitmapDrawable与位图进行比较是不公平的。传统的位图在Java中只是一种对象。然而,FastBitmapDrawables是一个定制类,它是为了扩展Drawable类的功能而编写的,而不是Bitmap类 FastBitmapDrawable包含一个传统位图,并进行了一些假设,以便于在某些情况下使用。这是关键的一行: package com.android.launcher; impo
对象
。然而,FastBitmapDrawables是一个定制类,它是为了扩展Drawable
类的功能而编写的,而不是Bitmap
类
FastBitmapDrawable包含一个传统位图,并进行了一些假设,以便于在某些情况下使用。这是关键的一行:
package com.android.launcher;
import android.graphics.drawable.Drawable;
import android.graphics.PixelFormat;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
class FastBitmapDrawable extends Drawable {
private Bitmap mBitmap;
FastBitmapDrawable(Bitmap b) {
mBitmap = b;
}
@Override
public void draw(Canvas canvas) {
canvas.drawBitmap(mBitmap, 0.0f, 0.0f, null);
}
@Override
public int getOpacity() {
return PixelFormat.TRANSLUCENT;
}
@Override
public void setAlpha(int alpha) {
}
@Override
public void setColorFilter(ColorFilter cf) {
}
@Override
public int getIntrinsicWidth() {
return mBitmap.getWidth();
}
@Override
public int getIntrinsicHeight() {
return mBitmap.getHeight();
}
@Override
public int getMinimumWidth() {
return mBitmap.getWidth();
}
@Override
public int getMinimumHeight() {
return mBitmap.getHeight();
}
public Bitmap getBitmap() {
return mBitmap;
}
}
此FastBitmapDrawable假定位图将放置在屏幕上的(0,0)处,并且不会使用特殊的绘制对象来绘制它
真的,这只是一种方便。通过手动将位置设置为(0,0),并在正常的
可绘制的中将绘制设置为null,可以获得相同的性能,但该类会自动为您执行此操作。为什么称为FastBitmapDrawable?它是快速(简单)代码,绘制速度不会更快。我想这不是一个好名字。也许是因为他们选择这样称呼它?它有助于绘制位图,而无需定义自己的可绘制位图,这就是它速度快的原因,因此…前面我从这个角度比较了imageView.setImageBitmap(位图)代码>imageView.setImageDrawable(fastBitmapDrawable)
通过您对关键行的解释,它确实帮助我理解了FastBitmapDrawable的用法
我认为正确的问题应该是:与BitmapDrawable相比,FastBitmapDrawable有哪些优点?
canvas.drawBitmap(mBitmap, 0.0f, 0.0f, null);