【问题标题】:How to add Show/Hide multiple buttons with animations如何使用动画添加显示/隐藏多个按钮
【发布时间】:2017-12-30 01:48:43
【问题描述】:

我正在使用动画显示/隐藏我的按钮。我这样做了,但我遇到了一个严重的问题。

当我隐藏第一个按钮,然后隐藏第二个按钮时,我可以看到第一个按钮出现然后隐藏得如此之快。我什么都试过了。

显示按钮:

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

【问题讨论】:

  • 请添加您的activity_main.xml文件来回答。
  • 我刚刚更新了我的帖子,请查看
  • 请通知我我的解决方案是否有效。
  • 太棒了!完美运行!

标签: android animation button hide show


【解决方案1】:

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

并使用我的 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);
}  
}

【讨论】:

  • 非常感谢 Vova Stelmashchuk!你救了我的***
  • 我刚刚做到了 :) 你应该得到更多!再次感谢!
  • 一个小问题经过多次测试...如果我快速单击两个按钮,我会看到第一个单击按钮的阴影!我会尝试自己解决这个问题
猜你喜欢
  • 2014-09-02
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
  • 2016-05-14
  • 1970-01-01
  • 1970-01-01
  • 2014-04-08
  • 1970-01-01
相关资源
最近更新 更多