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;
}
}
答案 0 :(得分:3)
将FastBitmapDrawable与Bitmap进行比较并不公平。传统的位图只是Java中的一种Object
。但是,FastBitmapDrawables是一个自定义类,用于扩展Drawable
类的功能,而不是Bitmap
类。
FastBitmapDrawable 包含传统的Bitmap,并做了一些假设,以便在某些情况下使用。这是关键路线:
canvas.drawBitmap(mBitmap, 0.0f, 0.0f, null);
这个FastBitmapDrawable假设位图将放在屏幕上的(0,0),并且不会使用任何特殊的Paint对象来绘制它。
真的只是方便。您可以通过手动将位置设置为(0,0)并将普通Drawable
中的“绘制”设置为空来获得相同的性能,但此类会自动为您执行此操作。
答案 1 :(得分:0)
这是一个实用程序类,以防您想要更改Bitmap
的绘制方式。实际上,它不会添加除默认行为之外的任何功能。