吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6349|回复: 22
收起左侧

[其他原创] 【原创源码】自己写的一个简单的浏览器,给需要的人参考参考

  [复制链接]
牵走天涯 发表于 2016-8-4 12:24
本帖最后由 牵走天涯 于 2016-8-4 12:25 编辑

学了WebView之后,心血来潮,写了这个简易的浏览器。虽然很简单,但是也查了不少没学到东西。大神就忽略吧。这里分享出来,给需要的人参考参考。功能简单,就不要嘲笑了。才学习嘛。这个文章也在我的CSDN上有发,吾爱是首发。

首先是我们的xml
[HTML] 纯文本查看 复制代码
<?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的代码。

[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);
    }

}

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








最后谢谢大家的赏脸
热心刷起来,谢谢!!!
这里是所有代码 需要的可以去下载呢https://yunpan.cn/c6B4pebheiBEj  访问密码 4753

免费评分

参与人数 6热心值 +6 收起 理由
xuanle6 + 1 谢谢@Thanks!
别说见过我 + 1 用心讨论,共获提升!
孟坤软件 + 1 正需要这种简易版的代码研究→_→
Cizel + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
众益科技 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
TDY-heaven + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 牵走天涯 发表于 2016-8-4 15:31
wf2zky 发表于 2016-8-4 13:24
地址栏用的是什么字体?

这是我手机的字体的问题。和代码无关哈。我是真机测试了,才敢发出来的。字体是方正康体
huishion 发表于 2016-8-4 12:46
Jum朱 发表于 2016-8-4 12:54
understand 发表于 2016-8-4 13:06
手机浏览器无爱了
gxhanzy 发表于 2016-8-4 13:11
谢谢分享!
OneOfUs 发表于 2016-8-4 13:19
不错哦,支持楼主开源。
OneOfUs 发表于 2016-8-4 13:21
前排支持了
wf2zky 发表于 2016-8-4 13:24
地址栏用的是什么字体?
landy1218 发表于 2016-8-4 13:24
谢谢分享!
johnwhite 发表于 2016-8-4 13:26
支持一个,写代码不容易
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-9-23 11:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表