动画后按钮单击不起作用

时间:2015-07-06 08:50:57

标签: android rotation android-animation

我在一个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

点击监听器

我们将不胜感激。

1 个答案:

答案 0 :(得分:-2)

是的,这是正常行为。这是因为动画只是重新渲染View的像素,但它在显示屏上的位置保持不变。

如果您想将View重新定位到动画结束的地方,则需要调用View.layout()方法并传递这4个参数,这些参数描述View的新位置布局。

请记住,View.layout()相对于“查看的父级”获得了参数。