中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android開發如何使用WebView打造web?app

發布時間:2022-03-07 09:12:37 來源:億速云 閱讀:174 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“Android開發如何使用WebView打造web app”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Android開發如何使用WebView打造web app”這篇文章吧。

代碼如下

public class MainActivity extends Activity{
    private WebView webview;
    private Handler handler;
    private ProgressDialog pd;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        initWebView();
    }
    /**
     * 初始化WebView容器
     */
    public void initWebView() {
        //實例化WebView對象
        webview = new WebView(this);
        handler = new Handler() {
            public void handleMessage(Message msg) {//定義一個Handler,用于處理下載線程與UI間通訊
                if (!Thread.currentThread().isInterrupted()) {
                    switch (msg.what) {
                        case 0:
                            pd.show();//顯示進度對話框
                            break;
                        case 1:
                            pd.hide();//隱藏進度對話框,不可使用dismiss()、cancel(),否則再次調用show()時,顯示的對話框小圓圈不會動。
                            break;
                    }
                }
                super.handleMessage(msg);
            }
        };
        //設置WebViewClient
        webview.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;//如果不需要其他對點擊鏈接事件的處理返回true,否則返回false
            }
            @Override
            public void onPageFinished(WebView view, String url) {
                if (!webview.getSettings().getLoadsImagesAutomatically()) {
                    webview.getSettings().setLoadsImagesAutomatically(true);
                }
            }
        });
        webview.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onProgressChanged(WebView view, int progress) {
                pd.setMessage("數據載入中("+progress+"%),請稍候!");
                if (progress == 100) {
                    handler.sendEmptyMessage(1);//如果全部載入,隱藏進度對話框
                }
                MainActivity.this.setProgress(progress);
            }
        });
        pd = new ProgressDialog(MainActivity.this);
        pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        handler.sendEmptyMessage(0);
        WebSettings webSettings = webview.getSettings();
        webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//優先使用緩存的內容
        webSettings.setUseWideViewPort(true);//設定支持網頁viewport
        webSettings.setJavaScriptEnabled(true);//設置WebView屬性,能夠執行Javascript腳本
//        webSettings.setSupportZoom(true);//支持縮放
//        webSettings.setBuiltInZoomControls(true);// 設置顯示縮放按鈕
//        setZoomControlGone(webview);
        webSettings.supportMultipleWindows();  //多窗口
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true); //支持通過JS打開新窗口
        webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);//禁止左右滾動
        webview.requestFocusFromTouch();//支持獲取手勢焦點
        webview.setHorizontalScrollBarEnabled(false);//水平不顯示滾動條
        webview.setVerticalScrollbarOverlay(true);
        getWindow().requestFeature(Window.FEATURE_PROGRESS);//設置窗口風格為進度條
        //告訴WebView先不要自動加載圖片,等頁面finish后再發起圖片加載
        if (Build.VERSION.SDK_INT >= 19) {
            webview.getSettings().setLoadsImagesAutomatically(true);
        } else {
            webview.getSettings().setLoadsImagesAutomatically(false);
        }
        //加載需要顯示的網頁
        webview.loadUrl("http://www.kailing.pub/juanmei/");

        //設置Web視圖
        setContentView(webview);
    }
    //實現放大縮小控件隱藏
    public void setZoomControlGone(View view) {
        Class classType;
        Field field;
        try {
            classType = WebView.class;
            field = classType.getDeclaredField("mZoomButtonsController");
            field.setAccessible(true);
            ZoomButtonsController mZoomButtonsController = new ZoomButtonsController(view);
            mZoomButtonsController.getZoomControls().setVisibility(View.GONE);
            try {
                field.set(view, mZoomButtonsController);
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        } catch (SecurityException e) {
            e.printStackTrace();
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        }
    }
    //設置回退
    //覆蓋Activity類的onKeyDown(int keyCoder,KeyEvent event)方法
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
            webview.goBack();
            return true;
        } else if (keyCode == KeyEvent.KEYCODE_BACK) {
            ConfirmExit();//按了返回鍵,但已經不能返回,則執行退出確認
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    /**
     * 退出確認框
     */
    public void ConfirmExit() {
        AlertDialog.Builder ad = new AlertDialog.Builder(MainActivity.this);
        ad.setTitle("退出");
        ad.setMessage("是否退出娟妹美甲坊?");
        ad.setPositiveButton("是", new DialogInterface.OnClickListener() {//退出按鈕
            @Override
            public void onClick(DialogInterface dialog, int i) {
                // TODO Auto-generated method stub
                MainActivity.this.finish();//關閉activity
                System.exit(0);
            }
        });
        ad.setNegativeButton("否", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int i) {
                //不退出不用執行任何操作
            }
        });
        ad.show();//顯示對話框
    }
    // 繼承GestureListener,重寫left和right方法,
    private class MyGestureListener extends GestureListener {
        public MyGestureListener(Context context) {
            super(context);
        }
        @Override
        public boolean left() {
            webview.goForward();
            return super.left();
        }
        @Override
        public boolean right() {
            webview.goBack();
            return super.right();
        }
    }
}

以上是“Android開發如何使用WebView打造web app”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

岢岚县| 安图县| 怀仁县| 松溪县| 广丰县| 方正县| 乌拉特后旗| 青龙| 枣庄市| 灯塔市| 恭城| 通许县| 镇康县| 昌图县| 武义县| 和平县| 石泉县| 温宿县| 贡山| 开化县| 南城县| 安乡县| 灵川县| 宜君县| 蓬安县| 崇州市| 秭归县| 宁安市| 元氏县| 四子王旗| 故城县| 二连浩特市| 资兴市| 台前县| 海林市| 同仁县| 荆州市| 苏尼特左旗| 辽宁省| 嘉义县| 惠州市|