android grow box анимация

Вътре в ред ListView имам кутия (в момента това е изглед на изображение, но вероятно ще го конвертирам в линеен или относителен обект на оформление в даден момент). когато щракнете върху квадратчето, го карам да стартира мащабна анимация, която го кара да изглежда, че расте. обаче, след като анимацията приключи, кутията се връща веднага в първоначалното си състояние. Бих искал кутията да остане в трансформирания размер (поне докато не щракнат върху нея отново).

ето го 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" />


person Ben    schedule 02.07.2010    source източник


Отговори (2)


единственият начин, по който успях да направя това, беше като променям ширината на полето в нова нишка на всеки 1ms. не е красиво, но изглежда беше единственият начин да се запазят границите на кутията. ако попаднете на опция, която използва анимацията f/w, моля, уведомете ме...

ето кода Рохан, не забравяйте да гласувате за мен :)

    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();
}
person Ben    schedule 07.07.2010
comment
Можете ли да предоставите кодовия фрагмент за това как сте го внедрили. имам предвид целия клас, ако сте го направили програмно. Аз също искам да внедря същото нещо и съм заседнал между тях. - person Rohan K; 21.10.2010

добре, накарах го да работи... така. Ако направя всичко в код и извикам setFillAfter, setFillBefore & setFillEnabled all = true, тогава изглежда, че работи. единственият проблем е, че контурът на моята кутия (има фон, който може да се рисува с <stroke> елемент. подложката също изглежда нараства, бих искал това да не расте...

person Ben    schedule 02.07.2010