好的,首先我将带您了解我的应用程序的基础知识。到目前为止,您使用相机拍照,然后将其保存到文件夹中。拍摄照片后,将打开一个新的活动,并在ImageView
。
我试图实现的效果是能够使用onClick事件在ImageView
中的图片顶部创建png图层。所以说我有5个透明的png我希望有5个onClick事件,每次触摸屏幕时,新的png图像将显示在ImageView
的图片顶部,因此需要5点onClick(触摸屏幕)显示图片顶部的所有透明png。
我认为我差点使用下面的代码,但我认为我需要在array
文件夹中创建需要与每个onClick事件一起显示的drawable
个图像,我认为数组应为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
?< / p>
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;
}
}
答案 0 :(得分:2)
好的,我已经为你准备了一份可能正在寻找的小样本。
我在这里违反了自己的规则,因为我为你做了代码。由于我知道您是初学者,因此在使用之前应该明确地理解以下代码。
public class Image extends Activity {
Bitmap myBitmap;
Integer[] mBitmapIds = new Integer[] { R.drawable.ic_launcher, R.drawable.ic_launcher };
Random mRand = new Random();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myBitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.ic_launcher);
final ImageView myImage = (ImageView) findViewById(R.id.imageview);
myImage.setImageBitmap(myBitmap);
myImage.setOnClickListener(new OnClickListener() {
int i = 0;
public void onClick(View v) {
if (i >= mBitmapIds.length) {
i = 0;
}
myImage.setImageBitmap(getBitmapOverlay(myBitmap, BitmapFactory.decodeResource(getResources(), mBitmapIds[i]), 0, 0));
}
});
}
public 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);
left += mRand.nextInt(20);
top += mRand.nextInt(20);
canvas.drawBitmap(bmp2, left, top, null);
return bmOverlay;
}
}
答案 1 :(得分:0)
有关Drawables引用数组的示例,请参阅Hello, Views tutorial, GridView chapter。