我正在使用FrameLayout在Android中创建一个小型触摸绘图应用程序,我已经包含了三个自定义视图,这些视图是绘制画布的。堆叠中的第一个孩子有白色背景,而顶部的两个孩子是透明的。我设法让绘图和擦除在所有三个层上都正常运行。
好像我只能绘制位于堆栈顶部的子视图,即第3层。使用layerx.bringToFront();
似乎也无法解决我的问题,因为我希望保持图层的正确z顺序。
是否可以画上"第2层"在第1层和第3层之间居中,新路径位于第3层和第1层之上?
(如果我的解释有点不清楚,我道歉。如果需要,我可以提供图片。)
这是我绘制文字的顺序:
我希望每当我回到第2层时,将在第1层的现有路径上以及第3层的现有路径上绘制新路径。这可能吗?
XML代码显示了三个自定义子视图的布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.user.layerpaint.MainActivity">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="450dp"
android:clipChildren="false"
android:id="@+id/frames">
<com.example.user.layerpaint.DrawingView
android:id="@+id/layer3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="3dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="3dp"
android:focusable="true"
android:background="@null"/>
<com.example.user.layerpaint.DrawingView
android:id="@+id/layer2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="3dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="3dp"
android:focusable="true"
android:background="@null"/>
<com.example.user.layerpaint.DrawingView
android:id="@+id/layer1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="3dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="3dp"
android:focusable="true"
android:background="#FFFFFFFF"/>
</FrameLayout>