【【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