暂停代码以显示图像后的图像?

时间:2015-08-05 05:19:15

标签: java android

我是android的完全初学者。我在制作申请时遇到了困难。我将图像存储在hashmap中,并且我作为输入的任何行都被分成基于空格的单独的单词并且获取其相应的图像。但我不希望这些图像立刻出现,但这些图像应该一个接一个地显示,并且每个图像之间应该有几乎一秒的暂停以显示。但似乎因为我的经验不足而陷入困境。代码在哪里以及如何暂停?因为当我在代码中的任何地方使用Thread.sleep时,它只会在每次开始时暂停。

textlist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,int position, long id) {


                Speech.setText("You said " + matches_text.get(position));
                selectedFromList = (matches_text.get(position));

                 String[] separated = selectedFromList.split(" ");
                // ImageView iv;
                final int[] imageViews = { R.id.imageView1,
                        R.id.imageView2, R.id.imageView3, R.id.imageView4,
                        R.id.imageView5, R.id.imageView6, R.id.imageView7,
                        R.id.imageView8, R.id.imageView9, R.id.imageView10,
                        R.id.imageView11, R.id.imageView12,
                        R.id.imageView13, R.id.imageView14,
                        R.id.imageView15, R.id.imageView16,

                };  

                final_length = separated.length;
                int b = 0;

                HashMap<String, Integer> map = new HashMap<String, Integer>();              
                map.put("apple",R.drawable.apple);



                maps pol=new maps();
                pol.map_A();
                pol.map_B();
                pol.map_C();
                pol.map_D();
                pol.map_E();


                for (int i = 0; i < separated.length; i++) {

                    iv = (ImageView) findViewById(imageViews[i]);
                    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
                            100, 100);
                    iv.setLayoutParams(layoutParams);


            if(pol.map_a.containsKey(separated[i].toLowerCase())){

                iv.setImageResource(pol.map_a.get(separated[i].toLowerCase()));
                             }
            else if(pol.map_b.containsKey(separated[i].toLowerCase())){

                        iv.setImageResource(pol.map_b.get(separated[i].toLowerCase()));
                                     }
            else if(pol.map_c.containsKey(separated[i].toLowerCase())){

                iv.setImageResource(pol.map_c.get(separated[i].toLowerCase()));
                             }
            else if(pol.map_d.containsKey(separated[i].toLowerCase())){

                iv.setImageResource(pol.map_d.get(separated[i].toLowerCase()));
                             }
            else if(pol.map_e.containsKey(separated[i].toLowerCase())){

                iv.setImageResource(pol.map_e.get(separated[i].toLowerCase()));
                             }
}}

1 个答案:

答案 0 :(得分:0)

按以下方式更改for循环:

Handler handler1 = new Handler();

for (int i = 0; i < separated.length; i++) {
    final int iDupe = i;
    handler1.postDelayed(new Runnable() {

        public void run() {

            iv = (ImageView) findViewById(imageViews[iDupe]);
            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(100, 100);
            iv.setLayoutParams(layoutParams);


            if(pol.map_a.containsKey(separated[iDupe].toLowerCase())) {
                iv.setImageResource(pol.map_a.get(separated[iDupe].toLowerCase()));
            }
            else if(pol.map_b.containsKey(separated[iDupe].toLowerCase())) {
                iv.setImageResource(pol.map_b.get(separated[iDupe].toLowerCase()));
            }
            else if(pol.map_c.containsKey(separated[iDupe].toLowerCase())) {
                iv.setImageResource(pol.map_c.get(separated[iDupe].toLowerCase()));
            }
            else if(pol.map_d.containsKey(separated[iDupe].toLowerCase())) {
                iv.setImageResource(pol.map_d.get(separated[iDupe].toLowerCase()));
            }
            else if(pol.map_e.containsKey(separated[iDupe].toLowerCase())) {
                iv.setImageResource(pol.map_e.get(separated[iDupe].toLowerCase()));
            }
        }
    }, i * 1000);
}