2014-01-06 80 views
1

如果接受true,我有启动闪烁视图线程的函数,但如果接收到false,我该如何停止它?停止视图闪烁线程

private void blinkText(boolean b){ 

    final Handler handler = new Handler(); 

    if(b) 
    { 
     new Thread(new Runnable() { 
      @Override 
      public void run() { 
      int timeToBlink = 1000; //in ms 
      try{ 
       Thread.sleep(timeToBlink); 
      }catch (Exception e) { 

      } 
      handler.post(new Runnable() { 
       @Override 
        public void run() { 
        TextView txt = (TextView) findViewById(R.id.tv); 
        if(txt.getVisibility() == View.VISIBLE){ 
         txt.setVisibility(View.INVISIBLE); 
        }else{ 
         txt.setVisibility(View.VISIBLE); 
        } 
        blinkText(true); 
       } 
       }); 
      }}).start(); 
    } 

    else 
    { 
     // stop blinking 
    } 

}

+1

为什么不使用Android动画呢? –

回答

2

可以定义在xml中闪烁动画并在初始化后将其添加到您的textview中:

res/anim/blink.xml

<?xml version="1.0" encoding="utf-8"?> 
<alpha 
    android:fromAlpha="0" 
    android:toAlpha="1" 
    android:duration="200" 
    android:repeatMode="reverse" 
    android:repeatCount="infinite" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

</alpha> 

添加动画视图:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_button); 

     TextView textView = (TextView) this.findViewById(R.id.textview); 
     Animation blink = AnimationUtils.loadAnimation(this, R.anim.blink); 
     textView.setAnimation(blink); 
    } 

要启动:

textView.getAnimation().start()

要停止:

textView.getAnimation().cancel() 
textView.getAnimation().reset() 
0

你需要创建一个布尔字段作为类成员(布尔mStopBlink = FALSE)和轨道的TextView是否正在闪烁:

txt.setVisibility(View.VISIBLE); 
if(!mStopBlink){ 
    txt.setVisibility(View.INVISIBLE);