我有相当数量的小幅标尺(100+,大小约40x40),每个图都有一些不透明之处,需要加以描述。
相应图以ARGB格式,888(rgb)加上256个轨道字母频道,如PNG格式。
唯一(工作)的方法是:
- create a bitmap (ARGB_8888)
- fill the bitmap with the raw data
- extract the alpha layer from the bitmap
- create a BitmapShader (RGB_565) based on the original bitmap
绘制利用所创造的梯子的地图
然后用“BitmapShader”号特称画面。
初始化法的实施当然只有一次:
void initializeTile( int t ){
// Allocate the bitmap:
Bitmap original_data = Bitmap.createBitmap( tile_w, tile_h, Bitmap.Config.ARGB_8888);
// Fill with raw data (this is actually native C++ code):
populateBitmap( original_data );
// Get the alpha mask:
tile_mask[ t ] = original_data.extractAlpha();
// Create the bitmap shader:
tile_data = original_data.copy( Bitmap.Config.RGB_565, false);
// Create the shader:
BitmapShader shader = new BitmapShader(tile_data, CLAMP, CLAMP);
// Create the paint:
tile_paint[ t ] = new Paint();
tile_paint[ t ].setDither(true);
tile_paint[ t ].setAntiAlias(true);
tile_paint[ t ].setFilterBitmap(true);
tile_paint[ t ].setShader( shader );
}
油漆法是最简单的,它主要指向:
void paintTile(t){
canvas.drawBitmap( tile_mask[ t ], tile_x[ t], tile_y[ t], tile_paint[ t] );
}
现在,在像Ideos(Android 2.2)这样的电话中,它运行顺利、优质,但在像上台的三星银河SII(Android 2.3)这样的其他电话中,它令人不安和缓慢。 这对我来说没有意义。
因此,你认为这种做法是什么? 是否有更好、更快的方式实现同样的结果?
而且,为什么你们认为它如此缓慢地掌握现代、快速的硬件? 是否有任何改进方法?