¿Cómo buscar el contenido del sitio web y ponerlo en la forma en que queremos en el diseño de la aplicación para Android?

Su clase extraña de la pregunta que se pide de mí, pero la curiosidad es el mejor profesor y yo ansiosamente quiere saber y desarrollar este tipo de aplicación para Android.

Mi experiencia en el desarrollo de aplicaciones para Android no es tan grande, pero ahora mismo estoy usando WebView para un sitio web que es sensible a su funcionamiento, pero su tomar demasiado tiempo para cargar y no proporcionar que mucha comodidad para el usuario. Aquí está el código que tengo:

Actividad principal

package com.testWebview.deep; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Bitmap; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.Uri; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends AppCompatActivity { private WebView webview; private ProgressDialog progress; public void runTask(){ ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); if(connec!=null && (connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) || (connec.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED)){ webview = (WebView)findViewById(R.id.MainWebView); WebSettings webSettings = webview.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setLoadsImagesAutomatically(true); webSettings.setLoadWithOverviewMode(true); webSettings.setDomStorageEnabled(true); webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); webSettings.setAllowFileAccess(true); webSettings.setBuiltInZoomControls(true); webSettings.setUseWideViewPort(true); loadingC(); webview.setWebViewClient(new WebViewClient(){ @Override public void onPageStarted(WebView view, String url,Bitmap favicon){ if(!progress.isShowing()){ loadingC(); } } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { if(progress.isShowing()){progress.dismiss();} checkConnection(); webview.loadUrl("file:///android_asset/error.html"); } @Override public void onPageFinished(WebView view, String url) { if(progress.isShowing()) { progress.dismiss(); } } }); webview.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); webview.setScrollbarFadingEnabled(false); webview.setLayerType(View.LAYER_TYPE_HARDWARE, null); webview.loadUrl("http://www.bharatcoupons.com/"); } else{ checkConnection(); } } public void checkConnection(){ AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Error"); builder.setMessage("Please make sure your connected to internet!"); builder.setCancelable(false); builder.setPositiveButton("retry", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { runTask(); } }); builder.show(); } public void loadingC(){ progress = ProgressDialog.show(this, "Loading", "Please wait for a moment..."); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); runTask(); } @Override public void onBackPressed(){ if(webview.canGoBack()){ webview.goBack(); }else{ super.onBackPressed(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } private class MyAppWebViewClient extends WebViewClient{ } } 

MyAppWebViewClient

 package com.testWebview.deep; import android.content.Intent; import android.webkit.WebView; import android.webkit.WebViewClient; import android.net.Uri; public class MyAppWebViewClient extends WebViewClient{ @Override public boolean shouldOverrideUrlLoading(WebView view, String url){ if(Uri.parse(url).getHost().endsWith("bharatcoupons.com")){ return false; } Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); view.getContext().startActivity(intent); return true; } } 

El código anterior funciona bien con webview, pero su tipo de forma lenta y no profesional de desarrollar una aplicación para Android. Ahora lo que quiero hacer es buscar el contenido del sitio web y ponerlo en el marco de la aplicación que quiero. Les mostraré un ejemplo que les explicará todo lo que quería hacer.

Supongamos que mi sitio web es así: Un sitio web

¿Qué tipo de enfoque debo seguir o métodos, trucos para hacer mi aplicación como esta: Introduzca aquí la descripción de la imagen

Según mi conocimiento no es una webview que muestra directamente el contenido del sitio web en la aplicación. Al intercambiar a la izquierda oa la derecha, le mostrará el siguiente elemento. Todo el sitio web en esta aplicación pero no utiliza WebView

Ellos han hecho tal marco que está recuperando el contenido del sitio web y ponerlo en la aplicación. Y quiero hacer eso.

No quiero código, pero de dónde debo empezar, ¿Qué tipo de enfoque o técnica debo utilizar para lograr eso.

El sitio web de referencia y la aplicación que estoy tomando con fines educativos no hay otra intención detrás de él

¡Gracias por adelantado!

Enfoque 1:

Utilice un sitio web de respuesta que se ajuste automáticamente a la pantalla móvil / ficha.

Enfoque 2:

Analizar los documentos web como imágenes y texto y mostrarlos en ImageView u otros contenidos de la interfaz de usuario.

Para el análisis HTML puede utilizar una biblioteca de terceros como JSOUP

Mejor enfoque:

Hoy en día casi todas las empresas / servicios en línea utilizan una API para la comunicación entre la web y otras plataformas. Mantiene todos los datos alineados y flexibles ya que toda la información proviene de una misma fuente. Cree una API RESTful para su servicio web. Hacer llamada a la API y obtener datos en un formato JSON . Más tarde analizar la información y mostrarlo en una vista.

Por ejemplo para obtener la información de un producto específico,

Http: // your_address / shopping / v1 / get_product_info

Introduzca aquí la descripción de la imagen

El resultado en formato JSON podría ser algo como esto,

 { "error": false, "name": "ETC Solid Men's Polo Neck -Tshirt", "description": "Your pruduct description", "images": [ { "preview1": "http://yoururl.com/images/preview1" }, { "preview2": "http://yoururl.com/images/preview2" }, { "preview3": "http://yoururl.com/images/preview3" }, { "preview4": "http://yoururl.com/images/preview4" } ] } 

Un buen enfoque tiempo / trabajo / resultados es "envolver" su sitio web dentro de una simple aplicación Córdova. Por lo tanto, debe comenzar a aprender Cordova , a continuación, agregar un código css de respuesta / personalizado para el mundo móvil en su sitio (si no existe todavía) y, a continuación, fijar todo lo que no funciona correctamente en el teléfono (js / css).

Si este sitio web tiene un Api puede hacerlo con la api si tiene datos json puede conectarse a través de json y en el peor de los casos puede analizar su html en xml o json o directamente a los objetos de datos que necesita. La razón por la que este enfoque es menos recomendado es porque si cambian algo en el sitio que podría frenar su interfaz de inmediato.

Los sitios grandes suelen tener un cheque de api: Api de Amazon api de Facebook Soundcloud api

Etc

  • Android carga los datos html en las pestañas personalizadas de cromo
  • Control HTML <select> desactivado en Android WebView (en el emulador)
  • El video de YouTube no se abre en webView
  • ERROR / Web Console: Uncaught TypeError: No se puede llamar al método 'getItem' de null en http://m.youtube.com/:844
  • ¿Por qué el teclado no se mostrará en Fragmento con WebView?
  • Android PhoneGap Plugin, UI tabbar, redimensionar WebView
  • Android webview html5 vídeo autoplay no funciona en android 4.0.3
  • Cómo configurar un Referer en un androide WebView en KitKat y más
  • Cómo iniciar sesión en facebook en WebView si ya tiene acceso token de FB SDK en Android
  • Habilitar el botón Atrás en WebView
  • sipml5 está funcionando bien para el cromo y el cromo de escritorio y Android, pero es de dos vías de audio no está funcionando en crosswalk y webview nativo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.