package fi.iki.murgo.irssinotifier;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.graphics.Typeface;
import android.text.method.LinkMovementMethod;
import android.widget.TextView;
public class FancyTextView extends TextView {
private final CharSequence text;
private final Timer timer;
private static final Random rnd = new Random();
private String currentText = "";
private int currentIteration = 0;
private final int iterations = 5;
private int index = 0;
private final Activity activity;
private final int delay = 33;
public FancyTextView(CharSequence fulltext, Activity activity) {
super(activity);
this.text = fulltext;
this.activity = activity;
this.timer = new Timer();
setMovementMethod(LinkMovementMethod.getInstance());
setPadding(0, 10, 0, 0);
setTypeface(Typeface.MONOSPACE);
}
private char getRandomChar() {
int i = rnd.nextInt(126 - 33);
return (char) (i + 33);
}
public void start() {
timer.schedule(getTimerTask(), 0, delay);
}
private TimerTask getTimerTask() {
return new TimerTask() {
@Override
public void run() {
if (currentText.length() > 0) {
currentText = currentText.substring(0, currentText.length() - 1);
}
if (currentIteration++ >= iterations) {
currentText += text.charAt(index);
index++;
}
if (index >= text.length()) {
timer.cancel();
} else {
currentText += getRandomChar();
}
activity.runOnUiThread(new Runnable() {
public void run() {
if (index >= text.length()) {
setText(text);
} else {
setText(currentText);
}
}
});
}
};
}
}