如何在android中延迟后显示Button文本

时间:2017-11-08 06:50:11

标签: java android xml android-studio android-animation

我想创建新的自定义Button类,无论何时用户转到任何活动,我的通用按钮都要从圆圈扩展到默认宽度。在扩展时我想隐藏按钮文本,直到按钮动画完成。

请检查我的以下代码:

 private void animateMe(Context context){
    final String btnText = this.getText().toString();
    final FIButton fiButton = this;
    fiButton.setText("");

    new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {
            fiButton.setText(btnText);
        }

    },500);


    Animation animation = AnimationUtils.loadAnimation(context,
            R.anim.expand);
    super.startAnimation(animation);
}

2 个答案:

答案 0 :(得分:3)

轻松

ViewCompat.animate(fiButton ).setStartDelay(500).alpha(1).setDuration(700).setInterpolator(new DecelerateInterpolator(1.2f)).start();

请注意,您必须将fiButton alpha设置为零android:alpha="0.0" 在你的xml或创建视图

此行将在500毫秒后在700毫秒内将视图从0设置为1。

答案 1 :(得分:0)

您可以使用AnimationListener。完成动画后,您应该setText上的TextView

private void animateMe(Context context){
    final String btnText = this.getText().toString();
    final FIButton fiButton = this;

    fiButton.setText("");        
    Animation animation = AnimationUtils.loadAnimation(context, R.anim.expand);        
    animation.setAnimationListener(new Animation.AnimationListener() {
        @Override
        public void onAnimationStart(Animation animation) {
            fiButton.setText("");
        }

        @Override
        public void onAnimationEnd(Animation animation) {
            fiButton.setText(btnText);
        }

        @Override
        public void onAnimationRepeat(Animation animation) {

        }
    });
    super.startAnimation(animation);
}