前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >android 系统浏览器 源码-Android 最最最简单的浏览器代码

android 系统浏览器 源码-Android 最最最简单的浏览器代码

作者头像
囍楽云
发布2022-12-29 12:56:13
1.3K0
发布2022-12-29 12:56:13
举报
文章被收录于专栏:囍楽云博客

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

  首先是我们的xml

  代码简单,就是里面再套一个,加上一个和button。下面就是一个。里面有些属性虽然我写了android 系统浏览器 源码,但是没感觉出来用处。:="true"。自动补全,我感觉没有用处。:="true"这个呢就是单行显示,也就是说,有些网址很长,我们只显示一行就行了。这个为后面的实时显示网址有用的。:="true"这个呢就是获取焦点android 系统浏览器 源码,便于后面点可以全选。

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

   package com.sorgs.administrator.webview;

代码语言:javascript
复制
    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);
        }
    }

  代码中呢很多注释写的很详细了。这个就不在赘述了。

本文共 446 个字数,平均阅读时长 ≈ 2分钟

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档