2011-02-25 2 views
2

나는 프로그래밍 방식으로 애니메이션보기/확대하는 것처럼 보이는 방식으로 웹보기 (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 ()), 그것은 일관성이 없다. 때로는 빠르게 실행되고, 때로는 느리게 실행되며, 속도가 동적으로 변경되어 매우 전문적이지 않은 것처럼 보입니다. –

관련 문제