当前位置: 首页 > news >正文

苏州有哪些做网站公司好/企业建站流程

苏州有哪些做网站公司好,企业建站流程,wordpress ck插件,南通做网站我们知道xUtils中的bitmapUtils与listview相配合可以实现滚动时暂停加载 只需要一句话: listview.addOnScrollListener(new PauseOnScrollListener(bitmapUtils, false, true)); 然而在我所使用的xUtils2.6版本上,如果想对recyclerView使用相似的方法是行不通的 (ps:因为xUtils…

我们知道xUtils中的bitmapUtils与listview相配合可以实现滚动时暂停加载

只需要一句话:

listview.addOnScrollListener(new PauseOnScrollListener(bitmapUtils, false, true));

然而在我所使用的xUtils2.6版本上,如果想对recyclerView使用相似的方法是行不通的

(ps:因为xUtils3只支持api14,所以我没用xUtils3)

recyclerView.addOnScrollListener(new PauseOnScrollListener(bitmapUtils, false, true));

因为参数需要的是RecyclerView.OnScrollListener,

而xUtils只提供了实现AbsListView.OnScrollListener的listener

这个时候只能自己动手改动xUtils源码了

进入到PauseOnScrollListener的源码中

import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import com.lidroid.xutils.BitmapUtils;
import com.lidroid.xutils.task.TaskHandler;public class PauseOnScrollListener implements OnScrollListener {private TaskHandler taskHandler;private final boolean pauseOnScroll;private final boolean pauseOnFling;private final OnScrollListener externalListener;/*** Constructor** @param taskHandler   {@linkplain BitmapUtils} instance for controlling* @param pauseOnScroll Whether {@linkplain BitmapUtils#pause() pause loading} during touch scrolling* @param pauseOnFling  Whether {@linkplain BitmapUtils#pause() pause loading} during fling*/public PauseOnScrollListener(TaskHandler taskHandler, boolean pauseOnScroll, boolean pauseOnFling) {this(taskHandler, pauseOnScroll, pauseOnFling, null);}/*** Constructor** @param taskHandler    {@linkplain BitmapUtils} instance for controlling* @param pauseOnScroll  Whether {@linkplain BitmapUtils#pause() pause loading} during touch scrolling* @param pauseOnFling   Whether {@linkplain BitmapUtils#pause() pause loading} during fling* @param customListener Your custom {@link android.widget.AbsListView.OnScrollListener} for {@linkplain android.widget.AbsListView list view} which also will*                       be get scroll events*/public PauseOnScrollListener(TaskHandler taskHandler, boolean pauseOnScroll, boolean pauseOnFling, OnScrollListener customListener) {this.taskHandler = taskHandler;this.pauseOnScroll = pauseOnScroll;this.pauseOnFling = pauseOnFling;externalListener = customListener;}@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {switch (scrollState) {case OnScrollListener.SCROLL_STATE_IDLE:taskHandler.resume();break;case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:if (pauseOnScroll) {taskHandler.pause();}break;case OnScrollListener.SCROLL_STATE_FLING:if (pauseOnFling) {taskHandler.pause();}break;}if (externalListener != null) {externalListener.onScrollStateChanged(view, scrollState);}}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {if (externalListener != null) {externalListener.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);}}
}

意外地发现不是很长,其中主要起作用的除了两个重写的方法外,就是TaskHandler这个接口了

BitmapUtils其实是继承了TaskHandler

TaskHandler对handler进行了进一步的封装,方便控制异步任务

TaskHandler具有pause()和resume()两个很重要的方法,由BitmapUtils等实现

@Overridepublic void pause() {pauseTask = true;flushCache();}@Overridepublic void resume() {pauseTask = false;synchronized (pauseTaskLock) {pauseTaskLock.notifyAll();}}

看到这里思路就比较明显了,我们继承RecyclerView.OnScrollListener并重写其中的回调方法

在回调方法中调用TaskHandler的api,即可达到想要的效果.

精简后的代码如下

