Android 最最最简单的浏览器代码

来源:互联网 发布:单片机简介 编辑:程序博客网 时间:2024/05/16 14:18

学了WebView之后,心血来潮,写了这个简易的浏览器。虽然很简单,但是也查了不少没学到东西。大神就忽略吧。这里分享出来,给需要的人参考参考。


首先是我们的xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="#F5F5DC"    android:orientation="vertical">    <LinearLayout        android:layout_width="wrap_content"        android:orientation="horizontal"        android:layout_height="wrap_content">    <EditText        android:id="@+id/text"        android:autoText="true"        android:singleLine="true"        android:selectAllOnFocus="true"        android:layout_marginTop="20dp"        android:layout_width="300dp"        android:layout_height="40dp"        android:textColor="#FFA500"        android:hint="@string/url"        android:layout_gravity="left|top"/>    <Button        android:id="@+id/button"        android:layout_marginTop="20dp"        android:layout_width="60dp"        android:layout_height="40dp"        android:text="@string/next"        android:textColor="#FAEBD7"        android:layout_gravity="right|top" />    </LinearLayout>    <WebView        android:id="@+id/webview"        android:layout_width="match_parent"        android:layout_height="match_parent"/></LinearLayout>
代码简单,就是LinearLayou里面再套一个LinearLayou,加上一个edittext和button。下面就是一个WebView。edittext里面有些属性虽然我写了,但是没感觉出来用处。android:autoText="true"。自动补全,我感觉没有用处。android:singleLine="true"这个呢就是单行显示,也就是说,有些网址很长,我们只显示一行就行了。这个为后面的实时显示网址有用的。android:selectAllOnFocus="true"这个呢就是获取焦点,便于后面点edittext可以全选。

最后是重点啦,看看Java的代码。

package com.sorgs.administrator.webview;import android.app.Activity;import android.app.ProgressDialog;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.webkit.WebChromeClient;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity {    private String url = null;    private WebView webView;    private ProgressDialog dialog;    private EditText text;    private Button button;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Toast.makeText(this,"欢迎使用简易浏览器_by sorgs",Toast.LENGTH_SHORT).show(); //弹出欢迎        init();    }    private void init() {        webView = (WebView) findViewById(R.id.webview);        text = (EditText) findViewById(R.id.text);        button = (Button) findViewById(R.id.button);        webView.loadUrl(url);        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                String str = text.getText().toString();  //去获取text中输入的网址                url = "http://"+ str;                webView.loadUrl(url);            //设置到webView中去            }        });        //覆盖WebView默认通过第三方或者是系统浏览器打开网页的行为,使网页可以再WebView中打开        webView.setWebViewClient(new WebViewClient() {            @Override            public boolean shouldOverrideUrlLoading(WebView view, String url) {                //返回值是true的时候控制网页在WebView中去打开,如果为false调用系统浏览器或者第三方浏览器打开                view.loadUrl(url);                return true;            }//WebViewClient帮助WebView去处理一些页面控制和请求通知        });        //启用支持javaScript        WebSettings settings = webView.getSettings();        settings.setJavaScriptEnabled(true);        //WebView加载页面优先使用缓存加载        settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);        webView.setWebChromeClient(new WebChromeClient() {            @Override            public void onProgressChanged(WebView view, int newProgress) {                //newProgress 1-100之间的整数                if (newProgress == 100) {                    //网页加载完毕,关闭ProgressDialog                    closeDialo();                } else {                    //网页正在加载,打开ProgressDialog                    openDialog(newProgress);                    text.setText(webView.getUrl()); //实时显示当前网址                    text.requestFocus();           //把输入焦点放在调用这个方法的控件上                    text.setSelectAllOnFocus(true); //点击之后就被全选                }            }            private void closeDialo() {                if (dialog != null && dialog.isShowing()) {                    dialog.dismiss();                    dialog = null;                }            }            private void openDialog(int newProgress) {                if (dialog == null) {                    dialog = new ProgressDialog(MainActivity.this);                    dialog.setTitle("加载中...");                    dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);                    dialog.setProgress(newProgress);                    dialog.show();                } else {                    dialog.setProgress(newProgress);                }            }        });    }    @Override //改写物理按键——返回的逻辑    public boolean onKeyDown(int keyCode, KeyEvent event) {        if(keyCode == KeyEvent.KEYCODE_BACK){            if(webView.canGoBack()){                webView.goBack();   //返回上一页面                return true;            }else {                System.exit(0);            }        }        return super.onKeyDown(keyCode,event);    }}

代码中呢很多注释写的很详细了。这个就不在赘述了。
最后来几张效果图好啦。






最后谢谢大家的赏脸大笑大笑

0 0
原创粉丝点击