好吧,我將首先介紹我的應用程序的基礎知識。到目前爲止,您使用相機拍攝照片,然後將其保存到文件夾中。照片拍完後,一個新的活動打開並在屏幕上顯示ImageView
。可繪製圖像數組
我想要達到的效果是沿着能夠使用onClick事件在ImageView
中的圖片頂部創建png圖層的行。所以說我有5個透明PNG的,我想要有5個onClick事件,每次觸摸屏幕時,新的PNG圖像將顯示在ImageView
的圖片頂部,因此需要5個onClick(觸摸屏幕)來顯示所有的透明PNG在圖片的頂部。
我覺得我幾乎沒有與下面的代碼,但我想我需要建立在drawable
文件夾需要與每個onClick事件來顯示圖像的array
,我覺得數組應該是nextBitmap
但不當然。
更新Sparkys回答
我曾嘗試加入private Integer[] nextBitmap = { R.drawable.img1, R.drawable.img2 };
但我得到的錯誤The method getBitmapOverlay(Bitmap, Bitmap, int, int) in the type BeatEmUp is not applicable for the arguments (Bitmap, Integer[], int, int)
誰知道這可能是我需要添加private Integer[]......
的onCreate
方法之外?
public class Image extends Activity {
Bitmap myBitmap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.Image);
String myRef = this.getIntent().getStringExtra("filepath");
File imgFile = new File(myRef);
Log.e("No ref", myRef);
if(imgFile.exists()) {
final Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
final ImageView myImage = (ImageView) findViewById(R.id.beatemup);
myImage.setImageBitmap(myBitmap);
myImage.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
myBitmap = getBitmapOverlay(myBitmap, nextBitmap, 0, 0);
myImage.setImageBitmap(myBitmap);
}
});
}
}
public static Bitmap getBitmapOverlay(Bitmap bmp1, Bitmap bmp2, int left, int top) {
Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(), bmp1.getConfig());
Canvas canvas = new Canvas(bmOverlay);
canvas.drawBitmap(bmp1, 0, 0, null);
canvas.drawBitmap(bmp2, left, top, null);
return bmOverlay;
}
}
如果用戶必須在5個圖像顯示前點擊5次,我不會將它們全部加載到數組中,因爲用戶可能不會點擊5次。這將浪費內存和電池電量。每次用戶點擊時我都會加載它們。 – 2012-01-05 09:58:37
好酷,不知道該怎麼做。 – Matt 2012-01-05 10:03:11