2016-08-04 4 views
1

Во-первых, я новичок в программировании на Xamarin для Android, а также в Android-программировании в целом. Я успешно запустить следующий код с ожидаемым эффектом:OverridePendingTransition не работает странно?

//in the context of the main Activity 
StartActivity(someIntent); 
OverridePendingTransition(Android.Resource.Animation.SlideInLeft, 
          Android.Resource.Animation.SlideOutRight); 

Теперь я хотел бы создать свои собственные анимации для раздвижных слева и выскальзывания справа с помощью декларации XML. Я помещал свои файлы XML под каталогом с именами slideInLeft.xml и slideOutRight.xml соответственно. Вот содержимое файлов:

slideInLeft.xml:

<?xml version="1.0" encoding="utf-8" ?> 
<translate xmlns:android="http://schemes.android.com/apk/res/android" 
     android:duration="300" 
     android:fromXDelta="-100%" 
     android:toXDelta="0%"> 
</translate> 

slideOutRight.xml:

<?xml version="1.0" encoding="utf-8" ?> 
<translate xmlns:android="http://schemes.android.com/apk/res/android" 
     android:duration="350" 
     android:fromXDelta="0%" 
     android:toXDelta="100%"> 
</translate> 

Теперь код просто изменен следующим образом:

//in the context of the main Activity 
StartActivity(someIntent); 
OverridePendingTransition(Resource.Animation.SlideInLeft, 
          Resource.Animation.SlideOutRight); 

Но анимация не работает, новая активность отображается только после небольшой задержки (похоже, что она равна длительности скольжения, в которой находится 300ms).

Это меня смущает. Я не знаю, почему и как это сделать. Я считаю, что Java-разработчик Android может помочь с этой проблемой, а не только с помощью использования Xamarin.

Большое вам спасибо за помощь!

ответ

1

Попробуйте изменить XML файлы:

slideInLeft

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate android:fromXDelta="-100%p" android:toXDelta="0" 
     android:duration="350"/> 
</set> 

И

slideOutRight

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate android:fromXDelta="0" android:toXDelta="100%p" 
     android:duration="350"/> 
</set> 

Это должно работать.

+0

Ну, может быть, у вас есть попробовал это сам и убедился, что это работает. Однако мой код также должен работать ***, если *** я исправлю очень маленькую опечатку, которая является *** схемами ***, тогда как это должно быть *** схемами ***. В любом случае, спасибо за вашу помощь, по крайней мере, я увидел эту опечатку из вашего ответа :) – Hopeless

+1

Отлично! хорошего дня! – himanshu1496

0

Вы пытаетесь установить продолжительность более дольше, чтобы увидеть переход :)

slideInLeft.xml:

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

slideOutRight.xml:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shareInterpolator="false" > 
    <translate android:duration="5000" 
    android:fromXDelta="0%" 
    android:toXDelta="100%"/> 
    <alpha android:duration="5000" 
    android:fromAlpha="1.0" 
    android:toAlpha="0.0" /> 
</set> 
+1

Спасибо, но продолжительность не проблема, 500 или даже 300 достаточно хороши, чтобы увидеть эффект. – Hopeless

+1

счастливое кодирование! :) – alway5dotcom

Смежные вопросы