1つの画像の20のコピーからリングを作成しようとしています。これは、リング全体の1/20スライスです。この元の画像を正しい角度に回転させたビットマップを生成します。元の画像は130x130の正方形です
回転したスライスを生成するコードは次のようになります。
Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.battery_green);
FileOutputStream fos;
for(int i = 0; i < 20; i++) {
String idName = "batt_s_"+i;
Matrix m = new Matrix();
m.setRotate((i * 18)-8, bmp.getWidth()/2, bmp.getHeight()/2);
Bitmap newBmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), m, true);
try {
fos = context.openFileOutput(idName+"_"+color+".png", Context.MODE_WORLD_READABLE);
newBmp.compress(CompressFormat.PNG, 100, fos);
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
m.reset();
BattConfigureSmall.saveInitPref(context, true);
}
これらの生成されたビットマップが最終的にすべてにスロットされるImageViewには、XMLにscaleType="center"が含まれています。ただし、生成される出力は次のようになります。
完全なリングではありません。APIレベル11以上では、これらのImageViewでandroid:rotate XML属性を使用しているため、スライス自体は正しく回転すると完全なリングになりますが、APIレベル7〜10もサポートする必要があります。誰か私にアドバイスをくれますか?ありがとうございました。