我希望在用户点击按钮后几秒钟后逐步显示按钮或文本视图。 例如:
A -----> AB -----> ABC --->图片.. a -----> AB -----> ABC --->图像..
所有文本视图都有不同意味着4文本视图
我隐藏了所有想要显示的元素并在tun时间设置可见但它没有按预期工作,甚至不认为这是正确的解决方案。
public void playRow1(View v) {
mytexts = (Button)findViewById(R.id.btn3Img);
handler.postDelayed(new Runnable(){
@Override
public void run() {
for(int i=0; i < 3; i++){
if(i == 0){
Button btn1 = (Button) findViewById(R.id.btn3Img);
Button btn2 = (Button) findViewById(R.id.btn3Img2);
Button btn3 = (Button) findViewById(R.id.Button01);
ImageView btnImg1 = (ImageView) findViewById(R.id.imgObjRow1);
ImageView btnImg2 = (ImageView) findViewById(R.id.imgPlayNextRow1);
btn1.setVisibility(View.VISIBLE);
btn2.setVisibility(View.VISIBLE);
btnImg1.setVisibility(View.VISIBLE);
btn3.setVisibility(View.VISIBLE);
tts.speak("a ", TextToSpeech.QUEUE_FLUSH, null);
btnImg2.setVisibility(View.INVISIBLE);
try{
Thread.sleep(3000);
}catch(Exception e){
}
}
}, 2000 * (count + 1));
}
我相信run方法应该循环但是没有用....请帮我提供一些步骤显示文本的解决方案..
提前谢谢。 编辑答案 0 :(得分:1)
我刚测试了一个(单个TextView)解决方案,它的工作正常 它看起来像这样:
TextView txt = (TextView) findViewById(R.id.txtTitle);
final String str = "Some Text";
final int secs = str.length();
new CountDownTimer((secs + 1) * 1000, 1000) // Tick length: 1 second
{
int sec = 0;
@Override
public final void onTick(final long millisUntilFinished)
{
txt.setText(txt.getText().toString() + str.charAt(sec));
sec += 1;
}
@Override
public void onFinish()
{
// TODO Auto-generated method stub
}
}.start();
此代码位于setContentView之后(在onCreate()方法中),并假设您的布局具有名为txtTitle
的TextView。
同样,您可以使用任何其他TextView。
<强> [UPDATE] 强>
这是如何做到这一点,但有2个TextViews。第二个开始&#34;打字&#34;在第一个完成之后:
final TextView txt = (TextView) findViewById(R.id.txtTitle);
final TextView txt2 = (TextView) findViewById(R.id.txtTitle2);
final String str = "Some Text";
final String str2 = "Another Text";
//init();
final int secs = str.length();
new CountDownTimer((secs + 1) * 1000, 1000)
{
int sec = 0;
@Override
public final void onTick(final long millisUntilFinished)
{
txt.setText(txt.getText().toString() + str.charAt(sec));
sec += 1;
}
@Override
public void onFinish()
{
final int secs = str2.length();
// Start the second CountDownTimer
new CountDownTimer((secs + 1) * 1000, 1000)
{
int sec = 0;
@Override
public final void onTick(final long millisUntilFinished)
{
txt2.setText(txt2.getText().toString() + str2.charAt(sec));
sec += 1;
}
@Override
public void onFinish()
{
// TODO Auto-generated method stub
}
}.start();
}
}.start();
您可以轻松地将概念扩展到所需的TextView,只需在前一个onFinish()
方法中启动下一个CountDownTimer。