2016-03-05 2 views
0

У меня проблема с моим кодом. Дело в том, что у меня есть 16 изображений, и когда изначально загружается моя прокрутка, нет проблем с задержкой, но после того, как несколько setimage становятся очень медленными. Я надеюсь, что вы можете мне помочь. ps: 16 изображений загружаются на фрагмент, проблема с задержкой возникает, когда я перехожу от одного фрагмента к другому прокручиванию.Lag после setImageDrawable

+0

Используйте трассировку метода, чтобы определить, где вы проводите время. В противном случае, если вы хотите получить помощь здесь, вам необходимо предоставить [mcve]. – CommonsWare

ответ

0

Я предлагаю вам использовать библиотеку Picaso для загрузки изображений, как его очень быстро и эффективное

его так просто, как

Picasso.with(context).load(R.drawable.landing_screen).into(imageView1); 

для получения дополнительной информации, я предлагаю вам пойти в Picaso documentation

0

Вы можете использовать Android Universal Image Loader library, чтобы избавиться от этой проблемы. Также попробуйте использовать View List или Grid View.

+1

Другая библиотека [Picasso] (http://square.github.io/picasso/), так или иначе, что ваш телефон использует много памяти, загружая изображения. Обе эти библиотеки хорошо справляются с этим –

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; 
      } 
     }); 
    }