Bonjour,
Voici un petit tutoriel expliquant comment réaliser un mini navigateur web: http://a-renouard.developpez.com/tut...avigateur-web/
Toutes les remarques sont les bienvenues !
Bonjour,
Voici un petit tutoriel expliquant comment réaliser un mini navigateur web: http://a-renouard.developpez.com/tut...avigateur-web/
Toutes les remarques sont les bienvenues !
Bonjour,
ne serait-ce pas mieux, dans le OnClickListener, de créer un nouveau Thread avec le code à réaliser et le lancer, afin de libérer l'UI Thread le plus tôt possible ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 button.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { // ------------------ Modification ici --------------- new Thread(){ public void run(){ //---------------------------------------------------- //on récupère l'url présente dans l'EditText url = editText.getText().toString(); try { //on récupère le code HTML associé à l'URL que l'on a indiqué dans l'EditText pageWeb = Tutoriel7_Android.getPage(url); //on autorise le JavaScript dans la WebView webView.getSettings().setJavaScriptEnabled(true); //on charge les données récupérées dans la WebView webView.loadDataWithBaseURL("fake://not/needed", pageWeb, mimeType, encoding, ""); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } //----------------- Modification ici ---------------------- } }.start(); //-------------------------------------------------------- } } );
Tu as raison tails c'est mieux de créer un nouveau Thread !
Merci pour ta remarque intéressante !
Edit : J'ai corrigé le tuto et mis le code que tu as écrit tails !
Merci beaucoup de l'attention portée à ma remarque
Cette version me semble beaucoup plus simple. La méthode getPage() n'est plus utilisée.
On profite en plus de la gestion du cache du navigateur car on le laisse gérer la connexion. On n'a pas besoin de thread.
NOTE : Code non testé (pas de sdk sous la main...)
Cf. Doc webview et Tutorial webview
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //On récupère l'EditText, le WebView, et le Button grâce au ID editText = (EditText) findViewById(R.id.EditText); webView = (WebView) findViewById(R.id.WebView); button = (Button) findViewById(R.id.Button); //on autorise le JavaScript dans la WebView webView.getSettings().setJavaScriptEnabled(true); //On affecte un évènement au bouton button.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { //on récupère l'url présente dans l'EditText url = editText.getText().toString(); webview.setWebChromeClient(new WebChromeClient() { // TODO implémenter gestion d'erreur, progression du chargement... } //on charge la page webView.loadUrl(url); } } ); }
bonjour, comment doit je modifié le code pour relié le navigateur à une seule page, sans que l'url ne s'affiche
Il semble que ce ne soit pas conseillé de passer par un thread pour manipuler une webview :
cf : http://developer.android.com/guide/w...g.html#ThreadsIf you call methods on WebView from any thread other than your app's UI thread, it can cause unexpected results
Je comprend pas l'intérêt de la méthode getPage() sachant que la webview embarque déjà cette fonctionnalité.
Il aurait été plus intéressant de mettre en place une barre de progression par exemple et d'implémenter des contrôles du type "précédent" "suivant", ce que la webview permet très simplement.
En fait ce qui me perturbe c'est que l'utilisation d'une webview permet de s'affranchir de la complexité du httpclient et à contrario on utilisera httpclient quand on à pas besoin du rendu graphique de l'html.
Partager