我想要在双指触摸时旋转的 ImageView ,并在屏幕中的任何位置移动并捏合缩放。我正在开发图像编辑项目。因为我在顶部 ImageView 的框架布局中有两个 ImageView ,我在 ImageView 上指定了一些框架和背面,我指定了从相机或画廊使用中获得的图像。请帮忙。 我试过了,但效果不佳。
imageViewFrames.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
LayoutParams layoutParams = (LayoutParams) imageViewFrames.getLayoutParams();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
int x_cord = (int) event.getRawX();
int y_cord = (int) event.getRawY();
if (x_cord > windowwidth) {
x_cord = windowwidth;
}
if (y_cord > windowheight) {
y_cord = windowheight;
}
layoutParams.leftMargin = x_cord - 25;
layoutParams.topMargin = y_cord - 75;
imageViewFrames.setLayoutParams(layoutParams);
break;
default:
break;
}
return true;
}
});
最佳答案
这对我有用:
class EraseView extends View{
// java made easy,java
private Bitmap mBitmap;
private Canvas mCanvas;
private Path mPath;
private Paint mPaint;
private Bitmap bitmap;
Canvas pcanvas;
int x = 0;
int y =0;
int r =0;
public EraseView(Context context,Bitmap bm) {
super(context);
Log.v("Panel", ">>>>>>");
setFocusable(true);
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setXfermode(new PorterDuffXfermode(Mode.SRC_OUT));
mPaint.setColor(Color.TRANSPARENT);
mPaint.setMaskFilter(new BlurMaskFilter(10, Blur.NORMAL));
bitmap = bm.createBitmap(bm.getWidth(), bm.getHeight(), Config.ARGB_8888);
pcanvas = new Canvas();
pcanvas.setBitmap(bitmap); // drawXY will result on that Bitmap
pcanvas.drawBitmap(bm, 0, 0, null);
}
@Override
protected void onDraw(Canvas canvas) {
// draw a circle that is erasing bitmap
pcanvas.drawCircle(x, y, r, mPaint);
canvas.drawBitmap(bitmap, 0, 0,null);
super.onDraw(canvas);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// set parameter to draw circle on touch event
x = (int) event.getX();
y = (int) event.getY();
r =20;
// At last invalidate canvas
invalidate();
return true;
}
}
关于android - 在手指手势屏幕上的任何位置移动旋转的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26986865/