2015-06-16 31 views
0

我在嘗試解決此問題時非常困難: 我編寫了一個應用程序,允許用戶擺脫屏幕上的一些彩色方塊。在我的班的彩色方塊,我有這樣的方法:在某些設備上查看外觀/消失很好,而不是在其他設備上

public void appearance(){ 
    setLayoutParams(new RelativeLayout.LayoutParams(side/ 10, side/ 10)); 

    final int[] count = {1}; 
    final Runnable run = new Runnable() { 
     @Override 
     public void run() { 
      setLayoutParams(new RelativeLayout.LayoutParams(count[0] * side/ 50, count[0] * side/ 50));//View grows of 1/50 of its final size 
      if (count[0] < 50){ 
       handler.postDelayed(this, 20); 
      } else { 
       setClickable(true);//When done 
      } 
      count[0]++; 
     } 
    }; 
    handler = new Handler(); 
    handler.postDelayed(run, 10); 
} 

當我在我的三星Galaxy S4迷你,它的工作原理很好。 但是,例如,它不適用於Wiko高速公路4G或模擬器1080x1920,我不明白爲什麼。

當我說那不工作:視圖出現並增長,但是當它增長時,在postDelayed之前的每個小視圖停留在那裏。 當我試圖通過點擊它使它們消失時,它縮小得很好,但所有其他更大的視圖(在postDelayed之前)也停留在那裏。

如果你不明白那裏,你會在下面的計時器。

在此期間,我有一個非常簡單的計時器是這樣的:

final java.util.Timer t = new java.util.Timer(); 
      t.scheduleAtFixedRate(new TimerTask() { 
       @Override 
       public void run() { 
        runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          if(termine){ 
           t.cancel(); 
          } 

          if(seconds == 0){ 
           vCoul.setText(String.valueOf(minutes) + ":00"); 
          } else if (seconds < 10) { 
           vCoul.setText(String.valueOf(minutes) + ":0" + String.valueOf(seconds)); 
          } else { 
           vCoul.setText(String.valueOf(minutes) + ":" + String.valueOf(seconds)); 
          } 

          seconds -= 1; 

          if(seconds == -1){ 
           seconds = 59; 
           minutes=minutes-1; 
          } 

         } 
        }); 
       } 
      }, 0, 1000); 

但每一秒,新的時間是重疊的前一個。

對不起,很長的文章,在此先感謝您的答案!

回答

0

幾個月前我想到了這一點,但我希望這個答案能夠幫助其他人。 我沒有在活動中放置任何背景,所以在大多數三星設備上都沒有問題,因爲三星處理沒有背景活動就沒有問題。

雖然在幾個Wiko和愛可視設備上,您必須放置一個背景(如背景:#000000),以便您可以順暢地移動視圖。

相關問題