android成长盒动画

Ben*_*Ben 2 animation android listview scale

在ListView行的内部,我有一个框(现在它是一个imageview,但我可能会在某个时候将它转换为线性或相对布局对象).当你点击该框时,我开始一个缩放动画,使它看起来增长.但是,一旦动画结束,该框立即返回其原始状态.我想让盒子保持在变形的尺寸(至少直到它们再次点击它).

这是xml:

<scale
    android:fromXScale="1" android:toXScale="5"
    android:fromYScale="1" android:toYScale="1"
    android:pivotX="100%" android:pivotY="0%" android:fillAfter="true"
    android:duration="600" />
Run Code Online (Sandbox Code Playgroud)

Ben*_*Ben 5

我能够做到这一点的唯一方法是每隔1ms改变新线程上盒子的宽度.不漂亮,但似乎是保持盒子边框的唯一方法.如果你拿出一个使用动画f/w的选项,请告诉我...

这里是代码Rohan,别忘了给我一个投票:)

    private void toggleMenu(final ViewHolder menu, final boolean doExpand) {
    final LayoutParams params = menu.actionMenu.getLayoutParams();
    final int originalWidth = params.width;

    Thread t = new Thread() {
        @Override
        public void run() {
            for (int i = 0; i < 200; i++) {
                if (doExpand) {
                    params.width = originalWidth + i;
                } else {
                    params.width = originalWidth - i;
                }
                menu.actionMenu.post(new Runnable() {

                    @Override
                    public void run() {
                        menu.actionMenu.requestLayout();

                    }
                });
                try {
                    Thread.sleep(1);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

            menu.expandCollapseButton.post(new Runnable() {
                @Override
                public void run() {
                    if (doExpand) {
                        menu.expandCollapseButton
                                .setImageResource(R.drawable.monotone_arrow_right);
                    } else {
                        menu.expandCollapseButton
                                .setImageResource(R.drawable.monotone_arrow_leftpng);
                    }

                }
            });

            // menu.isExpanded = !menu.isExpanded;
        }
    };
    t.start();
}
Run Code Online (Sandbox Code Playgroud)