[android] WebView自定义浏览器详解手机开发

在布局文件中添加<EditText/><Button/>控件,

在布局文件中添加<WebView/>控件

 

Activity中获取WebView对象

调用WebView对象的loadUrl()方法,参数:String路径

添加访问网络的权限android.permission.INTERNET

调用WebView对象的getSettings()方法,获取到WebSettings设置对象

调用WebSettings对象的setSupportZoom()方法,设置支持缩放,参数:布尔值

调用WebSettings对象的setBuiltInZoomControls(),设置缩放控件,参数:布尔值、

调用WebView对象的setWebViewClient()方法,设置客户端防止链接打开系统浏览器,参数:WebViewClient对象

 

监听后退键,返回上一界面

重写ActivityonKeyDown()方法,参数传递进来int键盘码,KeyEvent对象

如果键盘码等于KeyEvent.KEYCODE_BACK并且当前WebView对象有很多页能后退,调用WebView对象的canGoBack()方法

调用WebView对象的goBack()方法,页面后退

 

设置菜单键,重写onCreateOptionsMenu()方法,传递进来Menu对象

调用Menu对象的addSubMenu()方法,添加菜单,参数:组id,条目id,排序,标题

添加刷新,后退,前进

 

监听小菜单点击事件

重写onOptionsItemSelected()方法,传递进来MenuItem对象

switch判断一下MenuItem对象的getOrder(),对应上面的排序

页面刷新,调用WebView对象的reload()方法

页面后退,先调用WebView对象的canGoBack()方法,判断是否能后退,调用goBack()方法后退

页面前进,调用WebView对象的canGoForward()方法,判断是否能前进,调用goForward()方法前进

 

页面loading

获取ProgressDialog对象,new出来,参数:上下文

调用ProgressDialog对象的setMessage()方法,参数:文本

调用WebView对象的setWebChromeClient()方法,参数:WebViewClient对象,

匿名内部类继承WebViewClient类,重写onPageStarted()方法和onPageFinshed()方法

onPageStarted()方法内

调用ProgressDialog对象的show()方法

onPageFinshed()方法内

调用ProgressDialog对象的dismiss()方法

 

package com.tsh.mywebview; 
 
import android.app.Activity; 
import android.app.ProgressDialog; 
import android.graphics.Bitmap; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.Window; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
 
public class MainActivity extends Activity { 
    private WebView webview; 
    private ProgressDialog pd; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        requestWindowFeature(Window.FEATURE_NO_TITLE); 
        setContentView(R.layout.activity_main); 
         
        pd=new ProgressDialog(this); 
        pd.setMessage("正在加载..."); 
         
         
        //webview的简单设置 
        webview=(WebView) findViewById(R.id.wv_internet); 
        webview.loadUrl("https://www.baidu.com"); 
        WebSettings websettings=webview.getSettings(); 
        websettings.setSupportZoom(true); 
        websettings.setBuiltInZoomControls(true); 
        webview.setWebViewClient(new WebViewClient(){ 
            @Override 
            public void onPageStarted(WebView view, String url, Bitmap favicon) { 
                pd.show(); 
            } 
            @Override 
            public void onPageFinished(WebView view, String url) { 
                pd.dismiss(); 
            } 
        }); 
         
    } 
    //后退键 
    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
        if(keyCode==KeyEvent.KEYCODE_BACK&&webview.canGoBack()){ 
            webview.goBack(); 
            return true; 
        } 
        return super.onKeyDown(keyCode, event); 
    } 
    //菜单键 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
        menu.add(0, 0, 0, "刷新"); 
        menu.add(0, 0, 1, "后退"); 
        menu.add(0, 0, 2, "前进"); 
        return super.onCreateOptionsMenu(menu); 
    } 
    //菜单点击事件 
    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
        switch (item.getOrder()) { 
        case 0: 
            webview.reload(); 
            break; 
        case 1: 
            if(webview.canGoBack()){ 
                webview.goBack(); 
            } 
            break; 
        case 2: 
            if(webview.canGoForward()){ 
                webview.goForward(); 
            } 
            break; 
        } 
        return super.onOptionsItemSelected(item); 
    } 
 
}

 

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/5408.html

(0)
上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐

发表回复

登录后才能评论