【发布时间】:2023-04-08 06:42:01
【问题描述】:
朋友们好 我正在创建一个应用程序,我在其中放置了两个视图。第一个是imageview,另一个是我的customeview。
我正在我的自定义视图上绘制图像。我的自定义视图代码如下
public class DrawView extends ImageView{
@SuppressWarnings("unused")
private static final String TAG = "DrawView";
Painter painter = new Painter();
PathStack pathStack;
private DrawApplication drawApplication;
public DrawView(Context context, AttributeSet attr) {
super(context,attr);
setFocusable(true);
setFocusableInTouchMode(true);
drawApplication=(DrawApplication)context.getApplicationContext();
pathStack=drawApplication.getPainter().getPathStack();
painter=drawApplication.getPainter();
setScaleType(ScaleType.MATRIX);
}
@Override
public void onDraw(Canvas canvas) {
float scaleFactor=drawApplication.getScaleFactor();
canvas.scale(scaleFactor, scaleFactor,(float)getWidth()/2,(float)getHeight()/2);
List<DrawingPath> currentStack=pathStack.getCurrentStack();
for (DrawingPath drawPath : currentStack) {
drawPath.draw(canvas, painter);
}
}
}
从代码中可以清楚地看到许多事情,例如在 drawapplication 上存储路径等。
现在我们决定为此视图提供缩放和平移功能。并且我的绘图也应该与后面的 imageview 一起相应地缩放。
我也应该能正确画出来。
我尝试了画布缩放,但这是最糟糕的,因为缩放后我无法绘制到触摸点,并且在屏幕上绘制的次数也减少了,导致视图绘制得更多。
在小部件上绘图也是非常冗长的任务,会导致性能下降。 请提供任何方式。
而且我正在使用 api 级别 10。
编辑1
朋友们。我有一个想法。 我必须在不同的缩放级别上绘制路径。因此,如果我们可以计算不同缩放级别的路径比,它将解决我的问题。请提供相应的帮助
编辑2
如果我们能够扩展路径,那么它可以解决我的问题
编辑3
我认为如果我们在位图上绘制它就可以实现我的目标,但我的问题是调整位图大小并提供不同缩放级别的位图滚动
【问题讨论】:
-
对于平移,您可以使用 View 的框架进行滚动。如果您还想要平滑滚动,我已经回答了here(如果您不这样做,您可以在
onDown()中返回true 并省略mScroller/onFling()代码)。对于缩放,我很抱歉,但我只使用ImageView。
标签: android view zooming panning