8

嗨朋友们,我正在创建一个应用程序,我在其中放置了两个视图。第一个是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

我想如果我们在位图上绘制它就可以实现我的目标,但我的问题是调整位图大小并提供不同缩放级别的位图滚动

4

2 回答 2

1

关于 SO 的类似问题:

可以在 Honeycomb (API lvl 11) 上完成,但之前不正确。

于 2011-04-07T08:29:32.637 回答
0

我不认为可以缩放普通视图。您可以捕获触摸事件并相应地缩放视图小部件。

于 2011-04-07T08:25:50.923 回答