如何使用动画添加显示/隐藏多个按钮

问题描述:

我正在使用动画显示/隐藏我的按钮。我这样做,但我有一个严重的问题。如何使用动画添加显示/隐藏多个按钮

当我隐藏第一个按钮,然后我隐藏第二个按钮,我可以看到第一个按钮显示然后隐藏这么快。我尝试了一切。

显示按钮:

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true"><scale 
android:duration="450" 
android:fromXScale="0.0" 
android:fromYScale="0.0" 
android:toXScale="1.0" 
android:toYScale="1.0" 
android:pivotX="50%" 
android:pivotY="50%" 
/></set> 

隐藏按钮:

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true"><scale 
    android:duration="300" 
    android:fromXScale="1.0" 
    android:fromYScale="1.0" 
    android:toXScale="0.0" 
    android:toYScale="0.0" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    /></set> 

的Java:

public class MainActivity extends AppCompatActivity { 

Button btn1,btn2,btn3; 
Animation show , hide; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    btn1 = (Button)findViewById(R.id.btn1); 
    btn2 = (Button)findViewById(R.id.btn2); 
    btn3 = (Button)findViewById(R.id.btn3); 

    show = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.Show); 
    hide = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.Hide); 
} 

public void setBtn1(View v) { 
    btn1.startAnimation(hide); 
    btn1.setClickable(false); 
} 

public void setBtn2(View v) { 
    btn2.startAnimation(hide); 
    btn2.setClickable(false); 
} 

public void setBtn3(View v) { 
    btn3.startAnimation(hide); 
    btn3.setClickable(false); 
} 

这里是activity_main.xml中:

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".MainActivity" > 

<Button 
    android:id="@+id/btn1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentRight="true" 
    android:onClick="setBtn1" 
    android:text="1" 
    tools:layout_constraintBottom_creator="1" 
    app:layout_constraintBottom_toTopOf="@+id/btn3" 
    android:layout_marginStart="3dp" 
    tools:layout_constraintLeft_creator="1" 
    android:layout_marginBottom="65dp" 
    app:layout_constraintLeft_toRightOf="@+id/btn2" 
    android:layout_marginLeft="3dp" /> 

<Button 
    android:id="@+id/btn2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:onClick="setBtn2" 
    android:text="2" 
    android:layout_marginStart="57dp" 
    app:layout_constraintBaseline_toBaselineOf="@+id/btn3" 
    tools:layout_constraintBaseline_creator="1" 
    tools:layout_constraintLeft_creator="1" 
    app:layout_constraintLeft_toLeftOf="parent" 
    android:layout_marginLeft="57dp" /> 

<Button 
    android:id="@+id/btn3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:onClick="setBtn3" 
    android:text="3" 
    tools:layout_constraintRight_creator="1" 
    tools:layout_constraintBottom_creator="1" 
    app:layout_constraintBottom_toBottomOf="parent" 
    android:layout_marginEnd="71dp" 
    app:layout_constraintRight_toRightOf="parent" 
    android:layout_marginBottom="191dp" 
    android:layout_marginRight="71dp" /> 
</android.support.constraint.ConstraintLayout> 
+0

请添加activity_main.xml中的文件来回答。 –

+0

我刚更新了我的帖子,请查看 –

+0

请通知我,如果我的解决方案工作与否。 –

您需要从您的Hide.xml和Show.xml文件中删除android:fillAfter="true"。 并请重命名这些文件,以hide.xml和show.xml,(这是Java代码convetion)

,用我MainActivity.java实施

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.view.animation.Animation; 
import android.view.animation.AnimationUtils; 
import android.widget.Button; 

public class MainActivity extends AppCompatActivity { 

Button btn1, btn2, btn3; 

Animation show, hide; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    btn1 = (Button) findViewById(R.id.btn1); 
    btn2 = (Button) findViewById(R.id.btn2); 
    btn3 = (Button) findViewById(R.id.btn3); 

    btn1.setOnClickListener(new View.OnClickListener() { 
     @Override public void onClick(final View v) { 
      setBtn1(); 
     } 
    }); 

    btn2.setOnClickListener(new View.OnClickListener() { 
     @Override public void onClick(final View v) { 
      setBtn2(); 
     } 
    }); 

    btn3.setOnClickListener(new View.OnClickListener() { 
     @Override public void onClick(final View v) { 
      setBtn3(); 
     } 
    }); 

    show = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.show); 
    hide = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.hide); 
} 

public void setBtn1() { 
    btn1.startAnimation(hide); 
    btn1.setClickable(false); 
    btn1.setVisibility(View.GONE); 
} 

public void setBtn2() { 
    btn2.startAnimation(hide); 
    btn2.setClickable(false); 
    btn2.setVisibility(View.GONE); 
} 

public void setBtn3() { 
    btn3.startAnimation(hide); 
    btn3.setClickable(false); 
    btn3.setVisibility(View.GONE); 
} 
} 
+0

非常感谢你Vova Stelmashchuk!你救了我的*** –

+0

不客气,你可以申请'支票'来回答吗? –

+0

我只是做了:)你应得的比这更多!再次感谢! –