-
2016-11-02 21:25:18
今天由于业务需要,需要对webview下来刷新,但webview肯定没这功能呀,于是就想,在用xlistview把webview放在头部,下拉webview时,就重新加载webview,但这样说不定,可能照成滑动冲突。于是,在stack overflow找到了不错的解决方案。
SwipeRefreshLayout 是谷歌官方下拉刷新控件,4.0以下的版本需要用到 Android-support-v4.jar包才能用到。
SwipeRefreshLayout 使用起来是非常简单的,只需要在可以滑动的控件外层添加即可,如:WebView、ListView和ScroolView.demo例子如下:
public class MainActivity extends Activity {private WebView webView; private WebSettings webSettings; private SwipeRefreshLayout swipeLayout; private String linkUrl="https://www.baidu.com/"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); swipeLayout = (SwipeRefreshLayout)findViewById(R.id.swipe_container); // 设置刷新监听器 swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { //重新刷新页面 // webview.loadUrl(webview.getUrl()); webView.reload(); } }); //设置进度条渐变的颜色 swipeLayout.setColorScheme(R.color.holo_blue_bright, R.color.holo_green_light, R.color.holo_orange_light, R.color.holo_red_light); //初始化webview initwebview(); } private void initwebview(){ webView= (WebView) findViewById(R.id.webview); webSettings= webView.getSettings(); webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); webSettings.setSupportZoom(false); webSettings.setBuiltInZoomControls(false); webSettings.setAppCacheMaxSize(1024 * 1024 * 9);// 设置缓冲大小 webSettings.setAllowFileAccess(true); webSettings.setAppCacheEnabled(true); webSettings.setJavaScriptEnabled(true); webSettings.setDomStorageEnabled(true); webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); //设置进度条 webView.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { if (newProgress == 100) { //隐藏进度条 swipeLayout.setRefreshing(false); } else { if (!swipeLayout.isRefreshing()) //显示进度条 swipeLayout.setRefreshing(true); } super.onProgressChanged(view, newProgress); } }); webView.loadUrl(linkUrl); }
}
更多相关内容 -
WebView下拉刷新Demo
2016-07-05 16:39:07webview = (WebView) findViewById(R.id.webview); swipeLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_container); swipeLayout.setOnRefreshListener(new OnRefreshListener() { @Override ...这里是xml布局文件
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swipe_container" android:layout_width="match_parent" android:layout_height="match_parent" > <WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent"/> </android.support.v4.widget.SwipeRefreshLayout> </FrameLayout>
现在创建color.xml文件,用来展示进度条颜色
<?xml version="1.0" encoding="utf-8"?> <resources> <!-- A light Holo shade of blue --> <color name="holo_blue_light">#ff33b5e5</color> <!-- A light Holo shade of green --> <color name="holo_green_light">#ff99cc00</color> <!-- A light Holo shade of red --> <color name="holo_red_light">#ffff4444</color> <!-- A dark Holo shade of blue --> <color name="holo_blue_dark">#ff0099cc</color> <!-- A dark Holo shade of green --> <color name="holo_green_dark">#ff669900</color> <!-- A dark Holo shade of red --> <color name="holo_red_dark">#ffcc0000</color> <!-- A Holo shade of purple --> <color name="holo_purple">#ffaa66cc</color> <!-- A light Holo shade of orange --> <color name="holo_orange_light">#ffffbb33</color> <!-- A dark Holo shade of orange --> <color name="holo_orange_dark">#ffff8800</color> <!-- A really bright Holo shade of blue --> <color name="holo_blue_bright">#ff00ddff</color> </resources>
最后,是我们MainActivity中的示例
package com.example.webviewrefresh; import android.os.Bundle; import android.app.Activity; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener; import android.view.Menu; import android.view.View; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends Activity { private SwipeRefreshLayout swipeLayout; private WebView webview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webview = (WebView) findViewById(R.id.webview); swipeLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_container); swipeLayout.setOnRefreshListener(new OnRefreshListener() { @Override public void onRefresh() { // TODO Auto-generated method stub webview.loadUrl(webview.getUrl()); } }); swipeLayout.setColorScheme(R.color.holo_blue_bright, R.color.holo_green_light, R.color.holo_orange_light, R.color.holo_red_light); webview.loadUrl("https://www.baidu.com/"); webview.getSettings().setJavaScriptEnabled(true); webview.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); webview.requestFocus(); webview.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); //设置进度条 webview.setWebChromeClient(new WebChromeClient(){ @Override public void onProgressChanged(WebView view, int newProgress) { if (newProgress == 100) { swipeLayout.setRefreshing(false); } else { if (!swipeLayout.isRefreshing()) swipeLayout.setRefreshing(true); } super.onProgressChanged(view, newProgress); } }); } }
好了,接下里你可以试一试了,希望有所帮助
-
slidingmenu侧滑以及webview下拉刷新demo.rar
2014-04-11 10:54:16slidingmenu侧滑以及webview下拉刷新,所有功能都是最简单的,有助于学习代码,支持左右滑动以及按钮点击滑动, -
Android 之WebView实现下拉刷新和其他相关刷新功能
2017-04-14 12:00:39最近项目中需要用到WebView下拉刷新的功能,经过查找资料终于完成了此功能,现在拿出来和大家分享一下。希望对大家有所帮助。 效果如下图: 代码: activity.xml ...最近项目中需要用到WebView下拉刷新的功能,经过查找资料终于完成了此功能,现在拿出来和大家分享一下。希望对大家有所帮助。
效果如下图:
代码:
activity.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.zq.pullrefreshwebview.MainActivity"> <com.zq.pullrefreshwebview.widget.PtrClassicFrameLayout android:id="@+id/rotate_header_web_view_frame" xmlns:cube_ptr="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white" cube_ptr:ptr_duration_to_close="200" cube_ptr:ptr_duration_to_close_header="1000" cube_ptr:ptr_keep_header_when_refresh="true" cube_ptr:ptr_pull_to_fresh="false" cube_ptr:ptr_ratio_of_header_height_to_refresh="1.2" cube_ptr:ptr_resistance="1.8"> <WebView android:id="@+id/webview" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </com.zq.pullrefreshwebview.widget.PtrClassicFrameLayout> </RelativeLayout>
Activity.Java
/**** * WebView 实现下拉加载 */ public class MainActivity extends AppCompatActivity { private PtrClassicFrameLayout mPtrFrame; private WebView mWebView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mWebView= (WebView) findViewById(R.id.webview); mPtrFrame= (PtrClassicFrameLayout) findViewById(R.id.rotate_header_web_view_frame); initView(); } private void initView(){ mWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if(url.toLowerCase().startsWith("http://") || url.toLowerCase().startsWith("https://")) { return false; } return true; } @Override public void onPageFinished(WebView view, String url) { mPtrFrame.refreshComplete(); } }); mPtrFrame.setLastUpdateTimeRelateObject(this); mPtrFrame.setPtrHandler(new PtrHandler() { @Override public boolean checkCanDoRefresh(PtrFrameLayout frame, View content, View header) { return PtrDefaultHandler.checkContentCanBePulledDown(frame, mWebView, header); } @Override public void onRefreshBegin(PtrFrameLayout frame) { updateData(); } }); mPtrFrame.setResistance(1.7f); mPtrFrame.setRatioOfHeaderHeightToRefresh(1.2f); mPtrFrame.setDurationToClose(200); mPtrFrame.setDurationToCloseHeader(1000); mPtrFrame.setPullToRefresh(false); mPtrFrame.setKeepHeaderWhenRefresh(true); mPtrFrame.postDelayed(new Runnable() { @Override public void run() { mPtrFrame.autoRefresh(); } }, 100); } private void updateData() { mWebView.loadUrl("https://my.oschina.net/zhangqie/blog"); } }
权限:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
注:上图效果是参考他人写的
更多控件实现下拉刷新效果图: 可以参考 https://github.com/DickyQie/android-advanced-effect/tree/pull-down-refresh 我就是参考此案例来实现的
更多实现方式 https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh
图1:
源码点击下载
图2:
https://github.com/DickyQie/android-advanced-effect/tree/webview-pull-refresh
-
下拉刷新demo
2018-05-08 18:39:55下拉刷新的demo,只是下拉刷新,能结合webview\listview各个控件。 -
Android 下拉刷新控件SwipeRefreshLayout结合WebView使用
2021-06-03 14:37:36SwipeRefreshLayout 是谷歌官方下拉刷新控件,4.0如下的版本须要用到 android-support-v4.jar包才能用到htmlandroid-support-v4.jar 包下载地址:输入连接说明java官网API地址:输入连接说明androidGitHub Demo下载...SwipeRefreshLayout 是谷歌官方下拉刷新控件,4.0如下的版本须要用到 android-support-v4.jar包才能用到html
android-support-v4.jar 包下载地址:输入连接说明java
官网API地址:输入连接说明android
GitHub Demo下载地址:输入连接说明git
SwipeRefreshLayout 使用起来是很是简单的,只须要在能够滑动的控件外层添加便可,如:WebView、ListView和ScroolView.github
android:layout_width="match_parent"
android:layout_height="match_parent" >
android:id="@+id/swipe_container"
android:layout_width="match_parent"
android:layout_height="match_parent" >
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
经常使用方法: void setOnRefreshListener(SwipeRefreshLayout.OnRefreshListener listener) 设置刷新监听器 void setColorSchemeColors(int color1, int color2, int color3, int color4) 设置四种颜色进度条样式 void setRefreshing(boolean refreshing) 隐藏或显示进度条 boolean isRefreshing() 判断进度条是否显示web
结合WebView使用也挺简单的,能够实现一些功能,下拉刷新当前网页、点击网页在当前页面中浏览并显示SwipeRefreshLayout进度条,总体来讲仍是不错的ide
public class Fragment5 extends Fragment {
private View view;
public WebView webview;
private SwipeRefreshLayout swipeLayout;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.activity_fragment5, null);
swipeLayout = (SwipeRefreshLayout) view.findViewById(R.id.swipe_container);
swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
//从新刷新页面
webview.loadUrl(webview.getUrl());
}
});
swipeLayout.setColorScheme(R.color.holo_blue_bright,
R.color.holo_green_light, R.color.holo_orange_light,
R.color.holo_red_light);
webview = (WebView)view.findViewById(R.id.webview);
webview.loadUrl("http://blog.csdn.net/h7870181");
//添加javaScript支持
webview.getSettings().setJavaScriptEnabled(true);
//取消滚动条
webview.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
//触摸焦点起做用
webview.requestFocus();
//点击连接继续在当前browser中响应
webview.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
//设置进度条
webview.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (newProgress == 100) {
//隐藏进度条
swipeLayout.setRefreshing(false);
} else {
if (!swipeLayout.isRefreshing())
swipeLayout.setRefreshing(true);
}
super.onProgressChanged(view, newProgress);
}
});
return view;
}
}
差点忘了贴出color.xml资源文件了,我呵了个呵!url
#ff33b5e5
#ff99cc00
#ffff4444
#ff0099cc
#ff669900
#ffcc0000
#ffaa66cc
#ffffbb33
#ffff8800
#ff00ddff
-
mui双webview及单webView下拉刷新问题-初次加载无效-停止下拉刷新失败-出现某变量不存在等
2020-10-15 12:00:521.下拉刷新停止失效: 错误代码:Uncaught TypeError: mui(...).pullRefresh(...).endPulldown() is not a function或者Uncaught TypeError: mui(...).pullRefresh(...).endPullupToRefresh is not a function 官网... -
android webview 下拉刷新
2017-01-02 04:03:33如题,android 客服端中一个界面加载webview网页,下拉这个页面的时候刷新这个网页。小弟刚学android不久,求位大神帮我看看怎么实现,最好有个demo。小弟感激不尽! -
下拉刷新 demo 很好用
2015-02-27 16:05:26这个demo 主要是分享给用到下拉刷新的同学的,非常好用 ,主要分为三个部分:listview scrollview 和webView的下拉刷新可以说是涵盖了所有关于下拉的应用,我只想说绝对值2分的了! -
Android下拉刷新上拉加载控件(适用于所有View)
2021-01-03 23:45:28我做了一个大集合的demo,实现了ListView、GridView、ExpandableListView、ScrollView、WebView、ImageView、TextView的下拉刷新和上拉加载。后面会提供demo的下载地址,最新代码已上传到github:... -
Android SwipeRefreshLayout下拉刷新加载WebView网页
2014-08-22 14:38:29SwipeRefreshLayout字面意思就是下拉刷新的布局,继承自ViewGroup,在support v4兼容包下,但必须把你的support library的版本升级到19.1。 提到下拉刷新大家一定对ActionBarPullToRefresh比较熟悉,而如今google... -
Android XListView下拉刷新和上拉加载更多
2021-01-20 10:57:57今天介绍的这款框架,专门针对ListView做下拉刷新与上拉加载的,如果单单是ListView就显得更加简单方便易于理解。 1、首先引入xListView_lib库到自己的Demo上 2、使用步骤 它的使用步骤跟普通的ListView是一样,这也... -
Android之ListView下拉刷新和上拉加载实现详解(含源码Demo)
2016-03-02 11:50:50这两天整理了一下listview的下拉刷新和上拉加载的使用方法,自己做了一遍以后感觉受益良多,也慢慢积累了一些以前没有掌握的知识点。 本文分成两个部分: 1:采用PullToRefresh实现listview的下拉刷新和... -
安卓下拉上拉刷新相关-这个资源中包含了一个通用的下拉刷新框架源码和demoapk。这个框架可以支持...
2019-07-29 16:48:22这个资源中包含了一个通用的下拉刷新框架源码和demo apk。这个框架可以支持ListView, GridView, ScrollView, WebView,严格来说,你可以把任何View放到这个框架中.rar,太多无法一一验证是否可用,程序如果跑不起来... -
android使用PullToRefresh实现下拉刷新和上拉加载
2021-01-20 10:31:19PullToRefresh是一套实现非常好的下拉刷新库,它支持: 1.ListView 2.ExpandableListView 3.GridView 4.WebView 等多种常用的需要刷新的View类型,而且使用起来也十分方便。 demo实例下载 下载完成,将它导入到... -
Android NestedScrolling全面解析 - 带你实现一个支持嵌套滑动的下拉刷新(上篇)
2021-06-03 18:23:06当然,support包中也有一系列为我们准备好的Parent,就是design包中的CoordinatorLayout,下一章节,我将讲述下怎么实现一个NestedScrollingParent的下拉刷新。 最后的最后,祝大家鸡年大吉吧!o(////////)q -
UIWebView/UIScrollView+EGO实现下拉刷新
2014-06-27 11:10:51该Demo是UIScrollView和UIWebView结合EGO实现下拉刷新的demo -
android下拉刷新框架源代码
2014-02-17 16:22:16这个资源中包含了一个通用的下拉刷新框架源码和demo apk。其实网上有很多下拉刷新的例子,但都不是很共通,特别是以listview添加header或footer居多,这很明显无法应用到GridView这样的布局。基于此,我们参考前辈的... -
实现下拉刷新滑动回弹效果组件 React-Native-Pull
2021-05-27 04:52:24PullList两个实现下拉刷新滑动回弹效果的react native组件,可支持android & ios,简单易用!纯s代码,基于ScrollView&ListView封装. 比scrollview & ListView更强大,有三个下拉状态:pulling... -
Android 下拉刷新&上拉加载更多的Library及Demo(优化后).rar
2015-10-22 10:36:08Android 优化后的下拉刷新&上拉加载更多的Library及Demo,包括ListView、ScrollView、WebView、GridView、ExpandableListView等的上下拉刷新布局~~非常好用~~ -
Android 下拉刷新框架实现
2018-07-17 10:30:13前段时间项目中用到了下拉刷新功能,之前在网上也找到过类似的demo,但这些demo的质量参差不齐,用户体验也不好,接口设计也不行。最张没办法,终于忍不了了,自己就写了一个下拉刷新的框架,这个框架是一个通用的... -
Android几种强大的下拉刷新库,android开发基础在线学习网站
2021-12-12 11:27:32众多优秀的下拉刷新(除了我写的之外T_T) 说起下拉刷新,好像经历一段历史的洗礼。。。 (1)在我刚学android的时候,用的是XListView,在github上搜索有 MarkMjw/PullToRefresh ,根据Maxwin的XListView... -
MUI实现上拉加载和下拉刷新的实例分享
2021-04-08 11:03:52这篇文章主要为大家详细介绍了MUI实现上拉加载和下拉刷新效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下本文实例为大家分享了MUI实现上拉加载和下拉刷新展示的具体代码,供大家参考,具体内容如下编写存储... -
MUI安卓下拉刷新无反应的问题(但是在mui官方demo是可以的);
2018-02-08 13:20:06最近使用MUI这个框架使用下拉刷新插件的时候,在电脑和苹果手机测试都没有问题,但是一上线却发现安卓打包成APP后无法使用的问题。针对这一问题,博主只想说大家在开发的过程中真的是没有认真官方的文档,官方文档... -
移动端下拉刷新与页面内滑动冲突问题 iscroll 固定行表头 苹果下拉反弹
2019-04-04 15:38:17此方法在安卓6的自带下拉刷新的APP内无效。 做移动app项目时,用的是app内嵌webview的方法,遇到问题。 在安卓6中,app原生自带下拉刷新,与界面内的下滑冲突。 开始考虑通过在touchmove时阻止默认事件解决,但... -
mui实现分页上拉加载更多 下拉刷新数据的简单实现 移动端下拉上拉
2021-05-26 15:02:37空下来把mui上拉加载更多,下拉刷新数据做了一个简单的实现,希望可以帮助到需要的朋友demo项目的结构mui上拉刷新下拉加载demo--封装li{height: 30px;line-height: 30px;font-size: 14px;color: #bbb;text-indent: 4...