在我的 android 应用程序中,我遇到了一个问题,似乎没有什么对我有用。我在相对布局内的另一个 ImageView 顶部有一个 ImageView。现在,当用户触摸其中一个角并拖动时,我需要在顶部调整图像视图的大小。就像我们通常看到的裁剪框一样。当我们拖动任何一个角时,对角对角必须保持固定,并且必须在被拖动的角上调整大小。我正在做的是设置 OnTouchListener 并在 Action.MOVE 上获取新的/拖动的坐标,然后我尝试使用 Bitmap 的 createScaledBitmap 调整大小。这确实会调整图像视图的大小,但不会调整被拖动的角落。我完全糊涂了。我如何使用坐标来绘制图像视图,就像我们在使用 Canvas 绘制矩形时所做的那样。请帮忙。
问问题
1087 次
1 回答
0
我不会在 ImageView 中这样做。我会继承 View 并覆盖 onTouchEvent 和 onDraw 来处理输入并绘制所有各种组件。您必须将其分解为它的组件并在此视图中管理许多对象。
您有一个 Rect 表示裁剪区域的大小。这可能默认为控件的大小。在 onTouchEvent 中,您需要测试每个角周围的区域,然后跟踪哪个角被拖动以适当调整 Rect 的大小。
您不必每次绘制它时都调用 createScaledBitmap ,而且您可能不应该因为此时您正在与 OutOfMemoryException 调情(清理您的位图太慢,您会很难发现这是什么) . 只需在创建控件时解码位图并使用目标 Rect 将其绘制到画布上。
很多代码要写,但听起来是个有趣的项目。没有简单的方法可以放入这样的控件(如果我理解正确的话)。您必须在自定义视图中管理触摸、拖动和目标矩形。
于 2012-05-08T15:17:22.193 回答