una transiciones son slides que presentaciones maneja los las hacer google efectos doy diapositivas diapositiva cómo cuales como añadir animación animaciones animacion agregar android android-animation picasso

android - transiciones - cómo añadir animaciones a una diapositiva google



Error de JNI en la animación de transición de escena: la capa supera el máximo (1)

La respuesta aceptada a la segunda pregunta que vinculó explica la razón por la que ocurre esto: el límite de tamaño se aplica a toda la actividad objetivo prementida, no solo a los elementos de transición. Agregar android:transitionGroup="true" al lugar apropiado en el diseño de transición solucionará el bloqueo. No publicó su diseño en la pregunta, por lo que es difícil saber a dónde iría, pero si tiene un ScrollView u otra vista muy larga, sería un buen lugar para comenzar.

Para niveles de API antes de 21, esto no es un problema. AppCompat.startActivity() funcionará en niveles de API inferiores a 21, pero la animación de transición del elemento compartido no se ejecutará. Volverá a la transición de actividad predeterminada.

Por favor note el EDITAR en la parte inferior de la pregunta.

Tengo 2 actividades: ActivityA , ActivityB con FragmentA asociados: FragmentA , FragmentB respectivamente. ImageView v se comparte entre esos dos fragmentos.

algunos Código: Actividad A

Intent intent = new Intent(this, ActivityB.class); final ActivityOptionsCompat activityOptionsCompat = ActivityOptionsCompat. makeSceneTransitionAnimation(this, imageView, "photo"); ActivityCompat.startActivity(this, intent, activityOptionsCompat.toBundle());

ActividadB

FragmentB fragment = new FragmentB(); getFragmentManager().beginTransaction()..replace(R.id.fragment_container, fragment, TAG).addToBackStack(TAG).commit();

Fragmento B

mView = (ImageView) view.findViewById(R.id.view); ViewCompat.setTransitionName(mView, "photo);

4 de cada 5 veces está funcionando. pero cuando no funciona, aparece el error Muy informativo :

W/OpenGLRenderer﹕ Layer exceeds max. dimensions supported by the GPU (1080x10659, max=4096x4096) JNI DETECTED ERROR IN APPLICATION: JNI CallVoidMethodV called with pending exception ''java.lang.IllegalStateException'' thrown in void android.os.MessageQueue.nativePollOnce(long, int):-2

Llama a Picasso

Picasso.with(context).load(url).centerCrop().resize(width, height).noFade().into(mView);

Pocas cosas que pueden causar esto:

  1. en FragmentB posición mView se calcula dinámicamente usando ViewTreeObserver.OnGlobalLayoutListener

  2. mView extiende ImageView para crear un efecto Oval en ambos Fragmentos.

  3. el root ViewGroup es un ScrollView

Una última cosa: el Theme de ambas actividades es un niño de

<style name="Theme" parent="Theme.AppCompat.Light" <item name="android:windowContentTransitions">true</item> <item name="android:windowAllowEnterTransitionOverlap">true</item> <item name="android:windowAllowReturnTransitionOverlap">true</item> <item name="android:windowSharedElementEnterTransition">@android:transition/move</item> <item name="android:windowSharedElementExitTransition">@android:transition/move</item> </style>

--- EDITAR ---

Preguntas y respuestas similares a mi problema y otra

La respuesta resuelve el problema pero solo para API 21 . Estoy usando ActivityCompat.startActivity(...) . admite api 16 y superior, pero TransitionListener solo está disponible desde API 19 y es compatible con SceneTransition desde API 21

También android:transitionGroup="true" requiere API 21 así que ahora tengo 2 preguntas principales:

  1. ¿Por qué incluso estoy obteniendo LayerExceeds max error? Mi View compartida no es más grande que 1080x1080.
  2. ¿Cómo puedo manejar este tipo de error en la API <21 donde TransitionListener y transitionGroup no están disponibles?

Error de apilamiento

JNI DETECTED ERROR IN APPLICATION: JNI CallVoidMethodV called with pending exception ''java.lang.IllegalStateException'' thrown in void android.os.MessageQueue.nativePollOnce(long, int):-2 in call to CallVoidMethodV art/runtime/check_jni.cc:65] from void android.os.MessageQueue.nativePollOnce(long, int) art/runtime/check_jni.cc:65] "main" prio=5 tid=1 Runnable art/runtime/check_jni.cc:65] | group="main" sCount=0 dsCount=0 obj=0x72fb6000 self=0xb4827800 art/runtime/check_jni.cc:65] | sysTid=6497 nice=0 cgrp=default sched=0/0 handle=0xb6f83bec art/runtime/check_jni.cc:65] | state=R schedstat=( 1181860917 459124594 2277 ) utm=100 stm=18 core=2 HZ=100 art/runtime/check_jni.cc:65] | stack=0xbe27d000-0xbe27f000 stackSize=8MB art/runtime/check_jni.cc:65] | held mutexes= "mutator lock"(shared held) art/runtime/check_jni.cc:65] native: #00 pc 00004e64 /system/lib/libbacktrace_libc++.so (UnwindCurrent::Unwind(unsigned int, ucontext*)+23) art/runtime/check_jni.cc:65] native: #01 pc 00003665 /system/lib/libbacktrace_libc++.so (Backtrace::Unwind(unsigned int, ucontext*)+8) art/runtime/check_jni.cc:65] native: #02 pc 00256429 /system/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, char const*, art::mirror::ArtMethod*)+84) art/runtime/check_jni.cc:65] native: #03 pc 00238fe7 /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const+158) art/runtime/check_jni.cc:65] native: #04 pc 000b191b /system/lib/libart.so (art::JniAbort(char const*, char const*)+610) art/runtime/check_jni.cc:65] native: #05 pc 000b2055 /system/lib/libart.so (art::JniAbortF(char const*, char const*, ...)+68) art/runtime/check_jni.cc:65] native: #06 pc 000b530f /system/lib/libart.so (art::ScopedCheck::ScopedCheck(_JNIEnv*, int, char const*)+1346) art/runtime/check_jni.cc:65] native: #07 pc 000bd6f7 /system/lib/libart.so (art::CheckJNI::CallVoidMethodV(_JNIEnv*, _jobject*, _jmethodID*, std::__va_list)+42) art/runtime/check_jni.cc:65] native: #08 pc 0006244b /system/lib/libandroid_runtime.so (???) art/runtime/check_jni.cc:65] native: #09 pc 000760c5 /system/lib/libandroid_runtime.so (android::NativeDisplayEventReceiver::dispatchVsync(long long, int, unsigned int)+40) native: #10 pc 0007628d /system/lib/libandroid_runtime.so (android::NativeDisplayEventReceiver::handleEvent(int, int, void*)+80) native: #11 pc 00012545 /system/lib/libutils.so (android::Looper::pollInner(int)+484) native: #12 pc 000125ed /system/lib/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+92) native: #13 pc 00081709 /system/lib/libandroid_runtime.so (android::NativeMessageQueue::pollOnce(_JNIEnv*, int)+22) native: #14 pc 000b3863 /data/dalvik-cache/arm/system@[email protected] (Java_android_os_MessageQueue_nativePollOnce__JI+102) at android.os.MessageQueue.nativePollOnce(Native method) at android.os.MessageQueue.next(MessageQueue.java:143) at android.os.Looper.loop(Looper.java:122) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke!(Native method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) Fatal signal 11 (SIGSEGV), code 1, fault addr 0xfffffff0 in tid 6497