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
- Android 最最最简单的浏览器代码
- 最最最简单的分页
- 最最最简单的计算器
- 最最简单的菜单代码
- XUtils3框架最最最简单的使用
- 最最最简单的C++缓存实现
- 最最最简单的URL聚类
- android AIDL 入门,最最简单的例子
- 判断是否为IE浏览器,最最简单的方法
- Fresco最最最简单使用
- Fresco最最最简单使用
- Fresco最最最简单使用
- Fresco最最最简单使用
- Fresco最最最简单使用
- socket实现最最最简单的http请求的数据
- Unity3d Action的最最最简单的使用
- 最最最简单的C#入门!!!(一)工欲善其事,必先利其器!
- 史上最最最简单的MVP教程
- 获取IP地址
- sessionID的理解
- urllib2函数功能表
- Mac下运行svn update报错"Checksum mismatch while updating"
- 内部类总结
- Android 最最最简单的浏览器代码
- 自定义日历控件,可以根据需求定制属于自己的日历
- 关于闭包的理解
- Android OOM 问题整理
- poj 1125 Floyd算法求任意两点间的最短路
- jQuery 的Ajax使用
- Longest Increasing Subsequence
- 封装的弹出视图的View
- BOOL 值在 debug 和 release 模式下初始化不一样!!!