0

这是在单击按钮时闪烁 textview 的代码。

start.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) 
{

    recordShow.setVisibility(View.VISIBLE);
    Animation anim = new AlphaAnimation(0.0f, 1.0f);
    anim.setDuration(1000); //You can manage the time of the blink with this parameter
    anim.setStartOffset(20);
    anim.setRepeatMode(Animation.REVERSE);
    anim.setRepeatCount(Animation.INFINITE);
    recordShow.startAnimation(anim);
}

我必须停止在另一个按钮单击时闪烁...该怎么办..??

4

2 回答 2

3

另一种方法可能是:

1.在 Activity 中全局(在任何方法之外)声明AnimationTextView对象。

private Animation mAnim;
private TextView mRecordShow;

2.设置一个类来设置你的动画属性并启动它。让这个类期望一个TextView小部件作为它的参数。

protected void setBlinkingText(TextView textView) {
    mAnim = new AlphaAnimation(0.0f, 1.0f);
    mAnim.setDuration(1000); // Time of the blink
    mAnim.setStartOffset(20);
    mAnim.setRepeatMode(Animation.REVERSE);
    mAnim.setRepeatCount(Animation.INFINITE);
    textView.startAnimation(mAnim);
}

3.设置另一个类,在给定的文本视图上停止动画。让这个类也期望一个TextView小部件作为它的参数。

protected void removeBlinkingText(TextView textView) {
        textView.clearAnimation();
}

4.现在您可以在任何需要的地方使用您的类,并将其传递给适当的文本视图。

例如

(a)在您onClick()要开始动画的方法中,将所有动画代码替换为:

setBlinkingText(mRecordShow);

(b)无论你想在那个文本视图上停止动画,只要调用:

removeBlinkingText(mRecordShow);
于 2015-01-07T11:30:31.980 回答
0

以下假设您想通过单击相同的按钮来停止闪烁。如果您想使用不同的按钮停止点击,您可以将onClick()下面的 if-else 拆分为单独的点击处理程序。

首先,移到anim外面onClick()并使其成为包含类的字段。您需要anim存储在某个地方,以便以后可以取消它。

Animation anim = new AlphaAnimation(0.0f, 1.0f)
anim.setDuration(1000); //You can manage the time of the blink with this parameter
anim.setStartOffset(20);
anim.setRepeatMode(Animation.REVERSE);
anim.setRepeatCount(Animation.INFINITE);

其次,在包含类中创建一个布尔字段来跟踪TextView当前是否闪烁:

boolean mBlinking = false;

然后:

@Override
public void onClick(View v) 
{
    recordShow.setVisibility(View.VISIBLE);
    if(!mBlinking){
        recordShow.startAnimation(anim);
        mBlinking = true;
    } else{
        recordShow.clearAnimation(anim); // cancel blink animation
        recordShow.setAlpha(1.0f); // restore original alpha
        mBlinking = false;
    }
}
于 2013-10-19T02:38:35.690 回答