¿Cómo puedo utilizar los efectos de transición de Android en la vista web?

Si alguien puede ayudarme con esto seré muy feliz. Tengo una aplicación que usa webview. La vista web carga una url y he utilizado el tutorial de Google para superar todos los otros vínculos que quiero abrir con webview también. Tengo que crear un archivo animimation en res/ y un slide_right xml y hasta ahora tan bueno. Llamo el efecto en mi actividad principal de java, pero sólo se aplica a la primera página. Lo que quiero es el efecto que se aplicará en cada página que vincula cargas en webview.

¿Puedes ayudarme con mi código?

package com.ihome;

 import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Bundle; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.webkit.WebView; import android.webkit.WebViewClient; public class IhomeActivity extends Activity { WebView mWebView; private class HelloWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Animation slideRightAnimation = AnimationUtils.loadAnimation(getBaseContext (), R.anim.slide_right); mWebView.startAnimation(slideRightAnimation); view.loadUrl(url); return true; } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { Animation slideLeftAnimation = AnimationUtils.loadAnimation(getBaseContext (), R.anim.slide_left); mWebView.startAnimation(slideLeftAnimation); mWebView.goBack(); return true; } return super.onKeyDown(keyCode, event); } /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mWebView = (WebView) findViewById(R.id.webview); mWebView.setVerticalScrollBarEnabled(false); mWebView.setHorizontalScrollBarEnabled(false); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.loadUrl("http://www.google.com/"); mWebView.setWebViewClient(new HelloWebViewClient()); 

Esto es lo mejor que puedo hacer con los apis nativos, parece que el momento no es muy correcto porque la carga de la página y la animación son asíncronas .. EDIT: actualizado, este es un poco mejor. EDIT2: Este es mi mejor intento hasta ahora, y permite al usuario darse cuenta de que la página se está cargando .. La única manera de obtener una animación semi-suave es permitir que la página de precarga, mientras que el usuario no lo ve.

 package com.adeptdev.animwebview; import android.app.Activity; import android.app.ProgressDialog; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.webkit.WebView; import android.webkit.WebViewClient; public class HelloWebViewActivity extends Activity { ProgressDialog mProgressDialog; private class HelloWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.setVisibility(View.GONE); mProgressDialog.setTitle("Loading"); mProgressDialog.show(); mProgressDialog.setMessage("Loading " + url); return false; } @Override public void onPageFinished(WebView view, String url) { mProgressDialog.dismiss(); animate(view); view.setVisibility(View.VISIBLE); super.onPageFinished(view, url); } } private void animate(final WebView view) { Animation anim = AnimationUtils.loadAnimation(getBaseContext(), android.R.anim.slide_in_left); view.startAnimation(anim); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { WebView view = (WebView) findViewById(R.id.webview); if ((keyCode == KeyEvent.KEYCODE_BACK) && view.canGoBack()) { view.goBack(); return true; } return super.onKeyDown(keyCode, event); } /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mProgressDialog = new ProgressDialog(this); WebView webView = (WebView) findViewById(R.id.webview); webView.setVerticalScrollBarEnabled(false); webView.setHorizontalScrollBarEnabled(false); webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl("http://www.google.com/"); webView.setWebViewClient(new HelloWebViewClient()); } } 
  • La URL se carga en la aplicación cromada, pero no en WebView
  • Configuración de Url a un WebView
  • Android WebView deja espacio para la barra de desplazamiento
  • WebView devuelve una ventana incorrecta.innerHeight
  • ViewPager con WebView que permite pasar y no permitir el desplazamiento de WebView
  • Hacer que la vista web de una tableta simule un pequeño dispositivo
  • Error al mostrar comentarios de Facebook en Android WebView mediante HTML local
  • Trigger o Force Redraw o Re-Render de WebView
  • WebView no se desplazará en Android 2.x
  • No vuelva a cargar el vídeo de la web en rotación
  • ¿Puedo introducir código JavaScript en las pestañas personalizadas de Chrome?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.