2015-05-06 64 views
0

假設我有一個動物臉上的碎片。我有一個外觀,右耳朵,左耳朵,鼻子,老鼠,眼睛。 這部分的每一部分都是獨立的部分,所以即使它們全部合併成一個部分,鼻子的動畫也不同於耳朵,並且不會同時發生。 所以我的問題是我怎樣才能把物品收集在一起,所以將來它會成爲一個單位,但是具有分離的行爲?我也不知道如何放置它,這耳朵是沿着臉部動起來的,沒有疊加,也沒有在它們之間留下一個洞。 有什麼建議嗎?謝謝。如何從不同的行爲彼此對齊的視圖android

編輯 這是我擁有的圖像(原始不能共享)的示例。

enter image description here

所以這個形象作爲例如鼻子,眼睛,頭髮,眉毛是分開的元素。例如,如果我按下頭髮,它將開始一種類型的動畫,如果我拖動鼻子(右或左),它將動畫並更改視頻播放器中的音量。

我現在最好的想法是將每個組件作爲分​​離的視圖,然後在佈局中嘗試以某種方式將它們聚集在一起,但我不確定它是否正確和好主意。

+0

你能舉出任何圖像爲例嗎?我希望看到這些組件的形狀及其排列。每個動物都有相同的方式嗎? –

+0

@onka,是的,沒有,謝謝。 – Yurets

回答

2

與您所寫的完全相同,爲具有特定偵聽器的每個元素製作分隔視圖。擴展View應該是足夠的解決方案 - 它爲您提供所需的接口(例如OnDragListenerOnClickListener),並讓您保持清晰的解決方案。

這似乎對我來說,真的很令人愉快的任務,你可以解決一步一步,通過TAKS任務,通過色差分量......

至於容器所有動物的部分,這取決於需求。如果在所有情況下,眼睛,耳朵,頭髮等都會在相同或比例的位置對於每個動物您將該動物多於一次,那麼值得考慮自定義ViewGroup - 可能是RelativeLayout

很難給你更精確的提示,因爲像我提到的那樣會有很多次要和主要的要求。例如,如果兩隻不同動物的眼睛圖像的大小不相等,我會將我的組件(而不是View)擴展爲ImageView,這使我們具有縮放功能。


編輯:我不知道這將有可能完成它以這種方式,但我會嘗試做這樣的:

<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> 

這可以幫助您節省之間的比例每個元素。繼續嘗試合併儘可能多的「圖層」(也許你可以把耳朵和眼睛放入單個的LinearLayout?)。

+0

和爲了對齊'RelativeLayout'你認爲它會自動形成佈局規則?所有的元素都有透明的背景,我沒有嘗試,但只是懷疑它會將透明部分作爲圖像的一部分來處理,所以它們之間會有一個洞。 – Yurets

+0

這就是爲什麼我要求一個例子(最好是其中兩個):)如果我想知道規則 - 什麼是調整大小,什麼總是相同的位置等,我將能夠提出任何建議。 –

+0

有一切分開。我不確定,但也許有可能將所有內容放在一行中,所以我會爲每個視圖設置「match_parent」,然後鼻子會覆蓋外部等。這個想法看起來很完整,所以需要處理它,問題似乎已經死了:)不管怎麼說謝謝你的回答,我會接受它:) – Yurets