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和Bitmap是不公平的。传统位图只是Java中的Object
类型。但是,FastBitmapDrawables是为扩展Drawable
类而不是Bitmap
类的功能而编写的自定义类。
FastBitmapDrawable包含传统的位图,并进行一些假设使其在某些情况下可以方便使用。这是关键行:
canvas.drawBitmap(mBitmap, 0.0f, 0.0f, null);
此FastBitmapDrawable假定位图将被放置在屏幕上的(0,0)处,并且不会使用特殊的Paint对象来绘制它。
真的,这只是一个方便。通过在常规
Drawable
中手动将位置设置为(0,0)并将Paint设置为null,可以获得相同的性能,但是此类自动为您完成此操作。关于android - 与Bitmap相比,FastBitmapDrawable有哪些优势?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7555054/