recyclerview

使用SwipeRefreshLayout和RecyclerView实现仿“简书”下拉刷新和上拉加载

喜你入骨 提交于 2019-12-09 23:16:43
一、概述 我们公司目前开发的所有 Android APP都是遵循 iOS 风格设计的,这并不是一个好现象。我决定将Android 5.x控件引入最近开发的项目中,使用RecyclerView取代以往使用的ListView、GridView,使用SwipeRefreshLayout取代pull-to-refresh第三方库,打造更符合Material Design风格的APP。 本篇博客介绍的就是如何使用SwipeRefreshLayout和RecyclerView实现高仿简书Android端的下拉刷新和上拉加载更多的效果。 根据效果图可以发现,本案例实现了如下效果: 第一次进入页面显示SwipeRefreshLayout的下拉刷新效果 当内容铺满屏幕时,向下滑动显示“加载中…”效果并加载更多数据 当SwipeRefreshLayout正在下拉刷新时,将屏蔽加载更多操作 当加载更多数据时,屏蔽有可能的重复的上拉操作 当向上滑动RecyclerView时,隐藏Toolbar以获得更好的用户体验 二、代码实现 MainActivity package com.leohan.refresh; import android.os.Bundle; import android.os.Handler; import android.support.v4.widget

RecyclerView的基础使用

做~自己de王妃 提交于 2019-12-07 20:12:56
RecyclerView的基本功能介绍: 1. 通过setLayoutManager方法可以设置布局,几个子类布局如下: -> LinearLayoutManager(ListView形式的布局) -> GridLayoutManager(GridView形式的布局) -> StaggeredGridLayoutManager(瀑布流形式的布局,其实本质还是GridView,只是每个Item的高度不一样) 2. 通过addItemDecoration设置Item之间的分割线 3. 通过setItemAnimator设置添加,删除Item时的动画 本文由于需要展示ListView,Vertical GridView,Horizontal GridView和Staggered(瀑布流),所以就不设置Item之间的分割线,直接在XML中设置Item的间距替代。 主界面的布局(activity_main): <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"

android手机卫士、3D指南针、动画精选、仿bilibli客户端、身份证银行卡识别等源码

荒凉一梦 提交于 2019-12-07 17:16:01
Android精选源码 android身份证、银行卡号扫描源码 android仿bilibili客户端 android一款3D 指南针 源码 android手机卫士app源码 android提醒应用,Material 风格,可以设置重复提醒 android带箭头指示选中位置 RecyclerView实现的广告图轮播,消息轮播,简单易用 android商品条形码、二维码搜索源码 android全局调整字号源码 android全球动画精选源码 Android优质博客 基于RecyclerView addView时思想改变子View宽高时局部刷新界面 忽然发现很多新技术都没弄过,RecyclerView居然也没用过,于是乎就学习了一下RecyclerView的用法顺带大概看了一下RecyclerView源码,在看到RecyclerView 滑动时调用LayoutManager类的layoutChunk函数addView的时候,我好奇的看了一下,这货为什么滑动中add... 阅读原文 Android性能优化 应用层的性能优化通常可以从以下几个方面考虑1.界面布局优化(merge ,include ,ViewStub,减少布局嵌套层次);merge可进行多余嵌套层次的移除处理,include复用同一布局在多个界面中 ,ViewStub可进行隐藏布局的不加载。2

【Android】RecyclerView

南楼画角 提交于 2019-12-07 14:26:26
#RecyclerView ##RecyclerView简明 RecyclerView 在v7.21+包中,是一个用来展示大量数据的组件,或者说,就是ListView的改善版本(注:现阶段的功能没有ListView完善,因此想完全取代ListView的话并不明智)。 相比ListView,RecyclerView的扩展性更好,因此也更适合与android新曾的组件配合使用,这样使用起来更得心应手。 RecyclerView与ListView的原理差不多,本质上都是以适配器为核心。只不过ListView缓存的是view,viewHolder附着在view上,而RecyclerView缓存的是viewHolder,view包含在viewHolder内。 如果我们将ListViewAdapter稍作修改,也可以实现这种设计: abstract class LvAdapter<VH extends LvAdapter.ViewHolder> extends BaseAdapter { public class ViewHolder { private View view; public ViewHolder(View view) { this.view = view; } public View getView() { return view; } } @Override public

RecyclerView的通用适配器,和滚动时不加载图片的封装

我只是一个虾纸丫 提交于 2019-12-06 22:41:28
很早之前写过一篇讲ListView的万能适配器的方案 通用Adapter与ListView滚动时不加载图片的封装 ,可以让你在写ListView的Adapter时只关注对控件设置内容,而不需要再去考虑ViewHolder、控件初始化、以及实现BaseAdapter的其他三个必须实现的函数。 对于RecyclerView我们需要使用RecyclerAdapter,使用方式与ListViewAdapter类似,具体代码大家可以在网上搜索,这里就只教大家使用封装后的简洁RecyclerAdapter了。 ##核心代码 首先我们来看一部分核心代码: public abstract class BaseRecyclerAdapter<T> extends RecyclerView.Adapter<RecyclerHolder> { public BaseRecyclerAdapter(RecyclerView v, Collection<T> datas, int itemLayoutId) { //... } /** * Recycler适配器填充方法 * * @param holder viewholder * @param item javabean * @param isScrolling RecyclerView是否正在滚动 */ public abstract void

案例分析:设计模式与代码的结构特性—适配器模式

