Custom TranslateAnimation вызывает мерцание

Моя пользовательская TranslateAnimation перемещает вид по вертикали. Все хорошо, если не считать странного короткого мерцания в начале. Кажется, что это только один видимый кадр, в котором вид вспыхивает в неожиданном месте (намного выше, чем должна начинаться анимация).

Примечание. Это мерцание не происходит, когда я вызываю super(0,0,0,0), но тогда анимации нет.

Вот короткая версия моего кода:

public class ExTranslateAnimation extends TranslateAnimation implements AnimationListener
{
    private View myView;
    public ExTranslateAnimation (...)
    {
        // delta is how much it gets moved
        super(0, 0, -delta, 0);
        this.setAnimationListener(this);
        this.setDuration(duration);
        toY =  view.getTop() + delta;
        myView = view;
    }

    @Override
    public void onAnimationEnd(Animation animation)
    {}

    @Override
    public void onAnimationRepeat(Animation animation)
    {}

    @Override
    public void onAnimationStart(Animation animation)
    {

        LayoutParams lp = (LayoutParams) myView.getLayoutParams();
        lp.leftMargin = toX;
        lp.topMargin = toY;
        myView.setLayoutParams(lp);
        myView.layout(toX, toY, 0, 0);      
    }
}

person ShadowMare    schedule 04.04.2011    source источник


Ответы (1)


Это происходит на эмуляторе или устройстве ... потому что я однажды столкнулся с той же проблемой, но это было только в случае устройства. На эмуляторе все работало нормально.

person Angel    schedule 04.04.2011
comment
Да, я столкнулся с этой проблемой на устройстве. Мне, вероятно, не нужно пробовать это в эмуляторе, поскольку ему не хватит мощности для обработки большого количества анимаций. Как вы решили эту проблему? - person ShadowMare; 04.04.2011
comment
На эмуляторе этого не произойдет... Это проблема с памятью. В моем случае я уменьшил объем используемой памяти. - person Angel; 04.04.2011
comment
хм, я посмотрю, где я могу улучшить потребление памяти, но в любом случае оно не должно быть таким высоким. - person ShadowMare; 04.04.2011