在之前的文章中,我们实现了带有header和footer功能的WrapRecyclerView:实现一个带有header和footer功能的RecyclerView
原作者: https://github.com/chrisbanes/Android-PullToRefresh
这里我们使用一个开源的库叫:PullToRefresh 开源地址:https://github.com/chenyoca/pull-to-refresh 下载地址:https://github.com
问题描述:从github上down下的pullToRefresh项目(https://github.com/johannilsson/android-pulltorefresh):导入Android studio出现如图的问题及解决方式:
PullToRefreshLayout是一个用法同系统SwipeRefreshLayout可灵活自定义下拉刷新、上拉加载视图的Android库.
#-------------------------------------------定制化区域---------------------------------------------- #---------------------------------1.实体类--------------------------------- -keep class com.gieseckedevrient.convego.appworld.prod.bean.** { *; } #--------------
(1)在我刚学android的时候,用的是XListView,在github上搜索有 MarkMjw/PullToRefresh ,根据Maxwin的XListView改造而来,完善下拉刷新上拉加载更多的功能并实现自动刷新以及自动加载等功能, 并增加对ScrollView的支持。 原XListView
大家知道,自定义视图的目的就是要在屏幕上显示期望的图案,那在绘制图案之前,我们得先知道这个图案的尺寸(如宽多少高多少)。 一般在xml中给控件的宽和高有三种赋值方式: 1、MATCH_PARENT : 表示与上级控件一样大小; 2、WRAP_CONTENT : 表示按照自身尺寸进行适配; 3、直接赋给具体的dp值; 方式3有具体的数值,不用计算就知道了。方式1与上级控件保持一致,因此只要系统依次丈量控件大小,这也不是什么难事。麻烦的是方式2,因为下级控件每个尺寸都有可能不确定,比如文本控件得看文字大小、行数,图像控件得看图片大小、拉伸情况,所以大家想想,如果这时候我们自己去一个个算过去(下级控件的个数也不确定),这算得头都大了。 幸亏Android提供了onMeasure函数自动完成了上述计算过程,通常情况下我们的自定义控件也无需重写该方法,除了一些特殊的情况。当然本文讲的便是实际开发中遇到的特殊情况,否则就不用浪费口舌了。
如上图用的是pullToRefreshListView 每个item之间有一条线,样式比较尴尬 ,需要去掉,去掉后的效果是这样的
上一部分构造了主页面,这一部分主要完成主页面三个tab的数据获取,下一步的点击事件目前都未处理。
Android-PullToRefresh(github地址)是个十分方便的下拉刷新库(也有上拉加载的功能),各个app中常见到滑到底部自动加载的功能,这里提供一个简单的实现思路:
这里我们以PullToRefresh(上拉刷新下拉加载)组件的library为例 下载地址: https://github.com/chrisbanes/Android-PullToRefresh 现
俗话说:兴趣是最好的老师。如果有一天你把编程当做一个游戏,当成一件好玩的事,那么你将会在编程的这条路上越走越宽,越走越好,越走越深。 那如何把编程当做一个游戏呢?如何让编程更加有趣呢?那就是用编程做出有意思,好玩的东西来就行啦。今天我们就分享几个好玩的东西,看看人家大神是如何玩转编程,把东西做出花来的? 1、upload-labs upload-labs 是一个帮你总结所有类型的上传漏洞的靶场。它是一个用 PHP 语言编写的,专门收集渗透测试过程中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面
リフレクションを使って文字列からリソースIDを取得する JAVA反射 Java Reflection(反射机制)详解 Java 反射 使用总结 关于Android中根据ID名动态获取资源的两个方法 Android利用资源名称获取其ID(一)—>getIdentifier()
Jetpack Compose光下拉刷新,官方就提供了三种不同的方式,使用的依赖也不相同,特别的混乱。
本文主要给大家介绍了关于Android中能够作为Log开关的一些操作及安全性的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
RecyclerView是Android 5.0版本引入的一个新的组件,目的是在一些场景中取代之前ListView和GridView,实现性能更优的解决方案。同时RecyclerView的灵活性让它可胜任更多的场景。关于RecyclerView的使用有太多的文章了,大家可以自行搜索。
Android-PullToRefresh使用setRefreshing(true)出发刷新后,如果立即调用onRefreshComplete(),下拉刷新的进度状态并不会消失,一直处于刷新状态.可能是这个库的一个bug,还没有仔细研究代码.下面提供一个简单的解决办法,就是延迟调用onRefreshComplete(),如下:
该项目涵盖了新浪微博的主要功能,有Toolbar,RecyclerView等最新控件的用法; 同时深入了各种快速开发框架在实际项目中使用,比如 Glide,PhotoView ,EventBus ,OKHttp,pullToRefresh等。 也有 MVP 设计模式在安卓项目中的应用以及架构师的入门知识。
<!DOCTYPE html> <html> <head> <title>jQuery手机端上拉下拉刷新页面代码 - 蚂蚁社区-开源源码社区</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, max
你在工作中可能会遇到同时给你说不要重复发明轮子,其实这个说的就是第一:不要做重复的事情,第二:站在巨人的肩膀上。现在有了互联网以及开源的精神,我们的很多在产品中需要实现的功能组件都可以在互联网上找到,我们可以直接拿来用,这样我们就不用重复做东西了,这得益于开源奉献精神。像Google、Facebook这类的大公司都在使用很多的开源产品,比如我们常见的Apache系列、我们使用的Eclipse IDE等等。
在Flutter版本玩Android客户端(4)——知识体系tab点击跳转中,完成了主页面知识体系tab的点击跳转,本文主要完成微信公众号tab的跳转。效果如下
本文实例为大家分享了Android实现ListView下拉刷新上拉加载更多的具体代码,供大家参考,具体内容如下
下拉刷新布局SwipeRefreshLayout是Android又一与时俱进的控件,顾名思义它随着用户手势向下滑动就会触发刷新操作。从实际的下拉效果来看,SwipeRefreshLayout秉承了Android一贯的简洁界面,可定制性并不太好,远不如开源的下拉刷新框架PullToRefresh,但毕竟是原生的控件,用起来比较方便,所以我们还是好好了解了解它。 SwipeRefreshLayout最早在19.1的support-v4库中引入,所以要先确保sdk的“Android Support Library”版本不低于19.1。另外,SwipeRefreshLayout的源码多次升级,因此有新版与旧版之分,两版之间不但支持的方法有区别,而且界面效果也有差异。 下面是SwipeRefreshLayout的常用方法说明: setColorScheme : 设置进度条/圆圈的颜色。(该方法在新版中已被废弃) setOnRefreshListener : 设置刷新监听器。在下拉松开时触发该监听器,需要重写该监听器的onRefresh方法。 setRefreshing : 设置刷新的状态。true表示正在刷新,false表示结束刷新。 isRefreshing : 判断是否正在刷新。 下面是新版增加的方法说明: setColorSchemeColors : 设置进度圆圈的圆环颜色。 setProgressBackgroundColorSchemeColor : 设置进度圆圈的背景颜色。 setProgressViewOffset : 设置进度圆圈的偏移量。第一个参数表示进度圈是否缩放,第二个参数表示进度圈开始出现时距顶端的偏移,第三个参数表示进度圈拉到最大时距顶端的偏移。 setDistanceToTriggerSync : 设置手势向下滑动多少距离才会触发刷新操作。 SwipeRefreshLayout的旧版与新版之间的界面区别主要有: 1、旧版的进度条是布局顶部的一条横线,而新版的布局顶部的一个圆圈。 2、旧版在下拉时,进度条不动,页面会随着向下滑动;而新版在下拉时,页面不再向下滑动,进度圆圈会向下滑动。 这两种显示效果各有千秋,开发者可按照个人喜好决定采用哪种效果。需要注意的是,想要旧版的效果,就得使用旧版的android-support-v4.jar;想要新版的效果,就得使用新版的android-support-v4.jar。新旧两版的v4包见本文末尾的代码工程。 下面是旧版SwipeRefreshLayout的下拉刷新效果截图:
本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下
Apk文件被反编译出来能被获取到里面的代码。对于这种情况,我们可以对项目代码进行混淆,随机生成难理解的类名,方法名,让代码难以阅读,加大功能被盗取的难度。混淆可以起到压缩Apk,混淆文件,预检,优化的作用。
我们做项目久了,都会用到很多开源的框架,今天我就把我所知道的一些好用的框架都汇总整理了一下,因为实在是大多了记不住,所以记下来方便以后使用,过程中参考了很多网上大牛们写的文章,绝无抄袭冒犯之意,就是根据自己的习惯重新修改整理分类了一下,希望对大家以后的开发有所帮助!
一、代码库 1、from 代码家 整理比较好的源码连接 *****************************************************************
写好一个Android模块,比如说一个自定义控件或某个功能的sdk,然后开放出来给别人使用,就得通过某种方式把源码提供给对方。常见的打包方式有: 一、直接给源码,由开发者把代码加入到自己的工程中 该方式主要是些开源的小控件,功能比较简单也不涉及商业机密,所以独乐乐不如众乐乐。开源的自定义控件基本以这种形式发布。 如果自定义控件用到资源文件,也可以由开发者手工将资源文件加入到自己的工程,当然需要修改代码中R文件的import路径。代码+资源文件都加入到工程,代表例子有瀑布流网格控件StaggeredGridView(package名为com.etsy.android.grid),还有滚轮控件WheelView(package名为kankan.wheel.widget)等等。 二、直接给源码工程,由开发者把该工程作为一个引用库加入到自己的工程中 有时候某个开源控件的规模不小,不但代码文件很多,连资源文件都不少,如果直接加入到工程的代价就比较大。不但要改很多路径,而且后期维护也不方便,所以这时往往把开源工程作为library引用到自己工程。具体操作步骤为:右击自己的工程,选择Properties,在弹出窗口的左侧菜单中选择Android,然后在右下方Library区域点击Add按钮,在弹出的小窗中选择要引用的开源工程,点击OK再OK,接着就可在自己工程使用开源库的API了。 这种形式的好处是:开源工程代码和资源文件都无需修改,并且不会与自己工程的文件相混淆。该形式的代表例子有下拉刷新框架pulltorefresh(package名为com.handmark.pulltorefresh.library),以及滑动菜单框架slidingmenu(package名为com.jeremyfeinstein.slidingmenu.lib)等等。 三、把源码打成jar包,由开发者把jar包加入到自己工程的libs目录 直接给源码的方式不利于保护知识产权,并且直接给源码也不方便管理版本,开发者用的时候很可能遇到这样那样的bug。基于以上种种考虑,把源码打成jar包,其实对开发者来说更方便使用。jar打包的具体步骤为:右击要打包的工程,选择Export,在弹出窗口中选择“Java”——“JAR file”,点击Next,然后在新弹窗中勾选src目录,注意res目录是无法打包的,接着点击Browser按钮选择jar包的保存路径,最后点击Finish按钮,等待片刻打包好的jar包便生成完毕。 大部分的java工具都是以jar包的形式发布的,如fastjson、httpmime、zxing等等。 但是jar包方式无法打包res目录,使得layout、values、drawable目录下的xml文件都打包不了。不过有个例外,就是assets目录也是可以打包进jar的。所以如果代码中有用到图片或是文本文件,可以把图片与文本文件放入assets目录,就能一块打包了。当然代码中若要读取图片与文本文件的内容,得借助于AssetManager,具体用法参见《Android开发笔记(二十五)assets目录下的文件读取》。 联合把src和assets打成jar包,该形式的代表例子有百度地图SDK。 四、给出一个库工程,但是src部分打成jar包,由开发者在自己工程中引用该库工程 现在有种情况,我们开发了一个APP,可是客户要求把该APP集成到别的APP中,作为另一个APP的一个频道。因为res目录下文件众多,实在是不可能打成jar包,同时由于商业机密也不能开放src源码,我们就想到一个办法,还是给对方一个库工程,只是src目录打成jar包放到库工程的libs目录。该方式说起来简单,做起来却是麻烦多多,主要问题出在R文件上。由于打成jar包时,原工程中每个资源的资源id都已生成并写死在jar里面,可是对方工程引用库工程时,会重新生成一份库工程的R文件,那么jar包里的资源id就跟R新文件里的资源id不一样,因此总是扔出id找不到空指针的异常。 要解决R文件冲突的问题,基本思路是利用反射机制,预先定义好每个资源的名称,然后在运行过程中动态根据资源名称去找资源id。为了尽可能减少代码修改量,预先定义的资源名称列表保存在R.java中,这样只需批量更改各java源码中R的import路径,无需更改资源id的使用方法。另外在每个Activity启动时都要注入反射用到的Context,下面是通过反射查找资源id的代码例子:
项目中我们经常会用到各种列表需求,有的时候列表数据过多,用户滑动到最下面 ,返回到最上面是很不方便的,所以我们就需要一个一键置顶的功能。
想要弹出内容就可以考虑使用悬浮窗 布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/rl_root" android:layout_width="match_parent" android:layout_height="match_parent"
1. 工作总结: 虽然上周明白了工作不分轻重,都要认真对待,但自诩Geek的可爱程序员们,谁不想干点有技术含量的活,体现自己的能力呢? 这周起来,我终于得到了新任务:为一个模块画界面,总共八个界面。 拿到任务我还是挺开心的,画界面嘛,小菜一碟,看我分分钟搞定,彰显高手风范。 首先要实现的是一个类似qq主界面一样的效果。多个菜单栏可以滑动切换,也可以点击菜单名切换。用一个线性布局+ViewPager就可以搞定。 主界面是一个listView,展示相关信息。以前做过,结果忘了适
在 App 中,列表数据加载是一个很常见的功能,几乎大多数 App 中都存在列表数据的展示,而对于大数据量的列表展示,为提高用户体验、减少服务器压力等,一般采用分页加载列表数据,首次只加载一页数据,当用户向下滑动列表到底部时再触发加载下一页数据。
以前一直都是用PullToRefresh,后来觉得还是太out了。现在很多人都是用RecyclerView,很简单的用法,布局多样化,主要是有瀑布流。这才知道RecyclerView.LayoutManager真正的强大。
常用的一般是 pulltorefresh goole官方推出的是SwipeRefreshLayout 但是这个不能下拉加载 我觉得这个就是硬伤。 推荐还是pulltorefresh.
本文实例为大家分享了android实现ListView下拉刷新上拉加载的具体代码,供大家参考,具体内容如下
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/73554768
内容目录 截止目前github最受欢迎的项目 截止目前github最受欢迎的项目 截止目前github最受欢迎的项目 项目名称 仓库 地址 star 描述 java-design-patterns iluwatar/java-design-patterns git://github.com/iluwatar/java-design-patterns.git 43459 Design patterns implemented in Java elasticsearch elastic/elasticsear
app开发中下拉刷新是最常接触到的一个功能,也有很多开源的框架,封装的非常棒。前段时间了解了一下ViewDragHelper,遂用它实现了下拉刷新的功能。
微信公众号:777开发日志 新年寄语:苟日新 日日新 又日新 如果能够一天新,就应保持天天新,新了还要更新。 我们要努力革新自己,坚持学习,下面给大家统计github最受欢迎项目,一起学习 内容目录 截止目前github最受欢迎的项目 截止目前github最受欢迎的项目 截止目前github最受欢迎的项目 项目名称 仓库 地址 star 描述 java-design-patterns iluwatar/java-design-patterns git://github.com/iluwatar/java-d
Android Studio之gradle的配置与介绍 非著名程序员 1、gradle的简单介绍 Gradle是可以用于Android开发的新一代的Build System,也是Android Studio默认的build工具。其实Gradle脚本是基于一种JVM语言— Groovy,再加上DSL组成的。由于Groovy是JVM语言,所以可以使用大部分的Java语言库。所谓DSL就是专门针对Android开发的插件,比如标准Gradle之外的一些新的方法(Method)、闭包(Closure)等等。通过我们
下拉刷新 pulltorefresh 支持listview,webview,gridview,expandableListview众多控件 1,lv_list = refreshListView.getRefreshableView();//需要拿到refreshListView这个组合控件里面的具体的listview,才可以设置adapter 2.refreshListView.setRefreshing();//开始加载数据的时候.应该显示.正在刷新 3.refreshListView.onR
上一篇文章介绍了高仿京东的沉浸式状态栏,可是跟京东首页的头部轮播图相比,依然有三处缺憾: 1、京东的头部Banner上方,除了有悬浮着的状态栏,状态栏下面还有一行悬浮工具栏,内嵌扫一扫图标、搜索框,以及消息图标; 2、把整个页面往上拉,状态栏的背景色从透明变为深灰,同时工具栏的背景也从透明变为白色; 3、页面下拉到顶后,继续下拉会拉出带有“下拉刷新”字样的布局,此时松手则会触发页面的刷新动作; 上面第一点的状态栏和工具栏悬浮效果,都有对应的解决办法;第二点的状态栏和工具栏背景变更,也存在可行的解决方案。倒是第三点的下拉刷新,以及第二点的上拉监听,却不容易实现。 虽然Android提供了专门的下拉刷新布局SwipeRefreshLayout,但它并没有页面随手势下滚的效果。一些第三方的开源库如PullToRefresh、SmartRefreshLayout固然能让整体页面下滑,可是顶部的下拉布局很难个性化定制,至于状态栏、工具栏的背景色修改更是三不管。因此若想呈现完全仿照京东的下拉刷新特效,只能由开发者编写一个自定义的布局控件了。 自定义的下拉刷新布局,首先要能够区分是页面的正常下滚,还是拉伸头部要求刷新。二者之间的区别很简单,直觉上看就是判断当前页面是否拉到顶了。倘若还没拉到顶,继续下拉动作属于正常的页面滚动;倘若已经拉到顶了,继续下拉动作才会拉出头部提示刷新。所以此处得捕捉页面滚动到顶部的事件,相对应的则是页面滚动到底部的事件。鉴于App首页基本采用滚动视图ScrollView实现页面滚动功能,故而该问题就变成了如何监听该视图滚到顶部或者滚到底部。正好ScrollView提供了滚动行为的变化方法onScrollChanged,通过重写该方法即可判断是否到达顶部或底部,重写后的代码片段如下所示:
这个源码里面 我把 PullToRefreshExpandableListView 和 PullToRefreshListView 也都放进来了,一样的逻辑。希望对大家有用。
导语:MVP开发模式可以帮助项目结构解耦,但其庞大的方法数增加,较为笨重设计对于手Q项目并不很适合。参考之前Web开发经验,提出以页面结构化的解耦方式组织代码。下面讲讲Lego在Android上一次小小尝试 一,MVP简介 MVC太过常见这里不啰嗦。实际应用MVC当中,Activity占据打部分的工作,View和Controller的身份分不清。而MVP则是一种设计模式专门优化Activity / Fragment。 先来看看MVP模式的核心思想:View不直接与Model交互 MVP 把 Activi
原文地址: http://www.jianshu.com/p/48e66e879061
前面介绍了Android UI中的五大布局容器,本节课介绍实际项目当中经常会用到的组件-ListView,它也是一个布局容器,它的每一项就是我们的列表项,每一个列表项都是一块独立的布局,我们可把数据填充到每一个列表项中,这样来完成数据的展示。
领取专属 10元无门槛券
手把手带您无忧上云