admin 管理员组文章数量: 887007
学了WebView之后,心血来潮,写了这个简易的浏览器。虽然很简单,但是也查了不少没学到东西。大神就忽略吧。这里分享出来,给需要的人参考参考。
首先是我们的xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android/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);
}
}
代码中呢很多注释写的很详细了。这个就不在赘述了。
最后来几张效果图好啦。
最后谢谢大家的赏脸
版权声明:本文标题:Android 最最最简单的浏览器代码 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1729174977h1327161.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论