import com.lidroid.xutils.BitmapUtils;
import com.lidroid.xutils.task.TaskHandler;import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView.OnScrollListener;;public class PauseOnScrollListener extends RecyclerView.OnScrollListener {private TaskHandler taskHandler;private boolean pauseOnScroll;private boolean pauseOnFling;private OnScrollListener externalListener;/*** Constructor** @param taskHandler*            {@linkplain BitmapUtils} instance for controlling* @param pauseOnScroll*            Whether {@linkplain BitmapUtils#pause() pause loading} during*            touch scrolling* @param pauseOnFling*            Whether {@linkplain BitmapUtils#pause() pause loading} during*            fling*/public PauseOnScrollListener(TaskHandler taskHandler,boolean pauseOnScroll, boolean pauseOnFling) {this(taskHandler, pauseOnScroll, pauseOnFling, null);}/*** Constructor** @param taskHandler*            {@linkplain BitmapUtils} instance for controlling* @param pauseOnScroll*            Whether {@linkplain BitmapUtils#pause() pause loading} during*            touch scrolling* @param pauseOnFling*            Whether {@linkplain BitmapUtils#pause() pause loading} during*            fling* @param customListener*            Your custom*            {@link android.widget.AbsListView.OnScrollListener} for*            {@linkplain android.widget.AbsListView list view} which also*            will be get scroll events*/public MyPauseOnScrollListener(TaskHandler taskHandler,boolean pauseOnScroll, boolean pauseOnFling,OnScrollListener customListener) {this.taskHandler = taskHandler;this.pauseOnScroll = pauseOnScroll;this.pauseOnFling = pauseOnFling;externalListener = customListener;}@Overridepublic void onScrollStateChanged(RecyclerView view, int newState) {switch (newState) {case 0:taskHandler.resume();break;case 1:if (pauseOnScroll) {taskHandler.pause();}break;case 2:if (pauseOnFling) {taskHandler.pause();}break;}if (externalListener != null) {externalListener.onScrollStateChanged(view, scrollState);}}@Overridepublic void onScrolled(RecyclerView recyclerView, int dx, int dy) {if (externalListener != null) {externalListener.onScrolled(recyclerView, dx, dy);}}}

本文结束.

转载于:https://www.cnblogs.com/BlogCommunicator/p/4996094.html

http://www.lbrq.cn/news/1410571.html

相关文章:

  • 加若格网站做么样/无锡百度推广代理公司
  • 网站焦点图怎么做链接/企业网站页面设计
  • 怎么做像知乎一样的网站/网站域名费一年多少钱
  • wordpress二级菜单代码/谷歌搜索优化seo
  • 深圳交易网站建设/网络营销产品
  • ppt图标网站链接怎么做/中国最大的企业培训公司
  • 东莞金融网站建设/最新今日头条
  • 织梦后台点击网站主页/搜索引擎优化涉及的内容
  • 公司网页制作哪家强/seo投放营销
  • 建网站内容/整站seo排名
  • 网站营销应该怎么做/搜索引擎营销的优缺点及案例
  • wordpress评论cdn刷新/汕头seo代理
  • 深圳网站建设 东毅虎/免费网络推广平台
  • 海南做网站的公司/网站网络推广公司
  • 网站开发 明细/seo效果最好的是
  • 深圳网站推广优化/个人网页在线制作
  • 临朐整站优化/网页百度网盘
  • 高唐网站建设服务商/win7运行速度提高90%
  • 做阅读任务挣钱的网站/app推广地推接单网
  • 网站ip改变 备案/网站seo优化建议
  • html全屏网站/百度浏览器下载安装2023版本
  • 网站pc端和手机端分离怎么做/网站seo推广营销
  • 云南微网站搭建费用/怎么搭建自己的网站
  • 网站建设未验收会计账务处理/成都网站推广公司
  • 网络搏彩网站做代理/快速排名精灵
  • 上海门户网站制作/百度市场应用官方app
  • 营销型网站建设合同范本/微博推广方式
  • 中科院网站做的好的院所/网站查询信息
  • 做网站运营需要学什么条件/自己做网站需要什么条件
  • led照明企业网站模板/免费发布信息不收费的网站
  • JavaSE高级-02
  • 【学习嵌入式-day-27-进程间通信】
  • 用户认证技术
  • 学习Python中Selenium模块的基本用法(5:程序基本步骤)
  • MySQL数据库备份与恢复
  • neo4j导入导出方法