2017-07-24 101 views
0

我正在使用動畫顯示/隱藏我的按鈕。我這樣做,但我有一個嚴重的問題。如何使用動畫添加顯示/隱藏多個按鈕

當我隱藏第一個按鈕,然後我隱藏第二個按鈕,我可以看到第一個按鈕顯示然後隱藏這麼快。我嘗試了一切。

顯示按鈕:

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

請通知我,如果我的解決方案工作與否。 –

回答

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

我只是做了:)你應得的比這更多!再次感謝! –