setImageDrawable之后的滞后

时间:2016-03-05 00:14:22

标签: java android android-fragments imageview

我的代码有问题。关键是我有16个图像,当负载最初我的滚动活动没有滞后问题,但在几个setimageas变得非常慢。我希望你能帮助我。 ps:将16个图像加载到一个片段上,当我从一个片段移动到另一个片段时,会出现滞后问题。

3 个答案:

答案 0 :(得分:1)

我建议您使用Picaso库加载图像,因为它非常快速有效

就像

一样简单
Picasso.with(context).load(R.drawable.landing_screen).into(imageView1);

有关详情,建议您转到Picaso documentation

答案 1 :(得分:0)

您可以使用Android Universal Image Loader library来解决此问题。还尝试使用列表视图或网格视图。

答案 2 :(得分:0)

这是代码,那么如果通过xml src加载图片没有任何延迟,只需使用setImageDrawable延迟出来..

 for(int h=0;h<16;h++){
        final int finalH = h;


        button[h].setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_DOWN) {
                    for (int i = 0; i < 8; i++) {
                        if (tresy[i] == ((int) button[finalH].getTag())) {
                            return true;
                        }

                    }


                    if ((test)&&(tempo)) {
                        Log.d("id", String.valueOf(button[finalH].getTag()));
                        button[finalH].setImageDrawable(carte[((int) button[finalH].getTag())]);
                        //set image resource tag!
                        logTaG[0] = (int) button[finalH].getTag();
                        logBtn = finalH;
                        test = false;


                    } else if(tempo) {
                        test = true;
                        button[finalH].setImageDrawable(carte[((int) button[finalH].getTag())]);
                        //set image resource tag!
                        logTaG[1] = (int) button[finalH].getTag();
                        if ((logTaG[0] == logTaG[1] && (logBtn != finalH))) {
                            tresy[j] = logTaG[0];
                            Intent intent = new Intent(v.getContext(), Browser_descrizione.class);
                            intent.putExtra("Tag", tresy[j]);
                            startActivity(intent);


                            j++;
                            Log.d("bravo", "hai vinto");

                            if (j == 7) {
                                Log.d("Bravo", "hai completato il gioco");
                                //Far comparire warning con scritto ricomincia o esci
                                attempt++;
                                SM.sendData(attempt);

                            }
                        } else {

                            Log.d("Riprova", "sarai più fortunato");
                            final Handler handler = new Handler();
                            tempo = false;

                            handler.postDelayed(new Runnable() {
                                @Override
                                public void run() {
                                    // Do something after 5s = 5000ms
                                    button[finalH].setImageResource(R.drawable.back_card);
                                    button[logBtn].setImageResource(R.drawable.back_card);
                                    tempo = true;

                                }
                            }, 500);
                            attempt++;
                            SM.sendData(attempt);
                        }


                    }
                    return true;
                }


                return false;
            }
        });
    }