安卓 - 动画第二次不起作用

3

我有一个需要淡入的按钮,但它只有第一次起作用。第二次不起作用。

这是我的代码。

    final TextView doctorInfoView = (TextView) rowView.findViewById(R.id.doctorInfo);
    final TextView specialtyView = (TextView) rowView.findViewById(R.id.specialty);

    final ImageButton deleteDoctor = (ImageButton)rowView.findViewById(R.id.deleteDoctor);
    final Animation fadeInAnimation = AnimationUtils.loadAnimation(context, R.anim.fade_in_animate);
    final ImageButton editDoctor = (ImageButton)rowView.findViewById(R.id.editDoctor);
    final RelativeLayout mainRowLayout = (RelativeLayout)rowView.findViewById(R.id.doctorListInfoView);
    final LinearLayout rowLayout = (LinearLayout)rowView.findViewById(R.id.doctorInfoLayout);
    final LinearLayout editButtonLayout = (LinearLayout)rowView.findViewById(R.id.editButtonLayout);
    final LinearLayout deleteButtonLayout = (LinearLayout)rowView.findViewById(R.id.deleteButtonLayout);
    rowLayout.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            if (isClicked) {
                editDoctor.setAnimation(fadeInAnimation);
                editDoctor.setVisibility(View.VISIBLE);
                deleteDoctor.setAnimation(fadeInAnimation);
                deleteDoctor.setVisibility(View.VISIBLE);
                mainRowLayout.setBackgroundColor(Color.parseColor("#ffffff"));
                doctorInfoView.setTextColor(Color.parseColor("#eeeeee"));
                specialtyView.setTextColor(Color.parseColor("#eeeeee"));
                editButtonLayout.setBackgroundColor(Color.parseColor("#16aea3"));
                deleteButtonLayout.setBackgroundColor(Color.parseColor("#16aea3"));
                isClicked = false;
            } else {
                editDoctor.setVisibility(View.GONE);
                deleteDoctor.setVisibility(View.GONE);
                                                                mainRowLayout.setBackgroundColor(Color.parseColor("#f2f2f4"));
                doctorInfoView.setTextColor(Color.parseColor("#000000"));
                specialtyView.setTextColor(Color.parseColor("#0d9e9f"));
                editButtonLayout.setBackgroundColor(Color.parseColor("#f2f2f4"));
                deleteButtonLayout.setBackgroundColor(Color.parseColor("#f2f2f4"));
                isClicked = true;
            }
        }

    });

这是fade_in_animate.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
     <alpha 
           android:fromAlpha="0.0"
            android:toAlpha="1.0" 
            android:interpolator="@android:anim/accelerate_interpolator" 
            android:duration="500"/>
    </set>

我很感激任何反馈意见。

1个回答

0
解决这个问题的一种方法是将动画设置为null。
editDoctor.setVisibility(View.GONE);
editDoctor.setAnimation(null);

编辑:你忘记将其设置为无限

animation.setRepeatCount(Animation.INFINITE);

这里是 XML

android:repeatCount="-1"
android:repeatMode="repeat"

这里是完整的文档


编辑2:我没有看到您正在设置alpha。我的错。这应该可以!您不需要重复它。这将适用于将动画设置为null的方法。

editDoctor.setVisibility(View.GONE);
editDoctor.setAnimation(null);
editDoctor.setAlpha(.0f);

不行。它的行为相同。它只在第一次工作。我多次点击时它不起作用。 - user826323
不应该重复。所以我修改了你的代码,像这样:android:repeatCount="0"。它是一个按钮。我不想让它闪烁。我只想让它在用户点击背景布局时淡入,并在用户再次点击时消失。第一次点击背景布局时,按钮会淡入,但第二次却突然出现而非淡入。你的代码仍然无法正常工作。不管怎样,还是谢谢。 - user826323

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接