2011-02-25 64 views
2

我想以編程方式改變webview(用於顯示html)的高度,看起來好像它是動畫/展開。我的代碼工作,但它是滯後的。有時它運行平穩,有時運行緩慢,通常速度會隨着運動而變化。我的代碼如下。有沒有人有任何好的方法來解決這個問題?以編程方式更改佈局高度,如何避免滯後? AsyncTask

class ViewDropDownASynch extends AsyncTask<String,Void,String>{ 
    WebView wv; 
    int height = 0; 
    LinearLayout.LayoutParams params; 
    int stop; 
    int step; 

    public ViewDropDownASynch(WebView v, int a, int o, int e){ 
     wv = v; 
     params = new LinearLayout.LayoutParams(wv.getLayoutParams()); 
     height = a; 
     stop = o; 
     step = e; 
     textAnimateExecute = true; 
    } 
    public String doInBackground(String... para){ 


     for(int i = height; i != stop+step; i+=step){ 
      params.height = i; 
      SystemClock.sleep(4); 
      this.publishProgress(); 
     } 
     return ""; 
    } 

    protected void onPostExecute(String result){ 
     textAnimateExecute = false; 
    } 

    protected void onProgressUpdate(Void...values){ 
     wv.setLayoutParams(params); 
    } 

回答

2

我發現了另一種方式來做到這一點,效果更好。對於那些想要做類似動畫的人來說,看看我對這個問題的回答:Android: Expand/collapse animation

1

做佈局是非常昂貴的,你將無法避免滯後。要做這種動畫,你應該爲視圖創建動畫。

+0

我的問題不是動畫的固有滯後(實際上,滯後不夠,這就是爲什麼我有SystemClock.sleep )),這是不一致的。有時它運行得很快,有時運行緩慢,速度在調整大小時動態變化,並使其看起來非常不專業。 – 2011-02-25 20:03:40

相關問題