Android 如何从具有不同行为的相互对齐的片段创建视图

Android 如何从具有不同行为的相互对齐的片段创建视图,android,android-layout,animation,view,android-view,Android,Android Layout,Animation,View,Android View,假设我有一张碎裂的动物脸。我有外耳、右耳、左耳、鼻子、老鼠、眼睛。 这部分的每一部分都是独立的组件,所以即使所有部分都集中在一个组件中,鼻子和耳朵的动画也不同,并且不会同时发生。 所以我的问题是,我如何才能将项目集合在一起,所以在将来它将是一个单元,但具有分离的行为?我也不知道如何放置它,耳朵是沿着脸部移动的,没有重叠,也没有中间有一个洞。 有什么想法吗?谢谢 编辑 这是我拥有的图像的一个例子(原件无法共享) 所以在这个图像上,鼻子、眼睛、头发、眉毛都是分离的元素。例如,如果我按下头发,它将启

假设我有一张碎裂的动物脸。我有外耳、右耳、左耳、鼻子、老鼠、眼睛。 这部分的每一部分都是独立的组件,所以即使所有部分都集中在一个组件中,鼻子和耳朵的动画也不同,并且不会同时发生。 所以我的问题是,我如何才能将项目集合在一起,所以在将来它将是一个单元,但具有分离的行为?我也不知道如何放置它,耳朵是沿着脸部移动的,没有重叠,也没有中间有一个洞。 有什么想法吗?谢谢

编辑 这是我拥有的图像的一个例子(原件无法共享)

所以在这个图像上,鼻子、眼睛、头发、眉毛都是分离的元素。例如,如果我按下头发,它将启动一种类型的动画,如果我拖动鼻子(右或左),它将在视频播放器中设置动画并更改音量


我现在最好的想法是将每个组件作为独立视图,然后在布局中尝试以某种方式将其聚集在一起,但我不确定这是否正确和好的想法。

正如您所写的,使用特定的侦听器为每个元素创建独立视图。扩展应该是足够的解决方案-它为您提供所需的接口(例如or),并让您保持解决方案的清晰性

在我看来,这是一项非常愉快的任务,你可以一步一步地解决,一个任务一个任务地解决,一个组件一个组件地解决

至于所有动物部位的容器,则取决于要求。如果在所有情况下,每只动物的眼睛、耳朵、头发等都位于相同或成比例的位置,并且您将动物放置了多次,则值得考虑自定义视图组-可能是这样

很难给出更精确的提示,因为会有很多我提到的次要和主要要求。例如,如果两种不同动物的眼睛图像的大小不相等,我会扩展我的组件(而不是
视图
),这为我们提供了缩放功能


编辑:我不确定这样做是否可行,但我会尝试这样做:

<RelativeLayout ...>

    <!-- LAYER 1: Face - background -->
    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:weightSum="100"
            android:gravity="center">
        <custom.path.FaceBaseComponent
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="60"
                android:src="@drawable/face_drawable"/>
    </LinearLayout>

    <!-- LAYER 1: Ears -->
    <LinearLayout
            android:layout_width="match_parent" 
            android:layout_height="match_parent"
            android:gravity="center">

        <!-- Left ear -->
        <custom.path.EarComponent
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="30"
                android:src="@drawable/left_ear"/>

        <!-- Filler -->
        <View 
                android:layout_width="0dp" 
                android:layout_height="match_parent" 
                android:layout_weight="40"/>

        <!-- Right ear -->
        <custom.path.EarComponent
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="30"
                android:src="@drawable/right_ear"/>

    </LinearLayout>

</RelativeLayout>


这有助于保存每个元素之间的比例。继续尝试合并尽可能多的“层”(也许你可以将耳朵和眼睛放在单个
线性布局中
?)。

你能举个例子吗?我想看看这些组件的形状和它们的排列。每个动物都有相同的固定方式吗?@onka,是的,是的,谢谢。还有,在
RelativeLayout
内对齐,你认为它会根据布局规则自动成形吗?所有元素都有透明背景,我没有尝试过,只是怀疑它会将透明部分作为图像的一部分来处理,所以它们之间会有一个洞。这就是为什么我问了一个例子(最好是两个):)我是否知道规则-什么是调整大小,什么总是在同一个位置等。,我可以提出任何建议。一切都是分开的。我不确定,但也许可以把所有的东西一对一地排成一行,所以我会为每个视图设置
匹配父视图
,然后鼻子将覆盖外部等。这个想法似乎很满,所以需要处理,问题似乎死了:)无论如何谢谢你的回答,我会接受:)所以我添加了我的想法,我希望这至少能激励你:)祝你好运!