программно изменить высоту макета, как избежать отставания?AsyncTask - PullRequest
2 голосов
/ 25 февраля 2011

Я пытаюсь программно изменить высоту веб-просмотра (используется для отображения html) таким образом, что он выглядит как анимация / расширение. Мой код работает, но он отстает. Иногда он движется плавно, а иногда - медленно, часто скорость меняется во время движения. Мой код ниже. У кого-нибудь есть хорошие способы исправить это?

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 ]

2 голосов
/ 26 февраля 2011

Я нашел альтернативный способ сделать это, который работает намного лучше.Для тех, кто хочет сделать похожую анимацию, смотрите мой ответ на этот вопрос: Android: развернуть / свернуть анимацию

1 голос
/ 25 февраля 2011

Делать макеты очень дорого, вы не сможете избежать лагов. Для анимации такого типа необходимо анимировать моментальный снимок видов.

...