pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

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

這篇文章主要給大家介紹了關于Android Webview滑進出屏幕閃爍的解決方法,文中通過示例代碼介紹的非常詳細,對各位Android開發(fā)者們具有一定的參考學習價值,需要的朋友們下面來一起學

前言

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

問題圖示

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系統(tǒng)為了充分利用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根本無效!!!

怎么辦呢?無論怎樣也想不到為什么會如此,畢竟本身api的實現(xiàn)上是有些缺陷的(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");
  }
  }
 });
 }
 });

看下猜想運行的結果:

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

https://36kr.com/

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

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

但是發(fā)現(xiàn)設置的該參數(shù)無效,是什么原因呢?接著往下翻:

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

可以看到,網頁頂部出現(xiàn)了設置好的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.運行效果

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

總結

整個方案的實現(xiàn)其實就兩塊:

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

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

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

【網站聲明】本站部分內容來源于互聯(lián)網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯(lián)系我們刪除處理,感謝您的支持!

相關文檔推薦

這篇文章主要介紹了Android開發(fā)之TabHost選項卡及相關疑難解決方法,結合實例形式較為詳細的分析了Android開發(fā)中TabHost選項卡的常見用法以及相關疑難問題解決方法,需要的朋友可以參考下
這篇文章主要介紹了Android TabHost選項卡標簽圖標始終不出現(xiàn)的解決方法,涉及Android界面布局相關屬性與狀態(tài)設置操作技巧,需要的朋友可以參考下
這篇文章主要介紹了Android開發(fā)之Notification手機狀態(tài)欄通知用法,結合實例形式分析了Android Notification手機狀態(tài)欄通知的常見函數(shù)、功能及使用技巧,需要的朋友可以參考下
這篇文章主要介紹了Android開發(fā)實現(xiàn)模仿微信小窗口功能,結合實例形式分析了Android實現(xiàn)微信風格Dialog對話框窗口相關功能與布局操作技巧,需要的朋友可以參考下
這篇文章主要介紹了Android開發(fā)之PopupWindow創(chuàng)建彈窗、對話框的方法,結合實例形式詳細分析了Android使用PopupWindow創(chuàng)建對話框相關操作技巧,需要的朋友可以參考下
這篇文章主要介紹了Android開發(fā)之DatePickerDialog、TimePickerDialog時間日期對話框用法,結合實例形式分析了Android使用DatePickerDialog、TimePickerDialog顯示日期時間相關操作技巧,需要的朋友可以參考
主站蜘蛛池模板: 视觉检测设备_自动化检测设备_CCD视觉检测机_外观缺陷检测-瑞智光电 | 工业电炉,台车式电炉_厂家-淄博申华工业电炉有限公司 | 健康管理师报名入口,2025年健康管理师考试时间信息网-网站首页 塑料造粒机「厂家直销」-莱州鑫瑞迪机械有限公司 | 铸铝门厂家,别墅大门庭院大门,别墅铸铝门铜门[十大品牌厂家]军强门业 | 全自动烧卖机厂家_饺子机_烧麦机价格_小笼汤包机_宁波江北阜欣食品机械有限公司 | 真空吸污车_高压清洗车厂家-程力专用汽车股份有限公司官网 | 定制液氮罐_小型气相液氮罐_自增压液氮罐_班德液氮罐厂家 | 石家庄救护车出租_重症转院_跨省跨境医疗转送_活动赛事医疗保障_康复出院_放弃治疗_腾康26年医疗护送转诊团队 | 户外健身路径_小区健身器材_室外健身器材厂家_价格-浩然体育 | 电动车头盔厂家_赠品头盔_安全帽批发_山东摩托车头盔—临沂承福头盔 | 影视模板素材_原创专业影视实拍视频素材-8k像素素材网 | 400电话_400电话申请_888元包年_400电话办理服务中心_400VIP网 | 加中寰球移民官网-美国移民公司,移民机构,移民中介,移民咨询,投资移民 | 塑料托盘厂家直销-吹塑托盘生产厂家-力库塑业【官网】 | 恒温油槽-恒温水槽-低温恒温槽厂家-宁波科麦仪器有限公司 | 智慧物联网行业一站式解决方案提供商-北京东成基业 | 金环宇|金环宇电线|金环宇电缆|金环宇电线电缆|深圳市金环宇电线电缆有限公司|金环宇电缆集团 | AR开发公司_AR增强现实_AR工业_AR巡检|上海集英科技 | 新能源汽车教学设备厂家报价[汽车教学设备运营18年]-恒信教具 | 专业生产动态配料系统_饲料配料系统_化肥配料系统等配料系统-郑州鑫晟重工机械有限公司 | 北京四合院出租,北京四合院出售,北京平房买卖 - 顺益兴四合院 | 罗茨真空机组,立式无油往复真空泵,2BV水环真空泵-力侨真空科技 | 山东聚盛新型材料有限公司-纳米防腐隔热彩铝板和纳米防腐隔热板以及钛锡板、PVDF氟膜板供应商 | 仓储货架_南京货架_钢制托盘_仓储笼_隔离网_环球零件盒_诺力液压车_货架-南京一品仓储设备制造公司 | 陕西华春网络科技股份有限公司| 仿真茅草_人造茅草瓦价格_仿真茅草厂家_仿真茅草供应-深圳市科佰工贸有限公司 | 粉丝机械,粉丝烘干机,粉丝生产线-招远市远东粉丝机械有限公司 | 干培两用箱-细菌恒温培养箱-菲斯福仪器| 磁棒电感生产厂家-电感器厂家-电感定制-贴片功率电感供应商-棒形电感生产厂家-苏州谷景电子有限公司 | 洁净化验室净化工程_成都实验室装修设计施工_四川华锐净化公司 | 郑州水质检测中心_井水检测_河南废气检测_河南中环嘉创检测 | 翅片管换热器「型号全」_厂家-淄博鑫科环保 | 东莞ERP软件_广州云ERP_中山ERP_台湾工厂erp系统-广东顺景软件科技有限公司 | 广州企亚 - 数码直喷、白墨印花、源头厂家、透气无手感方案服务商! | 反渗透水处理设备|工业零排放|水厂设备|软化水设备|海南净水设备--海南水处理设备厂家 | 冰晶石|碱性嫩黄闪蒸干燥机-有机垃圾烘干设备-草酸钙盘式干燥机-常州市宝康干燥 | 东莞市天进机械有限公司-钉箱机-粘箱机-糊箱机-打钉机认准东莞天进机械-厂家直供更放心! | 智慧农业|农业物联网|现代农业物联网-托普云农物联网官方网站 | 钢格板|镀锌钢格板|热镀锌钢格板|格栅板|钢格板|钢格栅板|热浸锌钢格板|平台钢格板|镀锌钢格栅板|热镀锌钢格栅板|平台钢格栅板|不锈钢钢格栅板 - 专业钢格板厂家 | 称重传感器,测力传感器,拉压力传感器,压力变送器,扭矩传感器,南京凯基特电气有限公司 | 冷柜风机-冰柜电机-罩极电机-外转子风机-EC直流电机厂家-杭州金久电器有限公司 |