transiciones power poner para insertar hacer entrada efectos diapositivas desde descargar con como celular aplicaciones animaciones android animation

power - Android de izquierda a derecha diapositiva animación



efectos de entrada en power point (8)

Además, puedes hacer esto:

FirstClass.this.overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);

Y no es necesario agregar ninguna animación xml

Tengo tres actividades cuyos modos de lanzamiento son instancia única.
Usando onfling() , los giro hacia la izquierda y hacia la derecha.

El problema es que cuando deslizo de derecha a izquierda la transición de diapositiva está bien, pero cuando deslizo de izquierda a derecha, obtengo la transición de deslizar de derecha a izquierda.

Sé por qué está sucediendo esto porque siempre estoy enviando nuevos intentos. Pero ahora necesito cambiar la animación de deslizar de izquierda a derecha.

Sé que hay un método llamado overridingTransitionPending() , pero no sé cómo definir mi animación en XML.


Hice un código de muestra que implementa el mismo con efectos de diapositivas de izquierda, derecha, arriba y abajo. (Para aquellos que no quieren hacer todos esos archivos anim xml :))

Pagar el código en github


No pude encontrar ninguna solución para este tipo de animación usando ViewPropertyAnimator.

Aquí hay un ejemplo:

Diseño:

<FrameLayout android:id="@+id/child_view_container" android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/child_view" android:gravity="center_horizontal" android:layout_gravity="center_horizontal" /> </FrameLayout>

Animación: de derecha a izquierda y vista de salida:

final childView = findViewById(R.id.child_view); View containerView = findViewById(R.id.child_view_container); childView.animate() .translationXBy(-containerView.getWidth()) .setDuration(TRANSLATION_DURATION) .setInterpolator(new AccelerateDecelerateInterpolator()) .setListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { childView.setVisibility(View.GONE); } });

Animar: de derecha a izquierda, ingresar vista:

final View childView = findViewById(R.id.child_view); View containerView = findViewById(R.id.child_view_container); childView.setTranslationX(containerView.getWidth()); childView.animate() .translationXBy(-containerView.getWidth()) .setDuration(TRANSLATION_DURATION) .setInterpolator(new AccelerateDecelerateInterpolator()) .setListener(new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { childView.setVisibility(View.VISIBLE); } });


Puede sobrescribir la animación de actividad predeterminada. Aquí está la solución que uso:

Cree una "Animación de actividad personalizada" y agréguela a su tema base por "windowAnimationStyle".

<!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorPrimary</item> <item name="android:windowAnimationStyle">@style/CustomActivityAnimation</item> </style> <style name="CustomActivityAnimation" parent="@android:style/Animation.Activity"> <item name="android:activityOpenEnterAnimation">@anim/slide_in_right</item> <item name="android:activityOpenExitAnimation">@anim/slide_out_left</item> <item name="android:activityCloseEnterAnimation">@anim/slide_in_left</item> <item name="android:activityCloseExitAnimation">@anim/slide_out_right</item> </style>

Crea una carpeta anim en la carpeta res y luego crea estos cuatro archivos de animación:

slide_in_right.xml

<?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="@android:integer/config_mediumAnimTime"/> </set>

slide_out_left.xml

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

slide_in_left.xml

<?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="@android:integer/config_mediumAnimTime"/> </set>

slide_out_right.xml

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

Este es mi proyecto de muestra en github.

Eso es todo ... Feliz codificación :)


Puede usar ViewAnimator o ViewFlipper para este propósito. Debe manejar los eventos Swap a la izquierda y a la derecha y configurar los naimations necesarios.

Puedes ver todos los ejemplos en el blog.

http://learnandroideasily.blogspot.in/2013/06/detect-swap-event-in-android.html

Ejemplos de animación

http://learnandroideasily.blogspot.in/2013/05/android-animation.html

http://learnandroideasily.blogspot.in/2013/06/android-viewflipper-example.html

http://learnandroideasily.blogspot.in/2013/08/android-viewanimator-example.html


Si desea que la transición funcione para toda la aplicación, puede crear una rootacivity y heredarla en la actividad que necesite. En la función OnCreate de Override Onrive OverridePendingTransition con la dirección deseada. Y onStart call overridePendingTransition con otra dirección si se reanuda la actividad. Aquí estoy dando el código de ejecución completo a continuación. Corrígeme si estoy equivocado.

crea este archivo xml en tu carpeta anim

anim_slide_in_left.xml

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

anim_slide_in_right.xml

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

anim_slide_out_left.xml

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

anim_slide_out_right.xml

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

RootActivity

import android.app.Activity; import android.os.Bundle; public class RootActivity extends Activity { int onStartCount = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); onStartCount = 1; if (savedInstanceState == null) // 1st time { this.overridePendingTransition(R.anim.anim_slide_in_left, R.anim.anim_slide_out_left); } else // already created so reverse animation { onStartCount = 2; } } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); if (onStartCount > 1) { this.overridePendingTransition(R.anim.anim_slide_in_right, R.anim.anim_slide_out_right); } else if (onStartCount == 1) { onStartCount++; } } }

FirstActivity

import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class FirstActivity extends RootActivity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView tv = (TextView) findViewById(R.id.tvTitle); tv.setText("First Activity"); Button bt = (Button) findViewById(R.id.buttonNext); bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(FirstActivity.this, SecondActivity.class); startActivity(i); } }); } }

SecondActivity

import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class SecondActivity extends RootActivity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView tv = (TextView) findViewById(R.id.tvTitle); tv.setText("Second Activity"); Button bt = (Button) findViewById(R.id.buttonNext); bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(SecondActivity.this, ThirdActivity.class); startActivity(i); } }); } }

ThirdActivity

import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class ThirdActivity extends RootActivity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView tv = (TextView) findViewById(R.id.tvTitle); tv.setText("Third Activity"); Button bt = (Button) findViewById(R.id.buttonNext); bt.setText("previous"); bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finish(); } }); } }

y finalmente Manifiesto

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.transitiontest" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.transitiontest.FirstActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.example.transitiontest.SecondActivity" android:label="@string/app_name" > </activity> <activity android:name="com.example.transitiontest.ThirdActivity" android:label="@string/app_name" > </activity> </application> </manifest>



Use este xml en res/anim/

Esto es para animación de izquierda a derecha:

<set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:fromXDelta="-100%" android:toXDelta="0%" android:fromYDelta="0%" android:toYDelta="0%" android:duration="700"/> </set>

Esto es para animación de derecha a izquierda:

<set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:fromXDelta="0%" android:toXDelta="100%" android:fromYDelta="0%" android:toYDelta="0%" android:duration="700" /> </set>

En su uso de uso de codificación, de izquierda a derecha:

this.overridePendingTransition(R.anim.animation_enter, R.anim.animation_leave);

En su uso de codificación, la intención es de derecha a izquierda

this.overridePendingTransition(R.anim.animation_leave, R.anim.animation_enter);