1

TextViewアニメのように少しずつ出していきたいです。問題は、アニメーションが滑らかでないことです。時々、しばらくスタックしてから再開します。さらに悪いことに、元に戻ることもありTextViewます。誰でも私を助けることができますか?

private class UnfoldTask extends AsyncTask<Integer, Integer, Integer> {

    View view;

    public UnfoldTask(View v) {
        this.view = v;
        ViewGroup.LayoutParams pa = view.getLayoutParams();
        pa.height = 0;
        view.setLayoutParams(pa);
    }

    @Override
    protected Integer doInBackground(Integer... maxHeight) {
        ViewGroup.LayoutParams pa = view.getLayoutParams();
        while (pa.height < maxHeight[0]) {
                pa.height += (int) (24 * getResources().getDisplayMetrics().density + 0.5f);
                sleep(100);
                publishProgress(pa.height);
        }
        return maxHeight[0];
    }

    private void sleep(int i) {
        try {
            Thread.sleep(i);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    @Override
    protected void onProgressUpdate(Integer... values) {
        ViewGroup.LayoutParams pa = view.getLayoutParams();
        pa.height = values[0];
        view.setLayoutParams(pa);
    }

    @Override
    protected void onPostExecute(Integer result) {
        ViewGroup.LayoutParams pa = view.getLayoutParams();
        pa.height = result;
        view.setLayoutParams(pa);
    }
}
4

2 に答える 2

0

これにはスケール アニメーションを使用する必要があります。次に例を示します。

ScaleAnimation animation = new ScaleAnimation(1, 2, 1, 2, centerX, centerY); // Scales from normal size (1) to double size (2). centerX/Y is the center of your text view. Change this to set the pivot point of your animation.
animation.setDuration(1000);
myTextView.startAnimation(animation);
于 2013-11-12T02:48:50.520 に答える