Анимация не плавная

Я использую анимацию в своем приложении. Я использую анимацию slide_left и slide_right. Я столкнулся со следующей проблемой: анимация, отображаемая при скольжении влево, плавная и точная, но когда я двигаюсь вправо, анимация не такая плавная, как показано при скольжении влево. Итак, почему возникает эта проблема? Вот мой код, проверьте, нет ли ошибок.

Код для файла slide_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator">
<translate android:fromXDelta="100%p" android:toXDelta="0"
android:duration="@android:integer/config_longAnimTime" />
</set>

Код для slide_right.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator">
<translate android:fromXDelta="-150%p" android:toXDelta="0"
android:duration="@android:integer/config_longAnimTime" />
</set>

Код для файла .java

public boolean onTouch(View v, MotionEvent e) 
{
    switch (e.getAction())
    {
        case MotionEvent.ACTION_DOWN:
        {
            //store the X value when the user's finger was pressed down
            m_downXValue = e.getX();
            break;
        }   
        
        case MotionEvent.ACTION_UP:
        {
            //Get the X value when the user released his/her finger
            float currentX = e.getX();
            
            // going forwards: pushing stuff to the left
            if (m_downXValue > currentX && currentX < 0)
            {                   
                ViewFlipper vf = (ViewFlipper) findViewById(R.id.flipview);
                vf.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_left));                
            }
            
            // going backwards: pushing stuff to the right
            if (m_downXValue < currentX && currentX > 100)
            {                   
                ViewFlipper vf = (ViewFlipper) findViewById(R.id.flipview);                                     
                vf.setAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_right));                                
            }                                       
            break;
        }
    }
    
    return true;
}

person AndroidDev    schedule 21.09.2011    source источник


Ответы (1)


Поместите этот код для левой стороны...

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="@string/duration"/>
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="Duration" />
</set>

И поместите этот код для правой стороны...

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="@string/duration"/>
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="Duration" />
</set>

в этом просто добавьте свою продолжительность...

Это работает...

person Mitesh Jain    schedule 21.09.2011
comment
поместите их внутрь ‹set›‹/set› или снаружи - person AndroidDev; 21.09.2011
comment
давайте продолжим это обсуждение в чате - person AndroidDev; 21.09.2011