1

Layout上下に流れるアニメーションを実装しました。アニメーションは、高低の両方で正確に流れる必要があります。このグリッドビューは の上にありExpandbleListViewます。そのため、すべてのグループを閉じると、アニメーションは非常に滑らかになります。リスト上のグループが開いていて、多くの要素がある場合、アニメーションがトリガーされますが、思ったほど流動的ではありません。アニメーションのコードを投稿します。

    public void expand(final View v) {
    v.measure(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
    final int targtetHeight = v.getMeasuredHeight();

    v.getLayoutParams().height = 0;
    v.setVisibility(View.VISIBLE);
    Animation a = new Animation() {
        @Override
        protected void applyTransformation(float interpolatedTime,
                Transformation t) {
            v.getLayoutParams().height = interpolatedTime == 1 ? LayoutParams.WRAP_CONTENT
                    : (int) (targtetHeight * interpolatedTime);
            v.requestLayout();
        }

        @Override
        public boolean willChangeBounds() {
            return true;
        }
    };

    Interpolator i = AnimationUtils.loadInterpolator(this,
            android.R.anim.linear_interpolator);
    a.setInterpolator(i);
    a.setDuration(200);
    v.startAnimation(a);
}

と :

public static void collapse(final View v) {
    final int initialHeight = v.getMeasuredHeight();
    Animation a = new Animation() {
        @Override
        protected void applyTransformation(float interpolatedTime,
                Transformation t) {
            if (interpolatedTime == 1) {
                v.setVisibility(View.GONE);
            } else {
                v.getLayoutParams().height = initialHeight
                        - (int) (initialHeight * interpolatedTime);
                v.requestLayout();
            }
        }

        @Override
        public boolean willChangeBounds() {
            return true;
        }
    };

    // 1dp/ms
    a.setDuration(200);
    v.startAnimation(a);
}

アニメーションをスムーズにするにはどうすればよいですか?

--> 編集: コードが間違っていたので修正しました

4

0 に答える 0