【Android 事件分发】事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) 【Android 事件分发】事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 一 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 二 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 三 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 四 | View 事件传递机制 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 五 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 六 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 七 )
框架?下拉刷新控件还能框架化?智能?啥玩意来着?二话不多少先上Demo效果图,咱们再来探个究竟。 Github 传送门(https://github.com/scwang90/SmartRefresh
RecyclerView是Android在support-v7库中新推出控件,中文别名为循环器视图,它的功能非常强大,可分别实现ListView、GridView,以及瀑布流网格的显示效果。 RecyclerView相关工程在sdk中的路径为sdk\extras\android\support\v7\recyclerview,不过幸好用它不像用Toolbar那样麻烦,要想使用Toolbar得先导入并引用v7-appcompat工程(具体步骤参见《Android开发笔记(一百一十九)工具栏Toolbar》),而使用RecyclerView只需像其他第三方jar一样往libs目录添加android-support-v7-recyclerview.jar就好了。 但是若在Eclipse/ADT中调用RecyclerView,可能app运行时会报错“Caused by: java.lang.NoClassDefFoundError: android.support.v7.recyclerview.R$styleable”,这时就不能使用sdk\extras\android\support\v7\recyclerview下面的jar包,而要到extras/android/m2repository/com/android/support/recyclerview-v7目录下,在版本号21.0.0的子目录中找到recyclerview-v7-21.0.0.aar,该aar文件其实是个压缩文件,解压该文件可得到classes.jar,将该jar包更名并加入到你的工程,上面的运行错误应该就没有了。 下面看看强悍的RecyclerView都提供了哪些常用方法: setAdapter : 设置列表项的适配器。有关适配器的详细说明见下一标题。 setLayoutManager : 设置列表项的布局管理器。目前有三种,分别是:线性布局管理器LinearLayoutManager、网格布局管理器GridLayoutManager、瀑布流网格布局管理器StaggeredGridLayoutManager。有关布局管理器的详细说明见本文的后半部分。 addItemDecoration : 添加列表项的分割线。 removeItemDecoration : 移除列表项的分割线。 setItemAnimator : 设置列表项的增删动画。 addOnItemTouchListener : 添加列表项的触摸监听器。因为RecyclerView没有实现列表项的点击接口,所以开发者可通过这里的触摸监听器来监控用户手势。 removeOnItemTouchListener : 移除列表项的触摸监听器。
所有的资源文件都会在R.java文件下生成对应的资源id,我们可以直接通过资源id访问到对应的资源。使用mipmap会在图片缩放在提供一定的性能优化,分辨率不同系统会根据屏幕分辨率来选择hdpi,mdpi,xmdpi,xxhdpi下的对应图片,所以你解压别人的apk可以看到上述目录同一名称的图片,在四个文件夹下都有,只是大小和像素不一样而已!当然,这也不是绝对的,比如我们把所有的图片都丢在了drawable-hdpi下的话,即使手机 本该加载ldpi文件夹下的图片资源,但是ldpi下没有,那么加载的还会是hdpi下的图片! 另外,还有一种情况:比如是hdpi,mdpi目录下有,ldpi下没有,那么会加载mdpi中的资源! 原则是使用最接近的密度级别!另外如果你想禁止Android不跟随屏幕密度加载不同文件夹的资源,只需在AndroidManifest.xml文件中添加android:anyDensity="false"字段即可!
《移动互联网技术》课程是软件工程、电子信息等专业的专业课,主要介绍移动互联网系统及应用开发技术。课程内容主要包括移动互联网概述、无线网络技术、无线定位技术、Android应用开发和移动应用项目实践等五个部分。移动互联网概述主要介绍移动互联网的概况和发展,以及移动计算的特点。无线网络技术部分主要介绍移动通信网络(包括2G/3G/4G/5G技术)、无线传感器网络、Ad hoc网络、各种移动通信协议,以及移动IP技术。无线定位技术部分主要介绍无线定位的基本原理、定位方法、定位业务、数据采集等相关技术。Android应用开发部分主要介绍移动应用的开发环境、应用开发框架和各种功能组件以及常用的开发工具。移动应用项目实践部分主要介绍移动应用开发过程、移动应用客户端开发、以及应用开发实例。 课程的教学培养目标如下: 1.培养学生综合运用多门课程知识以解决工程领域问题的能力,能够理解各种移动通信方法,完成移动定位算法的设计。 2.培养学生移动应用编程能力,能够编写Andorid应用的主要功能模块,并掌握移动应用的开发流程。 3. 培养工程实践能力和创新能力。 通过本课程的学习应达到以下目的: 1.掌握移动互联网的基本概念和原理; 2.掌握移动应用系统的设计原则; 3.掌握Android应用软件的基本编程方法; 4.能正确使用常用的移动应用开发工具和测试工具。
Android提供了两套事件处理机制:基于监听的事件处理;基于回调的事件处理 1.基于监听的事件处理 Android的事件处理是一种委派式事件处理方式(事件源将整个事件处理委托给事件监听器),事件监听的处理模型主要涉及:Event Source(事件源)、Event(事件)、Event Listener(事件监听器)。 小技巧: requestWindowFeature(Window.FEATURE_NO_TITLE); // 去掉窗口标题 getWindow().setFlags(WindowManage
从 Android Studio 3.6 开始,视图绑定能够通过生成绑定对象来替代 findViewById,从而可以帮您简化代码、移除 bug,并且从 findViewById 的模版代码中解脱出来。
在Android开发中,RecyclerView是一种常用的列表控件,用于展示大量数据。然而,随着数据量的增加,RecyclerView的性能可能会受到影响,导致卡顿、内存泄漏等问题。本文将介绍一些优化技巧,帮助大家提升RecyclerView的性能,使其在各种情况下都能保持流畅。
小伙伴们,在上文中我们介绍了Android视图组件CheckBox,本文我们继续盘点,介绍一下视图控件的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 Studio开发实战 从零基础到App上线》(第一版)一书用到的工具和代码资源: 1、本书使用的Android Studio版本为2.2.3,因为Android官网现在不提供该版本的下载,所以博主把该版本的64位安装包上传到了百度网盘,点击https://pan.baidu.com/s/1o80opRG进入下载页面。 如需32位的Android Studio安装包,可前往Android官网页面下载。 2、本书使用的Android NDK版本为r13b,64位NDK安装包的下载页面为https://pan.baidu.com/s/1qXZLMsG 如需32位的NDK安装包,可前往Android官网页面下载。 3、本书提供所有示例源码的demo工程下载,旧版源码(适配Android Studio 2.2)的下载页面为https://pan.baidu.com/s/1c1LXlKG,新版源码(适配Android Studio 3.2)的下载页面为https://pan.baidu.com/s/14NE2DD-frXxuDXUAlTfRaw,最新的源码可访问我的github获取,github地址是https://github.com/aqi00/android2。 4、本书提供配套的ppt课件下载,课件的下载页面为https://pan.baidu.com/s/1kMcHvS4X8u5qdrBD6eUVIg。 源码与各章的对应关系表见下图:
我们通过两篇文章,分别介绍了 DataBinding(Android Jetpack系列——细说DataBinding ) ,以及 DataBinding 的简单使用(DataBinding 的简单使用 ) ,这篇文章,我们来介绍一下 DataBinding 最佳实践——Binding adapters
这次主要是把 RecyclerView 比较常用的基本的点,在这里集中整理一下。从这篇文章主要梳理以下几点:
在android开发中我们不可避免的会用到Recyclerview,用以替代之前的ListView,GridView,Gallery等.它是support:recyclerview-v7中提供的控件,最低兼容到android 3.0版本.之前listview难以实现或者不能实现的效果,它都可以实现或者轻松实现. 1.那么它有哪些优势呢? 总结也就一句话:高类聚低耦合.RecyclerView已经标准化ViewHolder,我们自定义的ViewHoler需要继承 RecyclerView.ViewHolder,然后在构造方法中初始化控件. 2.如何添加依赖?
在【Android 内存优化】自定义组件长图组件 ( 获取图像宽高 | 计算解码区域 | 设置图像解码属性 复用 像素格式 | 图像绘制 ) 博客中完成了图像的区域解码 , 并显示在界面中 ; 本篇博客中主要完成长图滑动功能 , 触摸滑动 , 惯性滑动 , 操作 ;
RecyclerView中的位置(Position): RecyclerView 引入了一个附加的抽象层次在RecyclerView.Adapter 和RecyclerView.LayoutManager 之间,用于在布局计算时成批量地观察数据集的变化. 这样从追踪Adapter(适配器)数据变化到计算动画效果, 产生一个布局管理器(LayoutManager).它同样对提升性能很有帮助,因为所有的组件绑定发生的同事时,避免没有数据改变的组件重新绑定数据. 鉴于上述原因, 在 RecycleView 中有两种类型的与Position相关的方法:
熟悉RecyclerView的人应该都知道,RecyclerView使用了复用机制,当在RecyclerView中得每一项都添加一个CheckBox时,勾选当前页面的几个CheckBox会发现下面还有其他的CheckBox也被勾选了,今天我们就来讨论一下如何解决这个问题。
从Android 5.0开始,谷歌公司推出了RecylerView控件,当看到RecylerView这个新控件的时候,大部分人会首先发出一个疑问,recylerview是什么?为什么会有recylerview也就是说recylerview的优点是什么?recylerview怎么用?等等,下面我们将深入解析recylerview。
介绍图 先上个源代码的链接:https://github.com/whenSunSet/MVVMRecycleView RecycleView是Google替代ListView的一种方案,其有着很高的解耦度,让许多开发者抛弃了以往的ListView,那么RecycleView在MVVM架构下又该怎么实现呢?如何实现单条item刷新以及增减Item的自动刷新呢?今天我就要给大家带来一种方便的高解耦度的解决方案。 1.了解几个工具类 我们先来看几个我制作的工具类,这几个工具类可以一直复用。为啥要介绍他
Kotlin 协程 让我们可以用同步代码来建立异步问题的模型。这是非常好的特性,但是目前大部分用例都专注于 I/O 任务或是并发操作。其实协程不仅在处理跨线程的问题有优势,还可以用来处理同一线程中的异步问题。
城市信息这里我直接使用的是Android前辈搭建的一个服务器获取的,数据链接是http://guolin.tech/api/china,访问返回的是JSON数据类型的省份信息(JSON数据类型的解析后面会再详细说明),需要返回城市时只需要在本链接后加上“/对应省份id”即可获取到相应的城市信息,县市信息也是一样的,原链接加上“/对应省份id/对应城市id”即可。 这里其实也可以从其它天气服务商提供的api接口获取城市信息。
小伙伴们,在上文中我们介绍了Android视图组件Gallery,本文我们继续盘点,介绍一下视图控件的RecyclerView。
首先说明一点昨天发了一篇关于 ListView 的使用入门文章,得到了大家的一致调侃。我的想法是这样的,虽然现在 ListView 已经被 RecyclerView 替代了,但是本系列作为入门系列,力求内容完整!还是有必要提及一下这么重要的控件的,谁能保证老的项目没有 ListView 呢?
1、单击事件,主要用于Button和ImageButton控件,布局视图与TextView、ImageView控件用的也比较多。相关类名与方法说明如下: 监听器类名 : View.OnClickListener 设置监听器的方法 : setOnClickListener 监听器需要重写的点击方法 : onClick 2、长按事件,较少使用,一般长按要么弹出提示对话框,要么弹出上下文菜单(上下文菜单只需注册就好,无需额外处理长按事件)。相关类名与方法说明如下: 监听器类名: View.OnLongClickListener 设置监听器的方法 : setOnLongClickListener 监听器需要重写的点击方法 : onLongClick 3、组合按钮点击事件,一般用于CheckBox控件。相关类名与方法说明如下: 监听器类名 : CompoundButton.OnCheckedChangeListener 设置监听器的方法 : setOnCheckedChangeListener 监听器需要重写的点击方法 : onCheckedChanged 4、单选按钮点击事件,只能用于RadioGroup视图。相关类名与方法说明如下: 监听器类名 : RadioGroup.OnCheckedChangeListener 设置监听器的方法 : setOnCheckedChangeListener 监听器需要重写的点击方法 : onCheckedChanged 常用按钮点击事件的具体实现代码可参考《Android开发笔记(三十七)按钮类控件》。
【Android 事件分发】事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) 【Android 事件分发】事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 一 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 二 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 三 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 四 | View 事件传递机制 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 五 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 六 )
记录 RecyclerView 滚动位置并恢复是一个很常见的需求,通常需要精准恢复到上次的位置。
View 作为Android中最直接的和用户进行交互的单位,对于 View 的事件处理重要程度自然不言而喻,View 的事件处理直接影响到用户体验,下面我们来看一下对 View 的触摸事件的处理:
在我们的项目中,需要用到许多下拉刷新和上滑加载的操作,不说什么没用的,直接来介绍SwipeRefreshLayout的扩展用法。
最早可以追溯到我试玩探探这个 APP 。第一次进入软件界面,就被这种通过卡片式滑动来选择“喜欢/不喜欢”的设计所吸引了。当时就非常想通过自己来实现这种仿探探式的效果,然而却没什么思路。不过毋庸置疑的是,这种效果的原理肯定和 ListView / RecyclerView 类似,涉及到 Item View 的回收和重用,否则早就因为大量的 Item View 而 OOM 了。
Activity的启动模式有四种:Standard、SingleTop、SingleTask和SingleInstance。
继上一篇分析,今天我们来接着分析Activity的Touch事件是如何分发传递的。 都知道在Android中的事件主要包括三部分内容:分发事件dispatchTouchEvent、拦截事件onInterceptTouchEvent、消费事件onTouchEvent。这几乎是所有开发者都要面临的问题,无论是解决一些事件冲突问题,还是自定义View,都会或多或少涉及到。由于其独特的重要性,大多数面试的时候也基本会有所涉及,所以很好的掌握View的Touch事件传递显得尤其重要。 1、Activi
最近打算花点精力来研究 RecyclerView 这个控件架构和原理,对我来说,难度很大,我不清楚最后能不能彻底搞清楚,这个系列的博客会不会被太监,但我会尽我最大努力,并将这整个过程分享出来。 第一篇打算从使用方面入手,力求将 RecyclerView 开放给开发人员的所有接口都体验一番。 前言 虽然在日常开发中,大伙或多或少都会接触到 RecyclerView,但通常,也就是写写 adapter,用个系统提供的 LayoutManager,写写点击事件,处理处理复杂的 item 布局。 也就是说,大部分场
【Android 事件分发】事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) 【Android 事件分发】事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 一 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 二 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 三 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 四 | View 事件传递机制 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 五 )
在上一篇文章Android 面试之必问Java基础一文中,我们介绍了Java面试的一些常见的基础面试题,下面我们来介绍Android开发的一些必问知识点。
回顾整篇文章,发现我们已经实现了RecyclerView的很多扩展功能,包括:打造万能适配器、添加Item事件、添加头视图和尾视图、设置空布局、侧滑拖拽。
本文的代码以图片形式显示,点击图片显示高清图。 前言 下文中Demo的源代码地址:RecyclerViewDemo(Github)。 Demo1: RecyclerView添加HeaderView和FooterView,ItemDecoration范例。 Demo2: ListView实现局部刷新。 Demo3: RecyclerView实现拖拽、侧滑删除。 Demo4: RecyclerView闪屏问题。 Demo5: RecyclerView实现setEmptyView()。 Demo6: Recyc
第一次进入探探软件界面,就被这种通过卡片式滑动来选择“喜欢/不喜欢”的设计所吸引了。当时就非常想通过自己来实现这种仿探探式的效果,然而却没什么思路。不过毋庸置疑的是,这种效果的原理肯定和 ListView / RecyclerView 类似,涉及到 Item View 的回收和重用,否则早就因为大量的 Item View 而 OOM 了。
本文是探索协程如何简化异步 UI 编程系列的第二篇。第一篇侧重理论分析,这一篇我们通过实践来说明如何解决实际问题。如果您希望回顾之前的内容,可以在这里找到——《在 View 上使用挂起函数》。
导语 RecyclerView是Android 5.0提出的新UI控件,可以用来代替传统的ListView。 Bugly之前也发过一篇相关文章,讲解了 RecyclerView 与 ListView 在缓存机制上的一些区别: Android ListView 与 RecyclerView 对比浅析--缓存机制 今天精神哥来给大家详细介绍关于 RecyclerView,你需要了解的方方面面。 本文来自腾讯 天天P图团队——damonxia(夏正冬),Android工程师 前言 下文中Demo的源代码地址: h
《Android移动应用基础教程》(Android Studio)(第二版)黑马程序员 课后习题答案
博客:https://www.jianshu.com/p/1ae2f2fcff2c
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/47214197
1.前言 在android的进阶之路上,看《android开发艺术探索》实在看不下去了,开始怀疑自己的android基础了,于是找了两本android基础的书把android基础过一遍,还确实发现了好多知识漏洞-基于回调的事件,这个还真以前没用过,然后就想着把android事件处理机制的知识点都整理一遍,嗯,就是这样的。 2.基于监听的事件 基于监听的事件更接近于“面向对象”的事件处理,这种处理方法与java的AWT/Swing的处理方式相同。 2.1监听的处理流程 基于监听的事件
领取专属 10元无门槛券
手把手带您无忧上云