recyclerview

RecyclerView

旧巷老猫 提交于 2021-02-17 16:36:48
RecyclerView : 1、升级版的ListView、GridView、瀑布流 支持横向纵向滑动 2、RecyclerView 的使用需要LayoutManager 进行布局管理 1>、LinearLayoutManager 线性布局管理器 -->可以横向或纵向的ListView展示效果 2>、GridLayoutManager 网格布局管理器 -->可以横向或纵向的GridView展示效果 3>、StaggeredDridLayoutManager 瀑布流管理器 3、具体的步骤 1>、将RecyclerView添加到布局中 在代码当中找到该组件 2>、实列化布局管理器 (以线性布局为例) LinearLayoutManager manager = new LinearLayoutManager( this, LinearLayoutManager. VERTICAL , false ) ; recyclerview .setLayoutManager(manager) ; // 添加布局管理器 3>、找数据源(RecyclerView和ListView的用法步骤相差无几) 4>、给RecyclerView设置适配器(自定义适配器) 5>、RecyclerView的适配器是自定义一个类继承RecyclerView.Adapter a、实现该类需要指定泛型类型

一行Java代码实现RecyclerView的Adapter?一行都不需要!

随声附和 提交于 2020-04-07 04:56:19
单类型列表的实现 先看下MainActivity的java代码 public class MainActivity extends AppCompatActivity { //要展示的数据源 public final ObservableArrayList<Student> showDatas = new ObservableArrayList<>(); { //初始化数据源 for (int i = 0; i < 20; i++) { students.add(new Student("学生:" + i)); } showDatas.addAll(students); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //完成数据和布局的绑定 ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main); binding.setActivity(this); } public void onBindItem(ViewDataBinding binding, Object data, int position) {

Android 开发技术周报 Issue#274

青春壹個敷衍的年華 提交于 2020-04-06 11:39:01
新闻/News Play Store搜索结果中现显示APP评分、容量和下载量信息 谷歌发布安卓GPU工具:优化手机GPU性能 可OTA更新驱动 Android-x86 9.0-r2 稳定版发布 在PC上运行 Android 教程 抖音包大小优化-资源优化 两步使用 LiveData 替换 Observable Field Android模拟器检测体系梳理 开源库/Librarys LoadingImagesAnimation Android loading animation with images changing simiasque A developer tool to hide Android status bar under an overlay mask CustomBottomSheetBehavior Custom BottomSheetBehavior for Android that mimic Google Maps behavior CornerSheet Behavior to make a view expands from corner StarrySky 🔥A Powerful and Streamline MusicLibrary(一个丰富的音乐播放封装库,支持多种音频格式,完美解决你的问题。) CrashReporter

2018 技术文章合集,200+ 篇

我的梦境 提交于 2020-04-04 00:26:19
2017 文章合集 2017 年度文章分类整理 下面是 2018 年公众号所发表的文章分类整理 面经 一年经验 Android 面试记录 记自己 2018 年三月份的面试经历 怎样在 Android 面试中聊聊多线程 2018 Android ;面试心得,已拿到 offer 从技术面试官的角度谈谈简历和面试那些事儿 Android开发面试经—常见面试官提问Android题 蚂蚁金服面试经历-临场发挥 OPPO Android 开发技术面总结 项目、开源库 碎阅:一款基于 douban 及 ONE API 开发的资讯类 App Android 权限-HaloPermission 详细介绍 年中 Android 开源库推荐 Android断点续传下载器JarvisDownloader 行×××路:打造一个灵活易用的Banner组件 Android开发之漫漫长途XVI——ListView与RecyclerView项目实战 Android人脸识别app——基于Face++,MVP+Retofit+RxJava+Dagger高度解耦 首个hybird商业项目踩坑总结 功能 Demo 实现城市列表的排序及模糊查询 基于 zxing 的二维码扫描 [Android进阶]OFO首页实现小窥 Android 自己开发的消息事件小项目DBus 教你用Java来玩答题(百万英雄/冲刺大会等) "巧

阿里大神动态教你ViewGroup(实现微信朋友圈九宫格图片控件)你还不来看看吗?

风格不统一 提交于 2020-04-02 05:51:54
简介 最近项目里有个类似微信朋友圈的九图控件的需求,Github找了一下,发现都不太满足需求,我需要单张图片的时候可以按照图片宽高比列在一定范围内自适应,而大多开源项目单张图片也是一个小正方形,所以,干脆自己动手写一个 项目源码 具体自定义NineImageLayout过程,可以查看NineImageLayout。 效果图如下: 主要功能如下: 1:单张图片的时候支持按照图片宽高比列在设定区域内自适应 2:Adapter方式绑定数据和UI 3:图片点击事件回调 4:设置图片间隔大小 5:自由通过Glide设置ImageView圆角效果 使用 1:自定义属性如下 <resources> <declare-styleable name="NineImageLayout"> <!-- 控件宽高 --> <attr name="nine_layoutWidth" format="dimension"/> <!-- 单张图片时的最大宽高范围--> <attr name="nine_singleImageWidth" format="dimension" /> <!-- 图片之间间隙大小 --> <attr name="nine_imageGap" format="dimension" /> </declare-styleable> </resources> 2

RecyclerView进阶:使用ItemTouchHelper实现拖拽和侧滑删除

时光总嘲笑我的痴心妄想 提交于 2020-03-30 07:35:29
现在RecyclerView的应用越来越广泛了,不同的应用场景需要其作出不同的改变。有时候我们可能需要实现侧滑删除的功能,比如知乎首页的侧滑删除,又或者长按Item进行拖动与其他Item进行位置的交换,但RecyclerView没有提供现成的API供我们操作,所幸SDK提供了ItemTouchHelper这样一个工具类帮助我们快速实现以上功能。不多说别的,我们来介绍一下ItemTouchHelper。 什么是ItemTouchHelper This is a utility class to add swipe to dismiss and drag & drop support to RecyclerView.It works with a RecyclerView and a Callback class, which configures what type of interactions are enabled and also receives events when user performs these actions.Depending on which functionality you support, you should override onMove(RecyclerView, ViewHolder, ViewHolder) and / or

RecyclerView拖拽排序和滑动删除实现

蓝咒 提交于 2020-03-30 07:34:58
效果图 如何实现 那么是如何实现的呢?主要就要使用到ItemTouchHelper ,ItemTouchHelper 一个帮助开发人员处理拖拽和滑动删除的实现类,它能够让你非常容易实现侧滑删除、拖拽的功能。 实现的代码非常简单我们只需要两步: 实例化一个ItemTouchHelper 关联到RecyclerView 恩,就是这么简单。 构造方法中需要一个ItemTouchHelper.Callback,ItemTouchHelper会在拖拽的时候回调Callback中相应的方法,我们只需在Callback中实现自己的逻辑就可以了。 自定义一个类继承实现ItemTouchHelper.Callback接口,需要实现以下方法: getMovementFlags用于设置是否处理拖拽事件和滑动事件,以及拖拽和滑动操作的方向,有以下两种情况: 如果是列表类型的RecyclerView,拖拽只有UP、DOWN两个方向 如果是网格类型的则有UP、DOWN、LEFT、RIGHT四个方向 该方法需要编写的代码如下: dragFlags 是拖拽标志,swipeFlags是滑动标志,我们把swipeFlags 都设置为0,暂时不考虑滑动相关操作。 如果我们设置了相关的dragFlags ,那么当我们长按item的时候就会进入拖拽并在拖拽过程中不断回调onMove()方法

仿抖音上下滑动分页视频

我的未来我决定 提交于 2020-03-30 05:55:37
目录介绍 01.先来看一下需求 02.有几种实现方式 2.1 使用ViewPager 2.2 使用RecyclerView 03.用ViewPager实现 3.1 自定义ViewPager 3.2 ViewPager和Fragment 3.3 修改滑动距离翻页 3.4 修改滑动速度 04.用RecyclerView实现 4.1 自定义LayoutManager 4.2 添加滑动监听 4.3 监听页面是否滚动 4.4 attach和Detached 05.优化点详谈 5.1 ViewPager改变滑动速率 5.2 PagerSnapHelper注意点 5.3 自定义LayoutManager注意点 5.4 视频播放逻辑优化 5.5 视频逻辑充分解藕 5.6 翻页卡顿优化分析 5.7 上拉很快翻页黑屏 01.先来看一下需求 项目中的视频播放,要求实现抖音那种竖直方向一次滑动一页的效果。滑动要流畅不卡顿,并且手动触摸滑动超过1/2的时候松开可以滑动下一页,没有超过1/2返回原页。 手指拖动页面滑动,只要没有切换到其他的页面,视频都是在播放的。切换了页面,上一个视频销毁,该页面则开始初始化播放。 切换页面的时候过渡效果要自然,避免出现闪屏。具体的滑动效果,可以直接参考抖音…… 02.有几种实现方式 2.1 使用ViewPager 使用ViewPager实现竖直方法上下切换视频分析 1

实时加载最新新闻列表(可展示网络图片)

好久不见. 提交于 2020-03-29 07:54:06
一、设计思路 1、数据源:新闻api:https://www.jianshu.com/p/c54e25349b77。 2、网络请求:封装一个网络请求工具(使用HttpURLConnection)发送URL,返回数据string。 3、数据获取:使用 AsyncTask 异步加载网络数据,及调用工具类的工具函数。 4、数据解析:根据返回的数据和需要的数据,处理从网上获取的字符串,并使用Gson工具将处理后的字符串转换为我们熟悉的java对象。  5、网络图片展示:自定义一个imageView,用于展示网络图片。(我的是:传入一个网络图片的网址->展示该网络图片) 6、数据展示:使用RecycleView展示列表数据(包括新闻图片、标题、概要、时间)。 7、分析可知需添加依赖: dependencies { implementation 'androidx.recyclerview:recyclerview:1.1.0' implementation 'com.google.code.gson:gson:2.8.6' } 二、效果 三、源代码 1、用于发送网络请求的工具类: package com.me.androidstudy2.utils; import android.util.Log; import java.io.BufferedReader; import java.io

为RecyclerView打造通用Adapter

风流意气都作罢 提交于 2020-03-21 16:57:17
##RecycleView简单介绍 RecyclerView控件和ListView的原理有非常多相似的地方,都是维护少量的View来进行显示大量的数据。只是RecyclerView控件比ListView更加高级而且更加灵活。当我们的数据由于用户事件或者网络事件发生改变的时候也能非常好的进行显示。和ListView不同的是,RecyclerView不用在负责Item显示相关的功能。全部有关布局、绘制、数据绑定等都被分拆成不同的类进行管理。同一时候RecyclerView控件提供了下面两种方法来进行简化和处理大数量集合: 1.基本使用 RecycleView的基本使用 RecycleView导包(可有可无) dependencies中加入 compile'com.android.support:recyclerview-v7:23.1.1' 在布局文件里定义 <android.support.v7.widget.RecyclerView android:id="@+id/rcv_history" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView> 3.对其进行初始化 rcv_history =