我有一个ImageView,显示从相机中拍摄的照片。我想要创建的效果是我希望使用OnTouchEvent在ImageView上显示图像。所以说我有五张图片我希望它有五个OnTouchEvent,并且对于屏幕上的每次触摸,新图像将出现在之前显示的图像的顶部(它们是透明的png)。
我已经看过这个问题Adding an Image to a Canvas in Android,但无法理解它。
所以基本上我想要它所以当您在ImageView
中查看带有图像的活动时,您可以触摸屏幕,然后在ImageView
的图片顶部添加一个png等等6或7张图像。每个都添加了sepertaly所以它需要6次触摸屏幕才能在Imageview
更新感谢格雷姆
下面的代码已更新我只是在nextBitmap
上收到错误nextBitmap cannot be resolved
我认为这是因为我需要将其设置为某个位置来处理将添加的图像,例如make一个数组?
更新2
我现在知道我需要一些如何添加一个字符串nextBitmap
和图像,以便在触摸屏幕时它会循环抛出它们,任何人都有任何想法?
public class BeatEmUp extends Activity {
Bitmap myBitmap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.beatemup);
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 :(得分:4)
来自@ Gabi的回答:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.beatemup);
String myRef = this.getIntent().getStringExtra("filepath");
File imgFile = new File(myRef);
Log.e("No ref", myRef);
if(imgFile.exists()) {
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
ImageView myImage = (ImageView) findViewById(R.id.beatemup);
myImage.setImageBitmap(myBitmap);
myImage.setOnClickListener(new OnClickListener() {
@Override
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;
}
您需要自己初始化nextBitmap
(并在点击图片后对其进行更改)。
答案 1 :(得分:2)
假设bmp1是主位图,请使用:
public static Bitmap bitmapOverlay(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;
}