Android newb在这里。请用小词: - )
我想在我的Android上模拟打字机输出。显示的输出是由游戏生成的,并且有些自由形式。我希望看到单个字符的效果以每秒约6个字符的速率出现。当看到'回车'时,我想插入一个延迟,然后在左边继续输入。
对观点有哪些建议?对此的选择视图是TextView吗?对于这种只读的粗略滚动输出来说,即使这样也有点过分了。
我在this thread上看到了有关AsyncTask的内容。这看起来很有用。也许我的游戏会写入某种缓冲区,AsyncTask的子类会每隔.15秒左右拉出一个字符,将它添加到TextView,然后使TextView无效()听起来像一个计划?
解决:
我将TextView包装在ScrollView中并且工作正常。正如预期的那样,建议的'TextView.append()'也完成了这项工作。但是我在使用scroll.FullScroll()时遇到了麻烦。显然,必须使用scroll.post()方法中的Runnable执行此操作。我完全不知道为什么,但我稍后会深入研究。关于它有很多SO线程。
答案 0 :(得分:2)
对此选择的视图是TextView吗?
TextView
中包含的ScrollView
似乎很可能:
<ScrollView android:id="@+id/scroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView android:id="@+id/transcript"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</ScrollView>
听起来像一个计划?
您不需要AsyncTask
。使用postDelayed()
上的TextView
或其他内容来安排Runnable
在166毫秒内运行。那个Runnable
会:
TextView
ScrollView
滚动到底部(如果您已超出屏幕上的内容)postDelayed()
安排自己在另一个166毫秒内运行前两个子弹看起来像:
transcript.append(yourCharacter);
scroll.fullScroll(View.FOCUS_DOWN);
事情不会完全均匀,因为166毫秒是Runnable
运行之前的最短时间。 OTOH,略微不规则的按键传递会突出打字机的效果。