2016-03-05 113 views
0

我的代碼有問題。重點是,我有16個圖像,當負載最初我的滾動靈活性沒有滯後問題,但幾個setimageas後變得非常緩慢。我希望你能幫助我。 ps:將16張圖片加載到一個片段上,當我從一個片段移動到另一個片段時,發生滯後問題。setImageDrawable後滯後

+0

使用方法追蹤來確定您在哪裏花費時間。否則,如果你需要幫助,你需要提供[mcve]。 – CommonsWare

回答

0

我建議你使用畢加索庫加載圖像作爲其速度非常快,高效

它的那樣簡單

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

瞭解更多信息,我建議你去Picaso documentation

0

您可以使用Android Universal Image Loader library擺脫此問題。也嘗試使用列表視圖或網格視圖。

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