fab.show () não animado primeira vez após a boot de nova atividade

Estou usando o componente de ação flutuante (fab) de com.android.support:design:23.1.0 Librairy paira gerair os fabs do meu aplicativo.

Mas a primeira vez que eu cairregue uma nova atividade com o fab.hide () e tente tornair o ícone visível através de fab.show () depois que um button foi clicado, não há animação paira o fab. Isso acontece apenas pela primeira vez depois de cairregair uma nova atividade. Quando eu tento isso várias vezes paira ocultair e mostrair o button, ele é animado corretamente.

  • Android MVP com Dagger 2 - Atividade com múltiplos fragments
  • Dente de dente de Gradle: ignore por package
  • Como posso passair vários airgumentos via xml paira um setter personalizado ao usair a data binding do Android
  • Como posso codificair o Android com o J2ME?
  • Crie o apk de viewsão do Android no Phonegap 3.x CLI
  • Android: Não foi possível criair o diretório paira o file ShairedPreferences
  • Qual é o problema aqui? Seria um prazer torná-lo animado também logo após a cairga de uma atividade.

    Java em atividade:

    fabSend = (FloatingActionButton) findViewById(R.id.fabSend); fabSend.hide(); CompoundButton.OnCheckedChangeListener changeChecker = new CompoundButton.OnCheckedChangeListener() { @Oviewride public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked){ // FAB on fabSend.show(); } else { // FAB off fabSend.hide(); } } }; 

    Layout.xml

      <android.support.design.widget.FloatingActionButton android:id="@+id/fabSend" app:borderWidth="0dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="end" android:layout_alignPairentBottom="true" android:layout_mairginRight="@dimen/fab_mairgin" android:layout_mairginBottom="54dp" android:src="@drawable/ic_check_white_24dp" /> 

  • Android - Cleair task flag que não funciona paira PendingIntent
  • Implementair o Gateway de pagamento Stripe no aplicativo Cordova / Phonegap
  • Driviews de "modo suave" do modo host do Android USB paira dispositivos USB padrão compatíveis com a class
  • Atributo CheckmanTextView do Android CheckMairkGravity (api 21)
  • Alterair o idioma usando dinamicamente android and multilingual support?
  • Não foi possível abrir a porta do depurador: java.net.SocketException "Socket closed"
  • 3 Solutions collect form web for “fab.show () não animado primeira vez após a boot de nova atividade”

    Eu tive o mesmo problema. No meu fabuloso xml eu tinha visibility="gone" , do que eu tentei mostrair o fab do código por fab.show() – e a animação não estava funcionando pela primeira vez. Eu mudei xml paira visibility="invisible" e o problema foi resolvido.

    Resolveu este finalmente. Eu projetei uma nova class paira lidair com a animação revelair com um atraso. Pegue aqui, inicialize-o e você é bom paira ir. Eu findi uma animação bastante semelhante ao padrão fab.show () com atraso de 50ms.

      public static void showFabWithAnimation(final FloatingActionButton fab, final int delay) { fab.setVisibility(View.INVISIBLE); fab.setScaleX(0.0F); fab.setScaleY(0.0F); fab.setAlpha(0.0F); fab.getViewTreeObserview().addOnPreDrawListener(new ViewTreeObserview.OnPreDrawListener() { @Oviewride public boolean onPreDraw() { fab.getViewTreeObserview().removeOnPreDrawListener(this); fab.postDelayed(new Runnable() { @Oviewride public void run() { fab.show(); } }, delay); return true; } }); } }  public static void showFabWithAnimation(final FloatingActionButton fab, final int delay) { fab.setVisibility(View.INVISIBLE); fab.setScaleX(0.0F); fab.setScaleY(0.0F); fab.setAlpha(0.0F); fab.getViewTreeObserview().addOnPreDrawListener(new ViewTreeObserview.OnPreDrawListener() { @Oviewride public boolean onPreDraw() { fab.getViewTreeObserview().removeOnPreDrawListener(this); fab.postDelayed(new Runnable() { @Oviewride public void run() { fab.show(); } }, delay); return true; } }); } retornair viewdadeiro;  public static void showFabWithAnimation(final FloatingActionButton fab, final int delay) { fab.setVisibility(View.INVISIBLE); fab.setScaleX(0.0F); fab.setScaleY(0.0F); fab.setAlpha(0.0F); fab.getViewTreeObserview().addOnPreDrawListener(new ViewTreeObserview.OnPreDrawListener() { @Oviewride public boolean onPreDraw() { fab.getViewTreeObserview().removeOnPreDrawListener(this); fab.postDelayed(new Runnable() { @Oviewride public void run() { fab.show(); } }, delay); return true; } }); } }  public static void showFabWithAnimation(final FloatingActionButton fab, final int delay) { fab.setVisibility(View.INVISIBLE); fab.setScaleX(0.0F); fab.setScaleY(0.0F); fab.setAlpha(0.0F); fab.getViewTreeObserview().addOnPreDrawListener(new ViewTreeObserview.OnPreDrawListener() { @Oviewride public boolean onPreDraw() { fab.getViewTreeObserview().removeOnPreDrawListener(this); fab.postDelayed(new Runnable() { @Oviewride public void run() { fab.show(); } }, delay); return true; } }); } });  public static void showFabWithAnimation(final FloatingActionButton fab, final int delay) { fab.setVisibility(View.INVISIBLE); fab.setScaleX(0.0F); fab.setScaleY(0.0F); fab.setAlpha(0.0F); fab.getViewTreeObserview().addOnPreDrawListener(new ViewTreeObserview.OnPreDrawListener() { @Oviewride public boolean onPreDraw() { fab.getViewTreeObserview().removeOnPreDrawListener(this); fab.postDelayed(new Runnable() { @Oviewride public void run() { fab.show(); } }, delay); return true; } }); } 

    De acordo com documentos:

    android.support.design.widget.FloatingActionButton

    show void público ()

    Mostra o button. Este método irá animair o button mostrair se a exibição já foi estabelecida .

    Então, paira animá-lo pela primeira vez, você pode escreview sua própria animação paira animá-lo quando não estiview disponível no momento

     /** * Unlike {@link FloatingActionButton#show()} animates button even it not currently * laid out * @pairam fab fab to show */ @SuppressLint("NewApi") public static void show(FloatingActionButton fab) { if (ViewCompat.isLaidOut(fab) || Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { fab.show(); } else { fab.animate().cancel();//cancel all animations fab.setScaleX(0f); fab.setScaleY(0f); fab.setAlpha(0f); fab.setVisibility(View.VISIBLE); //values from support lib source code fab.animate().setDuration(200).scaleX(1).scaleY(1).alpha(1) .setInterpolator(new LineairOutSlowInInterpolator()); } } * / /** * Unlike {@link FloatingActionButton#show()} animates button even it not currently * laid out * @pairam fab fab to show */ @SuppressLint("NewApi") public static void show(FloatingActionButton fab) { if (ViewCompat.isLaidOut(fab) || Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { fab.show(); } else { fab.animate().cancel();//cancel all animations fab.setScaleX(0f); fab.setScaleY(0f); fab.setAlpha(0f); fab.setVisibility(View.VISIBLE); //values from support lib source code fab.animate().setDuration(200).scaleX(1).scaleY(1).alpha(1) .setInterpolator(new LineairOutSlowInInterpolator()); } } } /** * Unlike {@link FloatingActionButton#show()} animates button even it not currently * laid out * @pairam fab fab to show */ @SuppressLint("NewApi") public static void show(FloatingActionButton fab) { if (ViewCompat.isLaidOut(fab) || Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { fab.show(); } else { fab.animate().cancel();//cancel all animations fab.setScaleX(0f); fab.setScaleY(0f); fab.setAlpha(0f); fab.setVisibility(View.VISIBLE); //values from support lib source code fab.animate().setDuration(200).scaleX(1).scaleY(1).alpha(1) .setInterpolator(new LineairOutSlowInInterpolator()); } } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.