0

我目前的实现如下,它工作正常。在这里,我在 RelativeLayout 中使用了 2 个 TextView。

adapterHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        if (isLogin) {
                            mHolder.mUser.setVisibility(View.VISIBLE);
                            mHolder.mUser.animate().alpha(1f)
                                    .setDuration(500)
                                    .setListener(null);
                            mHolder.mDate.animate()
                                    .alpha(0.0f)
                                    .setDuration(500)
                                    .setListener(new AnimatorListenerAdapter() {
                                        @Override
                                        public void onAnimationEnd(Animator animation) {
                                            super.onAnimationEnd(animation);
                                            mHolder.mDate.setVisibility(View.INVISIBLE);
                                        }
                                    });

                            isLogin = false;
                        } else {
                            mHolder.mDate.setVisibility(View.VISIBLE);
                            mHolder.mDate.animate().alpha(1f)
                                    .setDuration(500)
                                    .setListener(null);
                            mHolder.mUser.animate().alpha(0.0f)
                                    .setDuration(500)
                                    .setListener(new AnimatorListenerAdapter() {
                                        @Override
                                        public void onAnimationEnd(Animator animation) {
                                            super.onAnimationEnd(animation);
                                            mHolder.mUser.setVisibility(View.INVISIBLE);
                                        }
                                    });
                            isLogin = true;
                        }
                    }
                });

这是在相对布局的帮助下完成的。这是用于进行可见性更改的布局部分。

.
<RelativeLayout
                            android:layout_width="wrap_content"
                            android:layout_marginBottom="@dimen/margin_10"
                            android:layout_height="wrap_content">
                            <TextView
                                android:id="@+id/commitUser"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:textSize="@dimen/header_title"
                                android:textStyle="bold"
                                />
                            <TextView
                                android:id="@+id/commitDate"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:textSize="@dimen/header_title"
                                android:textStyle="bold"
                                />
                        </RelativeLayout>
.

但它不是一个流畅的动画。我相信有经验的人会提供更好的解决方案。

4

1 回答 1

0

为此找到的简单解决方案是在 TextView 中使用带有AnimationListener的AlphaAnimation。下面是用于实现此效果的代码示例。

bt_change.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            AlphaAnimation alphaAnimation = new AlphaAnimation(1.0f, 0.0f);
            alphaAnimation.setDuration(200);
            alphaAnimation.setRepeatCount(1);
            alphaAnimation.setRepeatMode(Animation.REVERSE);
            alphaAnimation.setAnimationListener(new Animation.AnimationListener() {
                @Override
                public void onAnimationStart(Animation animation) { }
                @Override
                public void onAnimationEnd(Animation animation) { }
                @Override
                public void onAnimationRepeat(Animation animation) {
                    if (pressed) {
                        my_text.setText("HELLO");
                        pressed = false;
                    } else {
                        my_text.setText("WORLD");
                        pressed = true;
                    }
                }
            });
            my_text.startAnimation(alphaAnimation);
        }
    });

这是我的xml

<Button
    android:id="@+id/changeBtn"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:gravity="center"
    android:text="Button" />

<TextView
    android:id="@+id/my_text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:text="TextView" />

根据用户的建议,还有其他可用的解决方案(TextSwitcher)。请提供有用的链接,因为它可以用于将来的用途。

于 2019-11-19T14:49:56.540 回答