анимация текстов и изображений - PullRequest
0 голосов
/ 09 мая 2011

Я пытаюсь анимировать изображения (imageView) вместе с их ассоциированным текстом (textView).Я последовал совету, который получил здесь, и использовал AsyncTask с обработчиком потока пользовательского интерфейса для динамического изменения изображений и текста.Это должен быть простой код, но проблема в том, что я получаю / вижу только последнее изображение и текст.в приведенном ниже коде будут показаны только im2 (второе изображение) и t2 (второй текст).

Может кто-нибудь сказать, в чем проблема?

мой код выглядит такэто:

    public class picshow extends Activity
{
    private static Integer[] Imgid = {R.drawable.im1, R.drawable.im2};
    private static Integer[] Strid = {R.string.t1, R.string.t2};

    private Handler handToUI = new Handler();


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ImageView image = (ImageView) findViewById(R.id.picView);
        TextView text = (TextView) findViewById(R.id.usertext);

        myTask task = new myTask();
        task.execute("nothing");
    }



    private class myTask extends AsyncTask<String, Void, String >
    {

        @Override
        protected String doInBackground(String... params )
        {
             //Do noting and return a String. a preparation for future code
            return params[0];
        }

        @Override
        protected void onPostExecute( String result )
        {

            //send message to UI
            for(int i = 0;i<Strid.length;i++)
            {
                final int si = Strid[i];
                final int ii = Imgid[i];
                try
                {
                    Thread.sleep(5000);
                    handToUI.post(new Runnable()
                    {
                        ImageView image = (ImageView) findViewById(R.id.picView);
                        TextView text = (TextView) findViewById(R.id.usertext);
                        public void run()
                        {
                            text.setText(si);
                            image.setImageResource(ii);
                        }
                    });
                 }
                catch (InterruptedException e)
                {
                    e.printStackTrace();
                }



            }
        }
    }

}

спасибо lipi

1 Ответ

0 голосов
/ 11 мая 2011

Попробуй это.Я исправил твой код

handToUI.post(new Runnable()
{
     ImageView image = (ImageView) findViewById(R.id.picView);
     TextView text = (TextView) findViewById(R.id.usertext);
     public void run()
     {
          try
          {
              Thread.sleep(5000);
          }
          catch (InterruptedException e)
          {
              e.printStackTrace();
          }
          text.setText(si);
          image.setImageResource(ii);
     }
});

Надеюсь, он тебе поможет.

...