2015-07-06 223 views
3

我有兩個button在一個LinearLayout和這個LinearLayout我有兩個按鈕。當我動畫LinearLayout然後工作正常,但當試圖點擊在LinearLayout裏面的按鈕,點擊button不起作用。按鈕點擊不動作後動畫

我已經搜索了很多,但無法擺脫這個問題。

下面的代碼進行動畫LinearLayout

an = new RotateAnimation(angleRightHead, getRotateAngleRightEdgehead(), Animation.RELATIVE_TO_SELF, 1, Animation.RELATIVE_TO_SELF, 0.33f); 
an.setRepeatMode(Animation.REVERSE); 
an.setDuration(1000);    
an.setRepeatCount(0);     
an.setFillAfter(true); 
an.setFillEnabled(true); 
head_neck_ll.startAnimation(an); 

這個代碼XML

<LinearLayout 
    android:id="@+id/head_neck_idll" 
    android:layout_width="wrap_content" 
    android:layout_height="100dp" 
    android:gravity="center" 
    android:orientation="horizontal" >  

    <Button 
     android:id="@+id/head" 
     android:layout_width="70dp" 
     android:layout_height="20dp" 
     android:background="@drawable/roundcorner" 
     android:clickable="true" 
     android:onClick="clickhander" /> 
    <!-- </RelativeLayout> --> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="50dp" 
     android:orientation="vertical" > 

     <RelativeLayout 
      android:layout_width="wrap_content" 
      android:padding="3dp" 
      android:layout_height="16dp" > 

      <Button 
       android:id="@+id/lumber" 
       android:layout_width="49dp" 
       android:layout_marginLeft="3dp" 
       android:layout_height="wrap_content" 
       android:layout_alignParentTop="true" 
       android:layout_centerVertical="true" 
       android:layout_marginBottom="-10dp" 
       android:background="@drawable/roundcorner" 
       android:clickable="true" 
       android:onClick="clickhander" /> 

     </RelativeLayout> 

     <Button 
      android:id="@+id/backupper" 
      android:layout_width="80dp" 
      android:layout_height="20dp" 
      android:background="@drawable/roundcorner" 
      android:clickable="true" 
      android:onClick="clickhander" /> 
    </LinearLayout> 

</LinearLayout> 

和代碼爲onClickListener

public void clickhander(View v){ 
    if(v.getId() == R.id.head){ 
     textv = head; 
     v1right = mapRight.get(head); 
     v1right = mapLeft.get(head); 

     head.setBackgroundResource(R.drawable.clickroundcorner); 
     lumber.setBackgroundResource(R.drawable.roundcorner); 
     backupper.setBackgroundResource(R.drawable.roundcorner); 
     backlower.setBackgroundResource(R.drawable.roundcorner);  
     legside.setBackgroundResource(R.drawable.roundcorner); 
     angle =0; 
    } else if(v.getId() == R.id.backupper){ 
     textv = backupper; 
     v1right = mapRight.get(backupper); 
     v1right = mapLeft.get(backupper); 

     backupper.setBackgroundResource(R.drawable.clickroundcorner); 
     head.setBackgroundResource(R.drawable.roundcorner); 
     lumber.setBackgroundResource(R.drawable.roundcorner); 
     backlower.setBackgroundResource(R.drawable.roundcorner); 
     legside.setBackgroundResource(R.drawable.roundcorner); 
     angle =0; 
    } 
} 

檢查圖像:

Myrequirement

注意:1和2兩者的佈局相同。我想要每個點擊監聽器與layout animation

您的幫助,將不勝感激。

+3

你能展示'clickhander'的代碼嗎? – eduyayo

+0

檢查更新一.. .. @ eduyayo –

+1

請嘗試使用動畫偵聽器完成動畫完成後清除動畫。使用'clearAnimation()'。 –

回答

0

是的,這是正常的行爲。這是因爲動畫只會重新渲染View的像素,但它在顯示屏上的位置保持不變。

如果您想將您的View重新定位到動畫結束的位置,您需要調用View.layout()方法並傳遞這4個參數,這些參數描述了View在其佈局上的新位置。

請記住,View.layout()相對於View的父項獲取參數。