家住魔仙堡 提交于 2019-12-06 22:01:58
一.设计模式简介 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。 二.设计模式的使用 设计模式在软件开发中的两个主要用途。 1.开发人员的共同平台 设计模式提供了一个标准的术语系统,且具体到特定的情景。例如,单例设计模式意味着使用单个对象,这样所有熟悉单例设计模式的开发人员都能使用单个对象,并且可以通过这种方式告诉对方,程序使用的是单例模式。 2.最佳的实践 设计模式已经经历了很长一段时间的发展,它们提供了软件开发过程中面临的一般问题的最佳解决方案。学习这些模式有助于经验不足的开发人员通过一种简单快捷的方式来学习软件设计。

Android 为TV端助力之解决ViewPager嵌套RecyclerView水平滑动问题

折月煮酒 提交于 2019-12-06 12:17:13
public class MyViewPager extends ViewPager { private RecyclerView recyclerView; public MyViewPager(@NonNull Context context) { super(context); } public MyViewPager(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public void setView(RecyclerView recyclerView){ this.recyclerView = recyclerView; } private int startX, startY; @Override public boolean onInterceptTouchEvent(MotionEvent ev) { if(null != recyclerView){ switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: startX = (int) ev.getX(); startY = (int) ev.getY(); getParent()

Kotlin实战案例:带你实现RecyclerView分页查询功能(仿照主流电商APP,可切换列表和网格效果)

落花浮王杯 提交于 2019-12-06 10:32:26
随着Kotlin的推广,一些国内公司的安卓项目开发,已经从Java完全切成Kotlin了。虽然Kotlin在各类编程语言中的排名比较靠后(据TIOBE发布了 19 年 8 月份的编程语言排行榜,Kotlin竟然排名45位),但是作为安卓开发者,掌握该语言,却已是大势所趋了。 Kotlin的基础用法,整体还是比较简单的,网上已经有很多文章了,大家熟悉下即可。 案例需求 此次案例,之所以选择分页列表,主要是因为该功能通用性强,涵盖的技术点也较多,对开发者熟悉Kotlin帮助性较大。 案例的主要需求如下( 参考主流电商APP实现 ): 1、列表支持手势滑动分页查询(滑动到底部时,自动查询下一页,直到没有更多数据) 2、可切换列表样式和网格样式 3、切换样式后,数据位置保持不变(如当前在第100条位置,切换样式后,位置不变) 4、footview根据查询状态,显示不同内容: a、数据加载中... (正在查询数据时显示) b、没有更多数据了 (查询成功,但是已没有可返回的数据了) c、出错了,点击重试!!(查询时出现异常,可能是网络,也可能是其他原因) 5、当查询出错时,再次点击footview,可重新发起请求(例如:网络异常了) 6、当切换网格样式时,footview应独占一行 设计 虽然是简单案例,咱们开发时,也应先进行简单的设计,让各模块、各类都各司其职、逻辑解耦

Android RecyclerView滚动定位

大兔子大兔子 提交于 2019-12-06 10:26:59
转载请标明出处: http://blog.csdn.net/tyzlmjj/article/details/49227601 本文出自:【M家杰的博客】 概述 RecyclerView在安卓开发中非常实用,而且简单易用,但是在实际开发中一直有一个问题困扰着我,就是定位问题,实际的项目中总是会遇到这样的需求:检索RecyclerView的某一项(各个项的高度不确定),然后定位这一项,将它显示在顶部。用RecyclerView的默认移动的方法并不能实现这一点(个人感觉官方可能出于性能考虑才不实现这一点)。这篇博客就讲解下我个人是如何实现这个需求的。 Demo演示 敲代码前的思考 RecyclerView提供的用于控制移动的方法有2个 - scrollToPosition(int) 这个方法的作用是显示指定项,就是把你想置顶的项显示出来,但是在屏幕的什么位置是不管的,只要那一项现在看得到了,那它就罢工了! - scrollBy(int x,int y) 这个方法是自己去控制移动的距离,单位应该是像素。 使用scrollToPosition时,移动到前面的项时,它默认会将要显示的项置顶,但是移动到后面的项时,位置就说不好了(看它心情!)一般会显示在最后一个。用过的应该都有所了解。 使用scrollBy时就需要自己计算高度或者宽度。在动态的布局中且各项样式高度可能都不一样的情况下

Android RecyclerView: Super Fast ListView 超级快速的Lis

℡╲_俬逩灬. 提交于 2019-12-06 08:59:22
Android RecyclerView: Super Fast ListView 原文来自我的微信公众号: longkai_1991 先上图,看效果: 前几天刚release完公司的一个项目,有了点时间,于是就想找一些有意思的东西学习一下,顺便运用在项目之中。看到iOS的同事们在谈论iOS8的xx特性时,我突然也有想在公司项目的下一个版本中添加Android L版本的特性。 六月底的时候收看Google io时,当时对Android新的设计语言,Material Design,没什么太大的好感,感觉色彩一坨一坨的,好难看的样子,当时觉得亮点就是新的ART运行时环境和一些酷炫的动画效果。再后来,8月初的时候,自己出于好奇真的拿Nexus 5安装了一个L的预览版,体验很差...好多软件都还是holo的,反正觉得不是很期待就是啦。 回到重点,下载好最新的SDK,你会发现在 ANDROID_HOME/extras/android/m2repository/com/android/support 下面多了不少兼容库, cardview , support-annotations , recyclerview-v7 ,眼前一亮吧~这回,Google真的是拿出了好多东西呀,赞,尤其是cardview和recyclerview这两个新的控件,这个在Google最新的Material