如何在视图内的ondraw方法中倾斜画布

时间:2015-03-13 06:08:16

标签: android

在我的OnDraw方法中,我将路径绘制到我的画布中(带有segements的圆圈)。一切都很好,现在我不知道该怎么做才能使它倾斜(围绕一个轴旋转)。

基本上,我想要实现的是谷歌地图的倾斜功能。

这是pseduo代码:

protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

      // I do all the drawing here

   canvas.tilt(45degrees)    <-----??
}

2 个答案:

答案 0 :(得分:2)

我认为您不必在onDraw方法中手动修改画布来创建倾斜效果。而是在整个View上使用setRotationX()方法。您也可以在xml中将其定义为android:rotationX="45"

答案 1 :(得分:0)

Canvas.concat(Matrix)与旋转矩阵一起使用,即:

class MyView {

    private final Matrix rotate = new Matrix();

    public MyView()
    {
        rotate.setRotate(45.0f);
    }

    protected void onDraw(Canvas c)
    {
        super.onDraw(canvas);
        canvas.save(Canvas.MATRIX_SAVE_FLAG);
        canvas.concat(rotate);
        canvas.restore();
    }
}

另请注意,根据android linter,您不应在onDraw()内进行任何内存分配。