停止TextView的闪烁

时间:2013-10-19 02:32:05

标签: android

这是一个按钮点击时闪烁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);
}

我必须停止点击另一个按钮点击......怎么做.. ??

2 个答案:

答案 0 :(得分:3)

另一种方法可能是:

1。在您的活动中全局(在任何方法之外)声明动画 TextView 对象。

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);

答案 1 :(得分: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;
    }
}