亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

webview進度條設置之WebChromeClient常用API與功能使用詳解

2019-11-09 14:13:26
字體:
來源:轉載
供稿:網友

轉載自原文地址

0. 寫在前面

在使用這個WebChromeClient設置進入條有一點要注意,因為這進度加載不止一種樣式,我們設置PRogress時,這個控件默認的style是那種轉圈的,不仔細看可能看不清,以為沒設置上,所以我們一般可以改變這個控件的樣式,一般都是這種最經典的,就是經度條,代碼就是在progress中加一條style屬性。就這點要注意。
 style="?android:attr/progressBarStyleHorizontal" 

在WebView的開發過程中當你需要使用到一些高級功能可以通過設置WebChromeClient從而來輔助WebView處理 javaScript 的對話框、網站圖標、網站title、加載進度等。

WebChromeClient常用的API方法
1.通知應用程序當前網頁加載的進度
12
@Overridepublic void onProgressChanged(WebView view, int newProgress)
2.獲取網頁title標題
12
@Overridepublic void onReceivedTitle(WebView view, String title)

獲取標題的時間主要取決于網頁前段設置標題的位置,一般設置在頁面加載前面,可以較早調用到這個函數

3.網頁中有H5播放Flash video的時候按下全屏按鈕將會調用到這個方法,一般用作設置網頁播放全屏操作
12
@Overridepublic void onShowCustomView(View view, CustomViewCallback callback)

對應的取消全屏方法

12
@Overridepublic void onHideCustomView()

WebView下載監聽

通過設置webview下載監聽進而監聽網頁下載

12345
mWebView.setDownloadListener(new DownloadListener() {    @Override    public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {    }});

一般可在downloadStart 處進行下載處理

WebChromeClient高級功能實現
1.讓你的webview支持File Input 標簽

