Android在画布中创建层

Android在画布中创建层,android,paint,android-canvas,layer,Android,Paint,Android Canvas,Layer,我想学习如何在android应用程序中创建层(如photoshop)。我想实现一个基本的目标:当我在画布中添加一个图像时,比如某个图形,我希望能够绘制画布,但绘制不能影响图形的线条。然后我需要将该图像保存在Sd卡上 有什么建议/建议/例子吗?我可以使用什么来实现这一点?绘制图层的顺序。 创建一些绘制的对象堆栈,然后修改单个对象(在层中绘制)或在此堆栈中移动它们(更改层)。 使用相同的顺序创建要保存的图像。查看可应用于绘制的各种XfermodesPorterDuff.Mode提供了一些类似于Pho

我想学习如何在android应用程序中创建层(如photoshop)。我想实现一个基本的目标:当我在画布中添加一个图像时,比如某个图形,我希望能够绘制画布,但绘制不能影响图形的线条。然后我需要将该图像保存在Sd卡上


有什么建议/建议/例子吗?我可以使用什么来实现这一点?

绘制图层的顺序。 创建一些绘制的对象堆栈,然后修改单个对象(在层中绘制)或在此堆栈中移动它们(更改层)。
使用相同的顺序创建要保存的图像。

查看可应用于
绘制的各种
Xfermode
s
PorterDuff.Mode
提供了一些类似于Photoshop的选项,如屏幕和倍增、加亮和加暗。
AvoidXferMode
可能更适合您的需要。

您可以在框架布局中组合层。您可能需要一些技巧来确保触摸事件传递到正确的层

一旦android按照自己喜欢的方式组合视图,就可以使用mFrameLayout.onDraw(Canvas c)将整个视图绘制到画布上

本文提供了一些有关如何将viewgroup转换为jpeg格式的信息 画布中的层

    Bitmap bitmap=Bitmap.createBitmap(500,500, Bitmap.Config.ARGB_8888);
    Canvas canvas=new Canvas(bitmap);
    Paint paint_outer=new Paint();
    paint_outer.setColor(Color.parseColor("#DEB887"));
    paint_outer.setStrokeWidth(140);
    paint_outer.setStyle(Paint.Style.STROKE);
    canvas.drawCircle(250,250,150,paint_outer);

    Paint paint_inner=new Paint();
    ComposePathEffect pathEffect=new ComposePathEffect(new CornerPathEffect(40),new DiscretePathEffect(60f,25f));
    paint_inner.setPathEffect(pathEffect);
    paint_inner.setColor(Color.parseColor("#8B4513"));
    paint_inner.setStrokeWidth(90);
    paint_inner.setStyle(Paint.Style.STROKE);
    canvas.drawCircle(250,250,150,paint_inner);
    iv.setImageBitmap(bitmap);

您是否查看过PorterDuff.Mode
?我假设你的图层是静态的,一旦画出来就不能移除或移动。这是正确的还是你想要像Photoshop一样的图层?是的,我想在Photoshop中创建类似的图层。这样它们可以被添加、删除和移动?不,我唯一想做的就是添加用户在第一个布局上绘制的路径…以及第二个布局上的图像..这样第二个带有图像的布局可以位于第一个布局的顶部。绘制路径时,不要与添加的图像交叉。我不想移动或删除它们。将只有两层:路径和图像。因此,您希望路径通过图像可见吗?