android - 在手指手势屏幕上的任何位置移动旋转的图像

标签 android imageview

我想要在双指触摸时旋转的 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/

相关文章:

android - 在 v23 上找不到 Symbol Manifest.permission.WRITE_EXTERNAL_STORAGE

Android 主题 : Define colors/gradients in "baseTheme.xml", 在控件中使用,在 "subThemeX.xml"中覆盖

android - 解析文件查询不起作用

java - 隐写术尝试,为什么我的照片没有任何反应?

android 在显示来自 url 的图像时出错

android - 通过 adb 或 monkeyrunner 添加联系人

Android:更改 src alpha 并保留背景(将 src 与颜色混合)

java - Android、Eclipse 和 SVN - 源文件夹命名如何影响传输?

iphone - 从 ImageView 获取图像?

android - 如何使用 ImageView 显示全尺寸图像?