viewpager usar studio medium fragments como code android android-viewpager android-animation android-transitions

android - usar - Actualizar la actividad de la fuente antes de la transición de salida



viewpager android medium (2)

Debería poder lograrlo si usa setCurrentItem en setCurrentItem en lugar de onActivityResult (en su Activity A ).

Sólo asegúrate de que:

  1. Antes de finalizar la Activity B , establezca el resultado (ya sea con setResult(int resultCode) o setResult(int resultCode, Intent data) )
  2. Llame a supportFinishAfterTransition() (o finishAfterTransition() ) en lugar de regular finish() para "cerrar" la Activity B

Para veranear:

en la Activity B :

public void close(){ Intent data = new Intent(); data.putExtra(KEY_CURRENT_ITEM, mFullscreenViewPager.getCurrentItem()); setResult(RESULT_CODE, data); supportFinishAfterTransition(); }

en la Activity A :

@Override public void onActivityReenter(int resultCode, Intent data) { super.onActivityReenter(resultCode, data); if (data.hasExtra(KEY_CURRENT_ITEM)){ mViewPager.setCurrentItem(data.getIntExtra(KEY_CURRENT_ITEM, 0), false); } }

Necesito ayuda sobre la transición entre actividades:

Tengo dos actividades A y B, y ambas tienen un ViewPager con la misma lista de imágenes. Cada página tiene un ImageView con el nombre de transitionName es igual a image_x donde x es el índice de la página.

A inicia la actividad B llamando a ActivityOptionsCompat.makeSceneTransitionAnimation y la transición de ingreso es totalmente correcta.

El problema es el siguiente: cuando cierro la actividad B, la transición de salida no inicializa el paginador de vista de la actividad A en la misma posición de B.

Cuando el usuario cierra B, este último establece la posición de la página actual en el resultado. En onActivityResult de la actividad A, llamo setCurrentItem y el comportamiento se muestra en el gif.

¿Hay alguna forma de actualizar la actividad A antes de que comience la transición de salida?


Tengo solución.

1. Crea una clase de interfaz que funcione entre ambas Actividad: demoClass.java

public class demoClass { public static demoClass instance; public demoInterface mCallback; public static demoClass getInstance() { if(instance == null) { instance = new demoClass(); } return instance; } public void setListener(demoInterface callback) { this.mCallback = callback; } public void changePage(int which) { if(this.mCallback != null) { this.mCallback.changePage(which); } } public interface demoInterface { public void changePage(int which); }

}

2. De la Actividad B , método de interfaz de llamada:

demoClass.getInstance().changePage(mFullscreenViewPager.getCurrentItem());

3. De la Actividad A , implementar la interfaz y registrar escuchar interfaz:

public class ActivityA extends Activity implements demoClass.demoInterface { ... } --------------------- demoClass.getInstance().setListener(ActivityA.this);

4. Implementar el changePage(int) en A :

@Override public void changePage(int which) { mViewPager.setCurrentItem(page); }

Explicacion

Cuando la Actividad B cambie de página, informe el evento a la interfaz demoClass.demoInterface thorugh demoClass.getInstance().changePage(index) . En última instancia, esto llamará al método changePage(int) de la Actividad A y cambiaremos el contenido de ViewPager sobre la marcha.

Resultado

Puedes consultar la salida en GIF aquí