android成长盒动画

时间:2010-07-02 23:11:28

标签: android listview animation 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" />

2 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:0)

好吧,我让它工作...... sorta。如果我在代码中完成所有操作并调用setFillAfter,setFillBefore&amp; setFillEnabled all = true,然后它似乎工作。唯一的问题是,我的盒子上的轮廓(它有一个背景可绘制的<stroke>元素。填充似乎也在增长,我希望不会增长......