Java 如何在android中使用onStateChange自定义侦听器?
我一直在尝试实现一个onStateChange监听器,并在互联网上寻求帮助,但似乎没有什么能解决我的具体问题。我的问题是,我正在进行一次基于文本的冒险,我需要在文本框完成“打字机”样式的打印之前禁止点击。完成后,将显示一个箭头图像,您现在应该可以单击文本框来推进文本。不幸的是,由于文本逐个字符出现在特殊的TextView类中,我不确定如何将onStateChange与我的活动、特殊的TextView类以及我在示例中看到的经常推荐的第三个类一起使用。以下是我到目前为止的情况: 我已经看到很多建议,推荐这样的课程:Java 如何在android中使用onStateChange自定义侦听器?,java,android,textview,listener,onchange,Java,Android,Textview,Listener,Onchange,我一直在尝试实现一个onStateChange监听器,并在互联网上寻求帮助,但似乎没有什么能解决我的具体问题。我的问题是,我正在进行一次基于文本的冒险,我需要在文本框完成“打字机”样式的打印之前禁止点击。完成后,将显示一个箭头图像,您现在应该可以单击文本框来推进文本。不幸的是,由于文本逐个字符出现在特殊的TextView类中,我不确定如何将onStateChange与我的活动、特殊的TextView类以及我在示例中看到的经常推荐的第三个类一起使用。以下是我到目前为止的情况: 我已经看到很多建议,
public class TypewriterManager {
private TypewriterListener typewriterListener = null;
public interface TypewriterListener {
public void onStateChange(boolean state);
}
public void registerListener (TypewriterListener listener) {
typewriterListener = listener;
}
// -----------------------------
// the part that this class does
private boolean isTypewriterFinished = false;
public void doYourWork() {
// do things here
// at some point
isTypewriterFinished = false;
// now notify if someone is interested.
if (typewriterListener != null)
typewriterListener.onStateChange(isTypewriterFinished);
}
}
现在,我想我会把runnable中的onStateChange称为
public class Typewriter extends TextView {
private CharSequence mText;
private int mIndex;
private long mDelay = 500; //Default 500ms delay
public Typewriter(Context context) {
super(context);
}
public Typewriter(Context context, AttributeSet attrs) {
super(context, attrs);
}
private Handler mHandler = new Handler();
private Runnable characterAdder = new Runnable() {
@Override
public void run() {
setText(mText.subSequence(0, mIndex++));
if(mIndex <= mText.length()) {
mHandler.postDelayed(characterAdder, mDelay);
}else{
//call listener?
}
}
};
}
任何帮助或反馈都将不胜感激。将这两个课程合并在一起。除非您不在其他任何地方使用,否则您不需要任何类似TypeWriterManager的类。调用侦听器的方式与您在TypeWriterManager中所做的相同。如果要这样做,我是否应该在Typewriter中实现一个接口?在runnable中有注释的地方会调用doYourWork()吗?应该用打字机创建接口。在任何需要状态回调的地方实现它。把你的runnable换成OnStatus我很感激。明天我得设法实施它。再次感谢你的帮助。
typewriter.setOnTypewriterFinishedListener(new View.OnTypewriterFinishedListener)