在Android 5.0 API 21后 借助新的 onShowFileChooser() 方法,您現在不但可以在 WebView 中使用輸入表單字段,而且可以啟動文件選擇器從 Android 設備中選擇圖片和文件

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback,                                 WebChromeClient.FileChooserParams fileChooserParams) {    if (mFilePathCallback != null) {        mFilePathCallback.onReceiveValue(null);    }    mFilePathCallback = filePathCallback;    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {        // Create the File where the photo should go        File photoFile = null;        try {            photoFile = createImageFile();            takePictureIntent.putExtra("PhotoPath", mCameraPhotoPath);        } catch (IOException ex) {            // Error occurred while creating the File            Log.e(TAG, "Unable to create Image File", ex);        }        // Continue only if the File was successfully created        if (photoFile != null) {            mCameraPhotoPath = "file:" + photoFile.getAbsolutePath();            takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,                    Uri.fromFile(photoFile));        } else {            takePictureIntent = null;        }    }    Intent contentSelectionIntent = new Intent(Intent.ACTION_GET_CONTENT);    contentSelectionIntent.addCategory(Intent.CATEGORY_OPENABLE);    contentSelectionIntent.setType("image/*");    Intent[] intentArray;    if (takePictureIntent != null) {        intentArray = new Intent[]{takePictureIntent};    } else {        intentArray = new Intent[0];    }    Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER);    chooserIntent.putExtra(Intent.EXTRA_INTENT, contentSelectionIntent);    chooserIntent.putExtra(Intent.EXTRA_TITLE, "Image Chooser");    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray);    startActivityForResult(chooserIntent, INPUT_FILE_REQUEST_CODE);    return true;}

在選擇完圖片后回調onActivityResult 獲取圖片

12345678910111213141516171819202122232425262728
@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) {    if (requestCode != INPUT_FILE_REQUEST_CODE || mFilePathCallback == null) {        super.onActivityResult(requestCode, resultCode, data);        return;    }    Uri[] results = null;    // Check that the response is a good one    if (resultCode == Activity.RESULT_OK) {        if (data == null) {            // If there is not data, then we may have taken a photo            if (mCameraPhotoPath != null) {                results = new Uri[]{Uri.parse(mCameraPhotoPath)};            }        } else {            String dataString = data.getDataString();            if (dataString != null) {                results = new Uri[]{Uri.parse(dataString)};            }        }    }    mFilePathCallback.onReceiveValue(results);    mFilePathCallback = null;    return;}

2.支持全屏視頻播放

設置webview視頻未播放時默認顯示占位圖

123456789
@Overridepublic Bitmap getDefaultVideoPoster() {    if(getActivity() == null) {        return null;    }    return BitmapFactory.decodeResource(getActivity().getapplicationContext().getResources(),            R.drawable.video_poster);}

視頻播放全屏時調用

12345678910111213141516171819202122232425262728293031323334
@Overridepublic void onShowCustomView(View view,                             WebChromeClient.CustomViewCallback callback) {    // if a view already exists then immediately terminate the new one    if (mCustomView != null) {        onHideCustomView();        return;    }    // 1. Stash the current state    mCustomView = view;    mOriginalSystemUiVisibility = getActivity().getWindow().getDecorView().getSystemUiVisibility();    mOriginalOrientation = getActivity().getRequestedOrientation();    // 2. Stash the custom view callback    mCustomViewCallback = callback;    // 3. Add the custom view to the view hierarchy    FrameLayout decor = (FrameLayout) getActivity().getWindow().getDecorView();    decor.addView(mCustomView, new FrameLayout.LayoutParams(            ViewGroup.LayoutParams.MATCH_PARENT,            ViewGroup.LayoutParams.MATCH_PARENT));    // 4. Change the state of the window    getActivity().getWindow().getDecorView().setSystemUiVisibility(            View.SYSTEM_UI_FLAG_LAYOUT_STABLE |                    View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |                    View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |                    View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |                    View.SYSTEM_UI_FLAG_FULLSCREEN |                    View.SYSTEM_UI_FLAG_IMMERSIVE);    getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);}

視頻取消全屏時候調用

1234567891011121314151617
@Overridepublic void onHideCustomView() {    // 1. Remove the custom view    FrameLayout decor = (FrameLayout) getActivity().getWindow().getDecorView();    decor.removeView(mCustomView);    mCustomView = null;    // 2. Restore the state to it's original form    getActivity().getWindow().getDecorView()            .setSystemUiVisibility(mOriginalSystemUiVisibility);    getActivity().setRequestedOrientation(mOriginalOrientation);    // 3. Call the custom view callback    mCustomViewCallback.onCustomViewHidden();    mCustomViewCallback = null;}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩亚洲系列| 久久成人亚洲精品| 这里只有精品在线播放| 97婷婷大伊香蕉精品视频| 国产精品视频网址| 国产精品视频午夜| 狠狠爱在线视频一区| 久久亚洲精品国产亚洲老地址| 日韩福利在线播放| 在线日韩欧美视频| 亚洲成人激情在线| 欧美与欧洲交xxxx免费观看| 亚洲成人网在线观看| 亚洲精品456在线播放狼人| 亚洲自拍偷拍网址| 亚洲成人av中文字幕| 浅井舞香一区二区| www.日韩.com| 北条麻妃一区二区三区中文字幕| 91成人天堂久久成人| 欧美wwwwww| 亚洲老头同性xxxxx| 欧美贵妇videos办公室| 国产久一一精品| 国产视频丨精品|在线观看| 日韩亚洲欧美中文高清在线| 91在线免费观看网站| 91在线直播亚洲| 久久精品国产免费观看| 免费91麻豆精品国产自产在线观看| 久久伊人精品一区二区三区| 欧美孕妇毛茸茸xxxx| 亚洲女成人图区| 国产亚洲精品va在线观看| 国产精品黄视频| 欧美美女操人视频| 68精品久久久久久欧美| 国产婷婷97碰碰久久人人蜜臀| 亚洲精品国精品久久99热| 欧美精品18videos性欧美| 韩日精品中文字幕| 亚洲人成77777在线观看网| 国产伦精品一区二区三区精品视频| 日韩av成人在线| 欧美国产一区二区三区| 亚洲娇小xxxx欧美娇小| 亚洲第一级黄色片| 国产成人精品免费视频| 国产成人一区二区三区| 国产精品成人观看视频国产奇米| 韩国福利视频一区| 日本久久中文字幕| 91精品视频在线免费观看| 日韩欧美在线观看视频| 成人精品视频在线| 国产精品亚洲аv天堂网| 91成人在线观看国产| 国产亚洲xxx| 欧美激情videoshd| 国产一区二区丝袜高跟鞋图片| 欧美成人性生活| 亚洲香蕉伊综合在人在线视看| 一区二区三区视频观看| 全色精品综合影院| 成人妇女免费播放久久久| 97在线精品视频| 国产精品九九久久久久久久| 97久久超碰福利国产精品…| 久久视频这里只有精品| 在线播放日韩av| 久久成人精品视频| 久久精品国产精品亚洲| 亚洲风情亚aⅴ在线发布| 午夜精品久久久久久久久久久久| 欧美成人在线免费| 另类美女黄大片| 久久福利网址导航| 久久97精品久久久久久久不卡| 欧美成人一二三| 国内精久久久久久久久久人| 亚洲小视频在线| 欧美激情xxxxx| 亚洲国产精品久久| 亚洲国内精品在线| 国产精品美女主播| 91精品久久久久久| 成人在线视频网站| 欧美一区二区三区四区在线| 一本色道久久88亚洲综合88| 69久久夜色精品国产69乱青草| 国产精品吹潮在线观看| 日韩一区av在线| 久久久久久久999精品视频| 亚洲精品国产拍免费91在线| 日本高清久久天堂| 精品国内自产拍在线观看| 欧美大片在线看免费观看| 久久男人资源视频| 亚洲欧美日韩一区在线| 91国内免费在线视频| 日韩亚洲精品视频| 欧美成人精品不卡视频在线观看| 日本亚洲精品在线观看| 精品国产一区二区三区在线观看| 国产香蕉一区二区三区在线视频| 久久国产精品久久久久久久久久| 欧美一级bbbbb性bbbb喷潮片| 日韩亚洲成人av在线| 久久精品国产亚洲精品| 成人免费网视频| 欧美一性一乱一交一视频| 欧美美女15p| 日韩中文视频免费在线观看| 亚洲欧美资源在线| 亚洲另类激情图| 在线日韩精品视频| 日韩理论片久久| 欧美成人精品在线视频| 国产成人一区三区| 日韩亚洲在线观看| 久久久av电影| 日本国产高清不卡| 欧美在线www| 韩国精品美女www爽爽爽视频| 色婷婷成人综合| 欧美国产日韩一区二区在线观看| 91网站在线免费观看| 激情久久av一区av二区av三区| 欧美精品中文字幕一区| 在线成人激情视频| 亚洲免费伊人电影在线观看av| 久久精品福利视频| 国模私拍一区二区三区| 精品露脸国产偷人在视频| 992tv成人免费视频| 少妇精69xxtheporn| 国产欧美 在线欧美| 亚洲欧美日韩中文在线| 日韩高清欧美高清| 欧美日韩中文字幕日韩欧美| 国产成人av网址| 国产日韩在线观看av| 亚洲精品日韩激情在线电影| 亚洲欧美日韩高清| 一本色道久久88综合日韩精品| 国产成人综合精品| 久久久久久久国产精品视频| 91精品国产成人| 国产精品视频成人| 久久综合伊人77777| zzijzzij亚洲日本成熟少妇| 欧美午夜www高清视频| 日韩一区二区三区xxxx| 国产99久久精品一区二区| 国产午夜精品全部视频在线播放| 91视频九色网站| 尤物yw午夜国产精品视频明星| 91久久综合亚洲鲁鲁五月天| 综合av色偷偷网| 91精品国产91久久久久久| 国产日韩在线看| 国产91精品久久久| 91亚洲永久免费精品| 久久伊人精品视频|