【【Android开发】Android Studio中进行简单的WebView构建浏览器开发2
上一篇博客《【Android开发】Android Studio中进行简单的WebView构建浏览器开发1》搭建了简单的浏览器。本篇博客,将增加一个文本输入框,作为网址或待搜索内容的输入框,并且增加一个搜索按钮。
第1步:在上一篇博客的基础上,修改activity_main.xml
- 增加文本输入框
- 增加搜索按钮
<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<EditText
android:id="@+id/myet"
android:layout_width="302dp"
android:layout_height="55dp" />
<Button
android:id="@+id/mybt"
android:layout_width="107dp"
android:layout_height="55dp"
android:text="搜索" />
</LinearLayout>
<WebView
android:id="@+id/myweb"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</TableLayout>
新的界面如下图:
第2步:在MainActivity.java中增加网址判断函数
import新的包
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
定义网址判断函数
使用正则表达式判断字符串是否为网址:
/**
* 判断字符串是否为URL
* @param urls 需要判断的String类型url
* @return true:是URL;false:不是URL
*/
public static boolean isHttpUrl(String urls) {
boolean isurl = false;
String regex = "(((https|http)?://)?([a-z0-9]+[.])|(www.))"
+ "\\w+[.|\\/]([a-z0-9]{0,})?[[.]([a-z0-9]{0,})]+((/[\\S&&[^,;\u4E00-\u9FA5]]+)+)?([.][a-z0-9]{0,}+|/?)";//设置正则表达式
Pattern pat = Pattern.compile(regex.trim());//对比
Matcher mat = pat.matcher(urls.trim());
isurl = mat.matches();//判断是否匹配
if (isurl) {
isurl = true;
}
return isurl;
}
修改onCreate函数
- 绑定控件代码增加EditText控件与Button控件;
- 添加按钮的监听函数.setOnClickListener;
- 在onClick函数中分别判断,当搜索按钮点下时,文本输入框是否为空/文本输入框是否输入的为网址。
- 需要注意的是,百度搜索只需要使用以下代码即可实现:
String url = "http://www.baidu.com/baidu?tn=02049043_69_pg&le=utf-8&word=" + ed.getText().toString();
mw.loadUrl(url);
完整的onCreate函数如下
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获得控件
final WebView mw = (WebView) findViewById(R.id.myweb);
final EditText ed = (EditText) findViewById(R.id.myet);
Button bt = (Button) findViewById(R.id.mybt);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 调用成员函数访问网页,加载资源
String str = ed.getText().toString();
if (str.equals("")) {
mw.loadUrl("https://www.baidu.com/");
Log.i("输入的网址", "https://www.baidu.com/" + "\n");
} else {
// 判断字符串是否为网址形式
if (isHttpUrl(str)) {
// 如果为网址形式则如下:
mw.loadUrl(str);
Log.i("输入的网址", str + "\n");
} else {
// 如果为文本,则启用百度搜索,并且返回搜索结果
String url = "http://www.baidu.com/baidu?tn=02049043_69_pg&le=utf-8&word=" + ed.getText().toString();
mw.loadUrl(url);
}
}
}
});
mw.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 重写WebViewClient的shouldOverrideUrlLoading()方法
//使用WebView加载显示url
view.loadUrl(url);
//返回true
return true;
}
});
}
最终实现如下图所示的浏览器:
- 输入文本,点击搜索
- 输入网址,点击搜索
附件
完整的程序下载请点击:https://download.csdn.net/download/m0_37201243/12536708
【作者简介】陈艺荣,男,目前在华南理工大学电子与信息学院广东省人体数据科学工程技术研究中心攻读博士,担任IEEE Access、IEEE Photonics Journal的审稿人。两次获得美国大学生数学建模竞赛(MCM)一等奖,获得2017年全国大学生数学建模竞赛(广东赛区)一等奖、2018年广东省大学生电子设计竞赛一等奖等科技竞赛奖项,主持一项2017-2019年国家级大学生创新训练项目获得优秀结题,参与两项广东大学生科技创新培育专项资金、一项2018-2019年国家级大学生创新训练项目获得良好结题,发表SCI论文4篇,授权实用新型专利8项,受理发明专利13项。
我的主页
我的Github
我的CSDN博客
我的Linkedin