Skip to main content

Timer for Android – Make a TextView Blink

 
I am pretty sure some of you may been through the same problem where you needed a simple periodic timer for your Android app. You may use java.util.Timer but this is not a good choice as this timer creates a new thread for some reason and you don’t want to invoke multiple threads in your mobile app. So I created this simple timer that makes use of the android.os.Handler class. Below is the source code of the Timer for android. Sorry for the formatting and naming convention. I’m used to the C# conventions.

package ross.brigoli.android;
import android.os.Handler;

public class Timer {
  private int _interval;
  public int getInterval() { return _interval; }
  public void setInterval(int delay) { _interval = delay; }
  private Handler handler;
  private Runnable _tickHandler;
  private Runnable delegate;
  private boolean ticking;
  public boolean getIsTicking(){ return ticking; }
 
  public Timer(int interval)
  {
    _interval = interval;
    handler = new Handler();
  }
 
  public Timer(int interval, Runnable onTickHandler)
  {
    _interval = interval;
    setOnTickHandler(onTickHandler);
    handler = new Handler();
  }
 
  public void start(int interval, Runnable onTickHandler)
  {
    if (ticking) return;
    _interval = interval;
    setOnTickHandler(onTickHandler);
    handler.postDelayed(delegate, _interval);
    ticking = true;
  }
 
  public void start()
  {
    if (ticking) return;
    handler.postDelayed(delegate, _interval);
    ticking = true;
  }
 
  public void stop()
  {
    handler.removeCallbacks(delegate);
    ticking = false;
  }
 
  public void setOnTickHandler(Runnable onTickHandler)
  {
    if (onTickHandler == null)
      return;
   
    _tickHandler = onTickHandler;
   
    delegate = new Runnable() {
      public void run()
      {
        if (_tickHandler == null) return;
        _tickHandler.run();
        handler.postDelayed(delegate, _interval);
      }
    };
  }
}

I used this timer to make a TextView in my Application blink, to update values in the UI from service, to monitor status, etc. with the following code:

  boolean blinkOn = false;
  Timer tmrBlink = new Timer(500, new Runnable() {

    public void run() {
      if (blinkOn)
      {
        ((TextView) findViewById(R.id.widget46)).setVisibility(View.VISIBLE);
      }
      else
      {
        ((TextView) findViewById(R.id.widget46)).setVisibility(View.INVISIBLE);
      }
      blinkOn = !blinkOn;
    }
   
  });

Comments

Popular

DIY Airsoft Chrono [PC-based]

Chrono or Chronograph, the term used by Airsofter and Paintball players to refer to the device that measures the muzzle velocity of firearms. This is also called MVMD, short for Muzzle Velocity Measuring Device by the British Army. Muzzle Velocity is the velocity of the bullet as it exits the barrel of the firearm.

A year ago I was an active Airsofter in Iligan who's more interested in modifying and improvising AEGs (Automatic Electric Gun) rather than playing airsoft. I have made my AEG susceptible to high current burns by using locally available MOSFETs. I have improved velocity by replacing cylinder gaskets and spring. I have increased the rounds per minute by altering the armature windings of the drive motor. And most of all, I have made my own cheap alternative PC-based Chrono.

I have posted an artivle before that details the development of my chrono but unfortunately the online forum was hacked/deleted by webmaster of proboards.com due to some violation in the contents. So, I&…

Disable PrintScreen on C# without Keyboard Hooks

Yes, there is a simple solution to prevent grabbing information on your C# application screen with the keyboard's printscreen key without using keyboard hooks or calling COM interops. The solution makes use of Windows Forms Message Filter to trap keyboard events on your application window.

To trap keyboard events with Windows Message Filter, you need to implement the IMessageFilter interface and override the member PreFilterMessage(ref Message WM) method. This is the method called whenever a Form receives a keyboard or mouse event. You may want to read more about IMessageFilter.

The problem is that even though you have trapped the PrintScreen keypress event, the captured image will still persist to the clipboard. Therefore the simplest solution is to clear up the clipboard right after the PrintScreen is pressed on the keyboard.

This is how the overridden method will look like this:

publicbool PreFilterMessage(refMessage WM)
{
Keys kCode = (Keys)…

DIY Mic Shock Mount

For the past couple of weeks I was looking for a cheap microphone shock mount and the cheapest I saw that was available in my country was around US$160 so I decided to build a cheap one. I only spent less than $6 and a 2 hours of my not very precious time.Before I left office today, bought materials and tools to for my DIY shock mount which are a piece of 4”-diameter PVC pipe coupling ($0.50), a set of hair ties($0.40), set of stove bolts ($0.50), a set of coping saw frame and blades ($2.5).First, I decided to cut the PVC coupling so it would look like Rode SM3 shock mount’s frame.Then I used the section of the PVC coupling that was removed to be a attachment brace to the original mic holders base and bolted it to the base of the frame. I had to heat that part so could bend it to a desired angle.And then cut slots on the edges for the rubber suspensions (hair ties). Right after positioning the suspensions, i found a problem. The rubber bands slip every time i attempted to position the…