在一段时间后逐步显示textview

时间:2014-11-03 17:46:01

标签: android multithreading handle

我希望在用户点击按钮后几秒钟后逐步显示按钮或文本视图。 例如:

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方法应该循环但是没有用....请帮我提供一些步骤显示文本的解决方案..

提前谢谢。 编辑

1 个答案:

答案 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。