Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:缩放ImageView和it';s onDraw()项_Android_View_Zooming_Scale_Pinch - Fatal编程技术网

Android:缩放ImageView和it';s onDraw()项

Android:缩放ImageView和it';s onDraw()项,android,view,zooming,scale,pinch,Android,View,Zooming,Scale,Pinch,总之,我扩展了ImageView,以便在图像上实现收缩和缩放缩放。这是通过修改矩阵并将其应用于图像来实现的。现在,我还将覆盖onDraw()以绘制基本体(即矩形和圆)。我已经将矩阵应用到画布上,它似乎已经正确地处理了缩放,但唯一的问题是,在绘制的项目上,该位置处于关闭状态。如何转换绘制项目的位置以反映新的比例?有一种没有矩阵的方法,您可以直接在onDraw方法中实现收缩和缩放。查看此博客帖子: 谢谢,这真的很有效。但是,一旦转换和/或缩放完成,捕捉基本体接触的触摸代码就不再有效。有没有办法转换o

总之,我扩展了ImageView,以便在图像上实现收缩和缩放缩放。这是通过修改矩阵并将其应用于图像来实现的。现在,我还将覆盖onDraw()以绘制基本体(即矩形和圆)。我已经将矩阵应用到画布上,它似乎已经正确地处理了缩放,但唯一的问题是,在绘制的项目上,该位置处于关闭状态。如何转换绘制项目的位置以反映新的比例?

有一种没有矩阵的方法,您可以直接在onDraw方法中实现收缩和缩放。查看此博客帖子:


谢谢,这真的很有效。但是,一旦转换和/或缩放完成,捕捉基本体接触的触摸代码就不再有效。有没有办法转换onTouch(MotionEvent)的值以匹配画布上当前的位置?在转换后,您必须计算对象的位置。我可以通过用偏移量减去触摸事件的位置来转换位置,但有没有关于分解比例的想法?我使用了如下方法:(x-lastMoveX)*(1/(mScaleFactor))和y相同。但此计算没有缩放轴。如果您有带轴的方程式,请让我知道…请检查缩放后的偏移量
  @Override
public void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    canvas.save();
    canvas.translate(mPosX, mPosY);
    mIcon.draw(canvas);
    canvas.restore();
}