標籤:inpu ide http put -- cas 問題 setting loading
我們首先將自製的瀏覽器做到以下功能:
點選連結能夠跳轉網頁;
能夠返回原來的網頁;
能夠判斷是否這是最先瀏覽的網頁,如果按兩次back鍵就退出。
通過輸入框輸入網址,能夠訪問對應的網頁。
我們先對局部代碼講解,我會在最後公布完整代碼
首先載入網頁JavaScript必須能夠支援
WebSettings ws = web.getSettings(); //是否允許指令碼支援 ws.setJavaScriptEnabled(true);
然後我們必須對WebView添加WebViewClient,只有這樣載入網頁時使用的是我們自己做的WebVIew,記得view.loadUrl(url);這代碼必須要,這是我們點選連結跳轉網頁的代碼
web.setWebViewClient(wvc); WebViewClient wvc = new WebViewClient(){ public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); et_url.setText(url); return false; }; };
還有這函數,它是為了防止輸入框輸入的網址不完整導致無法載入網頁
private void conn(String urlStr){ String url = ""; if(urlStr.contains("http://")){ url = urlStr; }else{ url = "http://"+urlStr; } web.loadUrl(url); }
還有就是back鍵按下兩次退出,其實這個有問題,如果我們跳轉了一次網頁,然後按下back鍵回到了初始頁面,然後再按下一次back鍵就會退出,這個我做的不好,這個可以通過記錄按下back鍵的兩次時間,如果時間過短就可以退出,這樣就行了。
我這裡是為了顯示web.canGoBack()和web.goBack()的功能,這兩個函數第一個能夠判斷是否有返回的網頁,第二個是返回上一個網頁。
public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode==KeyEvent.KEYCODE_BACK||web.canGoBack()){ web.goBack(); if(!web.canGoBack()){ if(isExit){ return super.onKeyDown(keyCode, event); } isExit = true; Toast.makeText(this, "再按一次退出", Toast.LENGTH_SHORT).show(); }else{ isExit = false; } } return true; }
好了講完了,我們上完整代碼
public class MainActivity extends Activity implements View.OnClickListener { private EditText et_url; private Button btn_visit; private WebView web; private boolean isExit; private String homeStr = "http://www.baidu.com"; //------------------------------------------- public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.main); init(); } //------------------------------------------- /** * 基本資料初始化 */ private void init(){ isExit = false; et_url = (EditText)findViewById(R.id.et_url); et_url.setText(homeStr); btn_visit = (Button)findViewById(R.id.btn_visit); web = (WebView)findViewById(R.id.web); WebSettings ws = web.getSettings(); //是否允許指令碼支援 ws.setJavaScriptEnabled(true); web.setWebViewClient(wvc); btn_visit.setOnClickListener(this); conn(et_url.getText().toString()); } //------------------------------------------- WebViewClient wvc = new WebViewClient(){ public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); et_url.setText(url); return false; }; }; //------------------------------------------- /** * 訪問url * @param urlStr */ private void conn(String urlStr){ String url = ""; if(urlStr.contains("http://")){ url = urlStr; }else{ url = "http://"+urlStr; } web.loadUrl(url); } //------------------------------------------- public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode==KeyEvent.KEYCODE_BACK||web.canGoBack()){ web.goBack(); if(!web.canGoBack()){ if(isExit){ return super.onKeyDown(keyCode, event); } isExit = true; Toast.makeText(this, "再按一次退出", Toast.LENGTH_SHORT).show(); }else{ isExit = false; } } return true; } //------------------------------------------- public void onClick(View v) { switch (v.getId()) { case R.id.btn_visit: conn(et_url.getText().toString()); break; } }
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ScrollView android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content"> <LinearLayout android:id="@+id/layout" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="10dp"> <EditText android:id="@+id/et_url" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:inputType="textUri" android:singleLine="true" android:layout_margin="10dp"/> <Button android:id="@+id/btn_visit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="10dp" android:text="visit" android:textSize="15dp" /> </LinearLayout> <WebView android:id="@+id/web" android:layout_width="fill_parent" android:layout_height="fill_parent"/> </LinearLayout> </ScrollView></LinearLayout>
<uses-permission android:name="android.permission.INTERNET"/>
再見
Android 自製瀏覽器 一 能夠跳轉連結並返回