BartRunnerAndroid/app/src/main/java/com/dougkeen/bart/controls/TimedTextSwitcher.java

70 lines
1.9 KiB
Java
Raw Normal View History

package com.dougkeen.bart.controls;
import org.apache.commons.lang3.StringUtils;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.widget.TextSwitcher;
import com.dougkeen.bart.R;
import com.dougkeen.bart.model.TextProvider;
public class TimedTextSwitcher extends TextSwitcher implements
2015-08-12 01:56:23 +00:00
Ticker.TickSubscriber {
2015-08-12 01:56:23 +00:00
public TimedTextSwitcher(Context context, AttributeSet attrs) {
super(context, attrs);
setInstanceVarsFromAttrs(attrs);
}
2015-08-12 01:56:23 +00:00
public TimedTextSwitcher(Context context) {
super(context);
}
2015-08-12 01:56:23 +00:00
private void setInstanceVarsFromAttrs(AttributeSet attrs) {
TypedArray typedArray = getContext().getTheme()
.obtainStyledAttributes(attrs, R.styleable.TimedTextSwitcher, 0, 0);
int tickInterval = typedArray.getInteger(R.styleable.TimedTextSwitcher_tickInterval, 0);
2015-08-12 01:56:23 +00:00
if (tickInterval > 0) {
setTickInterval(tickInterval);
}
}
2015-08-12 01:56:23 +00:00
private int mTickInterval;
private TextProvider mTextProvider;
2015-08-12 01:56:23 +00:00
@Override
public int getTickInterval() {
return mTickInterval;
}
2015-08-12 01:56:23 +00:00
public void setTickInterval(int tickInterval) {
this.mTickInterval = tickInterval;
}
2015-08-12 01:56:23 +00:00
public void setTextProvider(TextProvider textProvider) {
mTextProvider = textProvider;
Ticker.getInstance().addSubscriber(this, getContext());
}
2015-08-12 01:56:23 +00:00
private CharSequence mLastText;
2015-08-12 01:56:23 +00:00
@Override
public void setCurrentText(CharSequence text) {
mLastText = text;
super.setCurrentText(text);
}
2015-08-12 01:56:23 +00:00
@Override
public void onTick(long tickNumber) {
String text = mTextProvider.getText(tickNumber);
if (StringUtils.isNotBlank(text)
&& !StringUtils.equalsIgnoreCase(text, mLastText)) {
mLastText = text;
setText(text);
}
}
}