2012-04-01 37 views
0

Android newb在這裏。請使用小字:-)產生類似打字機的效果

我想在我的Android上模擬打字機輸出。顯示的輸出是由遊戲生成的,並且有些自由形式。我希望看到單個字符的效果以每秒6個字符的速度出現。當看到「回車」時,我想插入延遲,然後繼續在左側打字。

對視圖有什麼建議?選擇這個視圖是一個TextView嗎?即使這對於這種只讀粗略滾動輸出來說似乎有點矯枉過正。

我在this thread上看到了關於AsyncTask的東西。這看起來很有用。也許我的遊戲會寫入某種形式的緩衝區,AsyncTask的子類會每15秒左右拉出一個字符,將它添加到TextView中,然後使TextView失效?聽起來像一個計劃?

分辨率:

我裹在了滾動TextView的它工作得很好。正如預期的那樣,建議的'TextView.append()'也完成了這項工作。然而,我有scroll.FullScroll()的麻煩。顯然這必須使用scroll.post()方法中的Runnable來執行。我不知道爲什麼,但我會在後面深入研究。有很多關於它的SO線程。

回答

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。在您的TextView上使用postDelayed(),或安排Runnable在166毫秒內運行。這Runnable意志:

  • 附加你的性格你的TextView
  • 滾動的ScrollView的底部(如果你已經超過了屏幕上最適合自己的)
  • 安排其自身通過postDelayed()到另一個166毫秒運行

前兩發子彈看起來像:

transcript.append(yourCharacter); 
scroll.fullScroll(View.FOCUS_DOWN); 

事情不會完全平坦,因爲166ms是Runnable運行之前的最短時間。 OTOH,稍微不規則的鑰匙交付將突出打字機效果。

+0

哇,這是很棒的信息!謝謝! – 2012-04-01 23:51:42

+0

我看到TextView具有滾動功能。在ScrollView中包裝它的價值是什麼? – 2012-04-02 00:02:17

+0

@TonyEnnis:我不確定你指的是什麼「滾動設施」。所有小部件都有與滾動相關的屬性和方法,但它們不會自行滾動 - 它們需要位於可滾動的容器中。你*可能*能夠通過適當的設置來避免'ScrollView'對'TextView's'重力的影響,但是這時用戶將無法向上滾動閱讀剩下的內容。 – CommonsWare 2012-04-02 11:15:20