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

首頁 > 系統 > Android > 正文

Android Webview滑進出屏幕閃爍的解決方法

2019-10-21 21:19:21
字體:
來源:轉載
供稿:網友

前言

在使用Webview進行滑動操作時,從屏幕可見區域外向內滑動時,會出現webview區域閃爍的問題(反之也是),本文將提供一種解決方案。

問題圖示

Android,Webview,屏幕閃爍

xml布局:

<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:fillViewport="true" android:overScrollMode="never" android:scrollbars="none"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <View android:id="@+id/contentView" android:layout_width="match_parent" android:layout_height="600dp" android:background="@color/colorPrimary" /> <WebView android:id="@+id/webView" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/contract_font"></WebView> </LinearLayout></android.support.v4.widget.NestedScrollView>

可以看到,NestedScrollView嵌套webview,且webview初始未在一屏內時,滑進出屏幕時會有短暫的白色塊。

解決問題

方案對比

 

 

方案 考慮點
android:hardwareAccelerated="false" 5.0 開始Android系統為了充分利用GPU的特性,使得界面渲染更加平滑而默認開啟的,如果關掉的話,那么整個網頁不流暢了,豈不是得不償失——>放棄
setBackgroundColor(Color.parseColor(“#00000000”)); setBackgroundResource(R.drawable.white); 設置底色背景,但是webview本身是加載的H5頁面,使用的是H5頁面的底色背景,而且通過上面的gif可以看出,沒有效果——>放棄
==通過樣式布局,讓webview保持在第一屏內初始化== 本文嘗試的方案

方案探索

1.xml布局

<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:fillViewport="true" android:overScrollMode="never" android:scrollbars="none"> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> <WebView android:id="@+id/webView" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/contract_font"></WebView> <View android:id="@+id/contentView" android:layout_width="match_parent" android:layout_height="600dp" android:background="@color/colorPrimary" /> </FrameLayout></android.support.v4.widget.NestedScrollView>

通過FrameLayout來疊加使得webview保持在第一屏內初始化,然后設置webview的padding,這樣使得完整的H5內容是在ContentView下方顯示。

但是——>webview設置padding根本無效?。。?/p>

怎么辦呢?無論怎樣也想不到為什么會如此,畢竟本身api的實現上是有些缺陷的(https://stackoverflow.com/questions/9170042/how-to-add-padding-around-a-webview )

2.解決問題

最終的解決方案則是通過注入js代碼來控制H5的padding來解決。

 webView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { contentView.post(new Runnable() {  @Override  public void run() {  contentViewHeight = px2dp(getApplicationContext(), contentView.getMeasuredHeight());  if (contentViewHeight > 0) {  webView.loadUrl("javascript:document.body.style.marginTop=/"" + contentViewHeight + "px/"; void 0");  }  } }); } });

看下猜想運行的結果:

Android,Webview,屏幕閃爍

H5的顯示缺少了頂部,這樣看來padding是沒有效果的。但是,為什么會沒有效果呢,難道設置padding有問題?
之后查看了上面嵌入的網頁的源碼查看了下(網頁是網絡上隨便找的一個url):

https://36kr.com/

打開網頁編輯模式,查看body這塊的樣式:

Android,Webview,屏幕閃爍

可以看到要注入的js控制的樣式這塊是沒有設置的。因此可以將padding-top的參數通過這里設置進去。

Android,Webview,屏幕閃爍

但是發現設置的該參數無效,是什么原因呢?接著往下翻:

Android,Webview,屏幕閃爍

原來是body中控制了padding-top的最高級樣式顯示,所以element-style中設置無效。所以要么把這段注釋掉,重新寫入至element-style中,要么嘗試設置margin-top的方法。這里采用后者的做法:

Android,Webview,屏幕閃爍

可以看到,網頁頂部出現了設置好的marin-top空白的高度。

只需要將這部分操作轉換為對應的代碼即可:

將上面的

webView.loadUrl("javascript:document.body.style.paddingTop="" + contentViewHeight + "px"; void 0");

替換為:

webView.loadUrl("javascript:document.body.style.marginTop=/"" + contentViewHeight + "px/"; void 0");

3.運行效果

Android,Webview,屏幕閃爍

可以看到已經沒有閃爍了。

總結

整個方案的實現其實就兩塊:

1.布局,讓webview在一屏內初始;

2.設置H5網頁的margin-top或者padding-top;

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品一二区| 亚洲一区二区三区香蕉| 国产啪精品视频网站| 热门国产精品亚洲第一区在线| 国内精品美女av在线播放| 成人在线视频网| 午夜精品视频网站| 亚洲男人的天堂在线| 国产欧美在线播放| 亚洲欧洲xxxx| 97在线视频免费观看| 最近日韩中文字幕中文| 亚洲精品久久久一区二区三区| 色偷偷av一区二区三区| 精品中文字幕视频| 国产精品亚洲欧美导航| 欧美激情精品久久久久久黑人| 亚洲精品小视频在线观看| 国产91精品久久久| 亚洲欧美国产va在线影院| 欧美综合第一页| 国产亚洲欧美日韩美女| 26uuu另类亚洲欧美日本一| 欧美大尺度在线观看| 欧美激情a∨在线视频播放| 久色乳综合思思在线视频| 色综合五月天导航| 亚洲午夜未满十八勿入免费观看全集| 亚洲精品av在线播放| 欧美激情亚洲自拍| 亚洲专区国产精品| 91免费看片在线| 国产美女主播一区| 中文字幕亚洲自拍| 日韩激情在线视频| 国产在线视频不卡| 日韩免费高清在线观看| 亚洲综合自拍一区| 欧洲成人在线观看| 亚洲精美色品网站| 成人高清视频观看www| 欧美精品久久一区二区| 伊人久久五月天| 狠狠躁天天躁日日躁欧美| 九九精品视频在线| 亚洲人成电影网| 狠狠躁夜夜躁久久躁别揉| 91香蕉嫩草神马影院在线观看| 日韩欧美亚洲一二三区| 国产在线视频不卡| 国产精品久久激情| 中文字幕精品久久| 激情成人中文字幕| 亚洲娇小xxxx欧美娇小| 国产精品美女www爽爽爽视频| 97视频在线免费观看| 久久99国产综合精品女同| 国产香蕉一区二区三区在线视频| 亚洲男人天天操| 在线a欧美视频| 亚洲已满18点击进入在线看片| …久久精品99久久香蕉国产| 日韩电影在线观看永久视频免费网站| 欧美成人午夜免费视在线看片| 国产欧美精品一区二区三区介绍| 91国产视频在线播放| 亚洲欧洲国产伦综合| 菠萝蜜影院一区二区免费| 亚洲国产精品专区久久| 日产精品99久久久久久| 国产日韩精品在线播放| 欧美日韩福利视频| 日韩视频在线免费观看| 国产精品草莓在线免费观看| 国产精品视频永久免费播放| 亚洲国产精品中文| 亚洲人成在线观| 97视频在线观看视频免费视频| 国产精品高清在线观看| 亚洲人成网站999久久久综合| 青青草成人在线| 亚洲福利视频在线| 在线观看精品国产视频| 日韩免费观看网站| 久久99热这里只有精品国产| 亚洲人成网站777色婷婷| 欧美中文字幕视频在线观看| 日韩免费电影在线观看| x99av成人免费| 国内精久久久久久久久久人| 亚洲自拍偷拍第一页| 亚洲精品日韩丝袜精品| 国产精品夜间视频香蕉| 91色琪琪电影亚洲精品久久| 国产成人福利夜色影视| 国产999精品久久久影片官网| 夜夜躁日日躁狠狠久久88av| 国产精品福利无圣光在线一区| 91沈先生在线观看| 久久理论片午夜琪琪电影网| 91视频国产精品| 在线成人激情黄色| 亚洲精品狠狠操| 国产精品久久久一区| 奇米成人av国产一区二区三区| 日韩欧美主播在线| 午夜精品久久久久久久久久久久久| 亚洲第一区在线| 久久国产精品影片| 97福利一区二区| 欧美激情二区三区| 日韩av免费一区| 在线电影中文日韩| 91久久精品美女高潮| 97婷婷大伊香蕉精品视频| 国产精品视频久| 欧美成人精品在线视频| 国产91精品不卡视频| 日韩在线视频一区| 精品国产区一区二区三区在线观看| 亚洲剧情一区二区| 2018日韩中文字幕| 日本欧美爱爱爱| 成人黄色av网站| 成人黄色影片在线| 亚洲97在线观看| 亚洲精品成a人在线观看| 日韩电影中文 亚洲精品乱码| 日韩精品免费视频| 精品人伦一区二区三区蜜桃网站| 色在人av网站天堂精品| 久久久亚洲网站| www.国产精品一二区| 国产亚洲精品91在线| 91精品久久久久久久久青青| 亚洲а∨天堂久久精品9966| 国产精品久久久久久久久久小说| 欧美日韩中文字幕在线视频| 久久欧美在线电影| 欧美xxxx18国产| 北条麻妃99精品青青久久| 免费不卡欧美自拍视频| 久久成年人免费电影| 国产一区二区三区三区在线观看| 免费av一区二区| 亚洲аv电影天堂网| 国产精品自产拍高潮在线观看| 2019最新中文字幕| 国产成人精品久久| 韩国v欧美v日本v亚洲| 中文字幕日韩欧美在线| 97成人精品区在线播放| 欧美一级黑人aaaaaaa做受| 亚洲国产精品成人一区二区| 日韩精品在线第一页| 在线播放精品一区二区三区| 亚洲xxxx妇黄裸体| 日韩在线播放一区| 一本大道亚洲视频| 成人免费午夜电影| 国产精品老牛影院在线观看| 久久久国产一区| 日韩av大片在线| 中文字幕视频一区二区在线有码|