¿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?
- WebView Android "tel:" enlaces muestran página web no encontrada
- Teclado Android que se superpone a los campos de entrada, la vista no se desplaza automáticamente
- ¿Cuál es la diferencia entre LOAD_DEFAULT y LOAD_NORMAL para WebSettings?
- WebView no se muestra correctamente
- Vista web de Android, cargando archivo javascript en la carpeta de activos
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());
- ¿Cuál es la diferencia entre Html.escapeHtml y TextUtils.htmlEncode de Android? ¿Cuándo debo usar uno u otro?
- ¿Cómo utilizar WebView para mostrar páginas html en modo lector de libros electrónicos?
- Subir una imagen de cámara o galería en WebView
- Cómo reemplazar la selección de texto predeterminada de android webview os 4.1+?
- Cargando HTML local con $ .load
- Iniciar animación en carga de página, detener en página cargada
- ¿Hay alguna manera de interceptar JavaScript activado URL en webview?
- ¿Existe un límite de longitud de la clave (cadena) en el objeto JS?
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()); } }
- Error: spawn EACCES mientras que la construcción iónica android en ubuntu 14.04
- Emulator-x86.exe ha dejado de funcionar