自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ITRenj的博客

相互学习,共同进步

  • 博客(81)
  • 资源 (16)
  • 收藏
  • 关注

原创 Fragment(四)常见问题

通过这篇博客,我们能知道以下问题:* `Fragment` 在不同情况下实现网络延迟* `Fragment` 为什么一定要有无参构造?* `Fragment` 与 `Activity` 传递数据方式* 嵌套 `Fragment` 时父 `Fragment` 生命周期传递到子 `Fragment` 中的方式......

2022-07-14 19:24:53 809 1

原创 Fragment(三)ViewPager中使用Fragment

通过这篇博客,我们能知道以下问题:* `Fragment` 加载到 `ViewPage`上的过程和用户可见性判断* `Fragment` 加载到 `ViewPage2`上的过程和用户可见性判断

2022-07-14 19:22:49 714

原创 Fragment(二)状态改变与管理

通过这篇博客,我们能知道以下问题:`Fragment` 的 `mState` 变化过程 `FragmentManager` 的 `mCurState` 变化过程

2022-05-16 11:39:26 930

原创 Fragment(一)从源码角度看add和replace过程

通过这篇博客,我们能知道以下问题: `Fragment` `add()` 和 `replace()` 方法差别 从源码角度分析 `add()` 和 `replace()` 方法

2022-05-06 16:58:55 796

原创 View和ViewGroup中的mParent

View和ViewGroup中的mParent源码版本为 Android 10(Api 29),不同Android版本可能有一些差别mParent从名字看,应该表示父View,而这篇博客我们就是要探索View和ViewGroup中的mParent分别表示什么,以及在什么地方赋值的。页面顶层View(DecorView)中 mParent 表示的什么?通过《Activity 的组成》 我们知道了界面的顶层View是DecorView,那么我们查看mParent的来源,首先就应该查看 DecorView

2021-06-22 18:24:36 440 1

原创 Activity常见问题

Activity常见问题通过这篇博客,我们能知道以下问题:Activity 各种情况下的生命周期弹出 Dialog 对 Activity 生命周期有什么影响?onActivityResult() 在哪两个生命周期之间回调?Activity 在 onResume() 之后才显示的原因是什么?通过 Sheme 协议打开 ActivityActivity 什么时候会发生重建?在 Activity 的 onCreate() 方法里写死循环会 ANR 吗?1. Activity 生命周期方法相关

2021-06-11 18:05:59 1633 4

原创 Android Handler机制

《Android Handler机制》《Android Handler分析(一) Handler和Message详解》《Android Handler分析 (二) MessageQueue详解》《Android Handler分析 (三) Looper详解和Handler其他知识》《Android 中的 HandlerThread 类详解》作为一个Android程序员,我想大家都知道在做一些比较耗时的操作的时候都不会放在主线程,比如网络请求、数据库操作等(尤其是网络请求,在Android4.0.

2021-03-05 16:00:43 231

原创 Android Activity——启动过程探索(三)

在《Android Activity——启动过程探索(一) 和 《Android Activity——启动过程探索(二) 中我们知道了Activity启动的生命周期回调,并且分析了其中当前Activity的 onPause() 和新打开的Activity的 onCreate() 、 onStart()和onResume()回调执行过程,也就是新的Activity已经完成了 “创建->用户可见->用户可操作” 的过程。那么当前的Activity就变为不可见了,需要执行 onstop() 回调,如

2021-03-02 23:01:35 851

原创 Android Activity——启动过程探索(二)

在《Android Activity——启动过程探索(一)》中我们知道了Activity启动的生命周期回调,并且分析了其中当前Activity的 onPause() 和新打开的Activity的 onCreate() 回调方法执行步骤,在这篇文章中接着分析新打开的Activity的 onStart()和onResume()回调执行过程。注意:以下分析过程,源码版本为 Android 10(Api 29),不同Android版本可能有一些差别。新的Activity调用 onStart()根据上图查看对

2021-02-26 14:05:16 653

原创 Android Activity——启动过程探索(一)

Activity 生命周期:首先来看一下当Activity启动时,会回调哪些生命周期的方法:不关闭当前Activity启动流程:关闭当前Activity启动流程:对于上面的回调过程,我想大部分Android开发者都是知道的,但是对于系统是怎样一步一步来回调这些方法的,可能存在不少疑问。下面我们就通过源码来看看当我们调用 startActivity() 和 finish() 方法时系统是怎样一步步来回调各个方法的。其实对于每一个生命周期方法的调用,都可以看做是一小步,所以我们的分析就可

2021-02-08 16:53:45 687 1

原创 Android Service 流程分析

在前面已经对Service基本使用及aidl使用及源码进行的分析。在这篇文章中,我们来看一下Android Service的启动流程和绑定流程,以便于更好的理解Android Service的机制。启动Service过程Android Service启动时序图上图就是Android Service启动时序图,对照图查看代码。我们在 Activity 中调用 startService() 方法时,直接调用了 调用 ContextWrapper 的 startService()@Overridep

2020-11-23 21:11:47 433

原创 Android Service aidl分析

《Android Service基础》《Android Service回调和配置》《Android Service aidl使用及进阶》《Android Service更多知识》《Android 中的 IntentService 类详解》Android Service 代码地址在介绍正文之前,我们先看看几个知识点进程、线程和Android中的进程间通讯(IPC)。线程:线程时CPU调度的最小单元,同时线程也是一种有限的系统资源。进程:进程一般表示一个执行单元,在..

2020-11-07 21:08:26 366

原创 Android FlowLayout 流式布局

FlowLayout 流式布局Android 流式布局控件,实现自动换行,操出范围可以滑动功能,未使用控件复用功能,所以不应该有太多的子控件。主要包含功能:流式布局,自动换行使用Adapter的形势注入子控件设置子控件之间的间距(水平方向和竖直方向)竖直方向超出高度可以滑动给子控件设置点击监听设置可显示的最大行数,并提供方法判断是否当前所有的子控件都显示完成可以设置行内水平方向上对齐方式(居左对齐、居右对齐、两端对齐/左右对齐、居中对齐)提供自动滚动到顶部、滚动到底部、滚动到指定位置和

2020-11-02 16:13:02 1248 2

原创 Android Service更多知识

这篇文章主要介绍的是一些Service的相关知识,绑定服务中服务器异常中断时处理办法(死亡代理 DeathRecipient)、服务器数据更新后实时通知客户端(回调通知以及RemoteCallbackList)、Service运行线程说明、使用 Messenger 实现 Servie 与 Client 端通信、可以执行耗时操作的Service(IntentService)、怎样选择什么类型的Service死亡代理 DeathRecipient在前面的几篇文章中,我么知道了服务的绑定、aidl的使用等,我

2020-10-29 00:10:27 389

原创 Android Service aidl使用及进阶

AIDL:Android 接口定义语言,可以利用它定义客户端与服务均认可的编程接口,以便二者使用进程间通信 (IPC) 进行相互通信。在 Android 中,一个进程通常无法访问另一个进程的内存。因此,为进行通信,进程需将其对象分解成可供操作系统理解的原语,并将其编组为可供操作的对象。编写执行该编组操作的代码较为繁琐,因此 Android 使用 AIDL 为简化此问题。注意: 只有在需要不同应用的客户端通过 IPC 方式访问服务,并且希望在服务中进行多线程处理时,才有必要使用 AIDL。如果无需跨不同应用

2020-10-26 21:11:10 1563 1

原创 数据结构——链表(二)

在《数据结构——链表(一)》一文中,我们介绍了链表的基本操作与实现,这篇文章我们来进一步学习链表的一些操作链表进阶判断单向链表是否有环快慢指针法: 定义两个指针,通过两个指针的移动速度不同来实现功能,常用来寻找中间节点(快指针移动速度是慢指针的两倍,快指针移动到结尾时,慢指针刚好在中间)、判断单链表是否有环等操作。利用快慢指针法判断单链表是否有环的代码实现如下:public boolean hasCircle() { if (header == null) return false;

2020-10-24 20:38:36 243

原创 数据结构——链表(一)

链表基础链表链表是由一组不必相连【不必相连:可以连续也可以不连续】的内存结构,按特定的顺序链接在一起的抽象数据类型。是一种线性表,但是并不会按线性的顺序存储数据,而是在由一个个节点组成,节点一般包含存放数据的数据域和存放指针的指针域。补充: 抽象数据类型(Abstract Data Type [ADT]):表示数学中抽象出来的一些操作的集合。 内存结构:内存中的结构,如:struct、特殊内存块...等等之类;下图就是一种简单的链表对比数组数组是在相连的内存空间,由相同数据类

2020-10-24 20:23:52 327

原创 Android Service回调和配置

Service 生命周期方法回调创建服务,必须创建 Service 的子类(或使用它的一个现有子类)。可以重写一些回调方法,从而处理服务生命周期的某些关键方面,主要的回调方法有 onCreate()、onBind()、onRebind()、onStartCommand()、onStart()、onUnbind()、onDestroy()。onCreate()首次创建服务时,系统会(在调用 onStartCommand() 或 onBind() 之前)调用此方法来执行一次性设置程序。如果服务已在运行,则

2020-09-29 00:39:55 1585

原创 Android Service基础

简单介绍Service 是一种可在后台执行长时间运行操作而不提供界面的应用组件。服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。此外,组件可通过绑定到服务与之进行交互,甚至是执行进程间通信 (IPC)。例如,服务可在后台处理网络事务、播放音乐,执行文件 I/O 或与内容提供程序进行交互。服务可以分为前台、后台和绑定三种类型。分类前台服务前台服务执行一些用户能注意到的操作。例如,音频应用会使用前台服务来播放音频曲目。前台服务必须显示通知。即使用户停止与应用的交互,前台服务

2020-09-27 23:42:09 492

原创 gradle常用命令和查看错误

Gradle 常用命令和查看错误信息Gradle 是 Android 现在主流的编译工具,使用它可以帮助我们编译、打包APP等过程。同时,我们也可以为Gradle指定构建规则,让它按照我们的指定构建应用。在Android中,我们常用的clean、build等其实就是使用的gradle方式来进行构建的,只是这些Android studio帮我们做了,我们只需要在界面上进行点击就可以了。但是,还有一...

2020-04-01 00:29:12 1902 1

原创 Android实现圆角控件

Android实现圆角控件在Android开发过程中,控件的使用是最常见、最基本的。但是我们都知道,在Android中的控件都是矩形的,而在实际项目中,我们的UI设计师经常会使用一些圆角的控件。那么,在Android有哪些方式可以实现圆角控件了,在使用和适配的过程当中,又有哪些问题了。下面,我将介绍Android中常见的实现圆角方式。自定义方式实现圆角:[外链图片转存失败,源站可能有防盗链机...

2020-03-30 23:48:23 1350

原创 Volley框架(一):使用Volley请求数据

volley官网地址:https://android.googlesource.com/platform/frameworks/volley/volley发布视频:https://www.youtube.com/watch?v=yhv8l9F44qo&feature=player_embedded网络是Android开发中非常重要的一部分,Android系统中主要提供了两种方...

2019-12-21 21:48:32 1471

原创 Android 进度控件

Android 进度控件Android 圆形、半圆形进度效果、半圆SeekBar、刻度尺效果实现代码下载:GitHub地址效果图控件的使用布局中设置属性 <!-- CircleProgressView(圆形进度条) --> <com.renj.progress.CircleProgressView android:id="@+id/circl...

2019-11-30 23:40:13 478

原创 Android开发常见问题

Android开发常见问题解决Android7.0 以上系统无法使用工具抓包问题解决Android7.0 以上系统无法使用工具抓包问题1 在res/xml 夹下新建 network_security_config.xml 文件2 在 network_security_config.xml 文件中输入一下内容: <?xml version="1.0" encoding="u...

2019-11-01 16:27:55 269

原创 Activity 启动模式及任务栈探究

Activity 启动模式及任务栈探究在Android中,默认情况下,当我们启动一个Activity的时候,系统会创建一个Activity实例然后将它放入任务栈(任务栈是一个 “后进先出” 的栈结构)中,当我们按 back 键返回时,这些Activity就会一一回退。但是当我们重复启动一个Activity多次时,就会创建多个该Activity的实例,同样返回时要多次返回一个一个退出才行,在很多情...

2019-08-08 20:00:53 778

原创 ViewModel+LiveData+DataBinding使用

ViewModel+LiveData+DataBinding使用Android DataBinding 使用博客说明Android DataBinding 使用测试代码简书:ViewModel、LiveData 使用CSDN:ViewModel、LiveData 使用在上面的内容中,知道了 DataBinding 的使用,以及 ViewModel和LiveData的使用,在LiveDat...

2019-07-30 15:30:36 2450 7

原创 ViewModel、LiveData 使用

ViewModel、LiveData 使用官方中文教学地址在看以下内容之前,如果对DataBinding不够熟悉,建议先对DataBinding进行了解。Android DataBinding 使用博客说明Android DataBinding 使用测试代码ViewModel 简介ViewModel类是用来保存UI数据的类,它会在配置变更(即 Configuration Change,...

2019-07-23 02:29:39 502

原创 Android好用/常用框架整理

Android好用/常用框架整理(持续更新中…)数据库框架greenDaoGitHub地址:greenDaogreenDao数据库升级帮助框架:GreenDaoUpgradeHelper构建框架MVVM快速构建MVVM架构帮助框架:MVVMLight...

2019-07-17 01:06:42 477

原创 Java中Collection和Map体系(Java容器)

Java中Collection和Map体系(Java容器)Java常用容器类继承关系图解Java容器类简介Java中容器类主要分为四中体系:List、Set、Queue、Map。List:代表有序、可重复的集合;Set:代表无序、不可重复的集合;Queue:代表一种队列集合实现;Map:代表具有映射关系的集合。容器简介Collection:Collection体系中的基本接口...

2019-07-01 00:02:44 567

原创 Android页面状态控制框架(RPageStatusController)

Android页面状态控制框架(RPageStatusController)在Android开发中,对于需要加载网络数据的页面,一般页面都会对应多种状态,常见的有:加载中状态、网络错误状态、内容为空状态、内容状态、加载失败状态以及没有找到相关内容状态等。对于这种需求,一般的做法是在需要有多种状态的页面的跟布局使用 FrameLayout,然后添加不同的状态页面,最后在代码中进行控制。当然为了编...

2019-06-25 17:28:43 993

原创 Android RecyclerView —— 自定义分割线

Android RecyclerView —— 自定义分割线Android RecyclerView —— 基本使用Android RecyclerView —— 适配器封装探索前面说了 RecyclerView 的基本使用以及对适配器的封装,但是在使用 ListView 时,有 dividerHeight 和 divider 属性用来设置分割线的高度和颜色(Drawable),但是在 Re...

2019-06-17 16:39:49 3423

原创 Android RecyclerView —— 适配器封装探索

Android RecyclerView —— 适配器封装探索RecyclerView 适配器的编写RecyclerView 如果需要填充数据,就必须使用到适配器。在一般情况下,我们定义一个适配器只需要定义一个类,然后集成 RecyclerView.Adapter 类,然后实现齐总的抽象的方法即可,如下,实现一个简单的适配器:public class MyAdapter extends Re...

2019-06-16 16:22:52 1512 5

原创 Android RecyclerView —— 基本使用

Android RecyclerView —— 基本使用RecyclerView 我相信大家都不陌生,是Google在Android 5.0 的时候推出的一个可以在有限的窗口中展示大量数据集的控件(类似的控件有ListView、GridView),放在了 com.android.support:recyclerview-v7:xx.x.x 包下(xx表示版本),那么既然已经有了ListView、...

2019-06-12 16:32:17 4153

原创 Dagger 2.11及以上的简便用法

Dagger 2.11及以上的简便用法关于 Dagger2 的使用网上有很多的例子,这里就不在多说了。但是dagger2在使用的过程中我们几乎需要在每个页面去调用类似代码如下:MainComponent component = DaggerMainComponent.builder() .mainModule(new MainModule()).build(); ...

2018-12-26 19:23:00 446

原创 Vim基本操作

Vim基本操作Vim一般认为有三种模式命令模式:该模式下是不能直接对文件进行编辑,可以输入快捷键进行一些操作(删除行,复制行,移动光标,粘贴等等)【打开文件默认进入的模式】编辑模式(输入模式):该模式下可以对文件的内容进行编辑末行模式(尾行模式):该模式下可以在末行输入命令来对文件进行操作(搜索,替换,保存,退出,撤销,高亮等等)Vim的打开文件方式【vim 文件路径】:打开指定...

2018-11-25 18:03:31 405

原创 Linux 基本指令

Linux 基本指令推荐:linux命令大全Linux关机命令常用:halt、reboot重启命令rebootshutdown -r now 立刻重启shutdown -r 10 过10分钟自动重启shutdown -r 20:35 在时间为20:35时候重启shutdown -c 取消重启关机命令haltpoweroff 立刻关机shutdown -h now...

2018-11-13 00:27:00 222

原创 Android DataBinding

Android DataBindinggithub 传送门 https://github.com/itrenjunhua/AndroidDataBinding简单使用数据绑定1、添加 Android DataBinding 支持Android studio 需要在1.3以上,在module级别的gradle中添加大DataBinding支持android { data...

2018-11-06 09:40:50 1194

原创 Android适配生成对应的values文件

Android适配生成对应的values文件(如:values-1080x1920)使用如下Java代码自动生成多个values文件夹以及对应的lay-x、lay-y文件import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io...

2018-10-09 10:31:03 1189

原创 Android 中的 IntentService 类详解

Android 中的 IntentService 类详解简介、与 Service 的区别IntentService 继承至 Service ,所以 Service 的特点 IntentService 也全部拥有。首先,我们看一下 Service 的一些问题: Service 默认运行在主线程,不能执行耗时操作; 如果要在 Service 中执行耗时的操作,需...

2018-03-07 14:29:25 413

原创 Android 中的 HandlerThread 类详解

Android 中的 HandlerThread 类详解简介HandlerThread 类继承至 Thread 类,你可以把它看做是一个普通的线程类;当然,既然我们今天要说它,就不能在把它看做是一个普通的线程类了类处理了。HandlerThread 类与普通的线程类的主要区别就是:重写 run() 方法,并且创建了一个属于自己线程包含消息队列 Looper 对象;同时提供了 getLo...

2018-03-06 18:18:29 808

RxJava2 中常用操作符和Subject常用子类说明、RxBus类(新)

RxJava2 中常用操作符和Subject常用子类说明 CSDN博客说明:http://blog.csdn.net/itrenj/article/details/78753765 GitHub传送门:https://github.com/itrenjunhua/RxJava2Operator

2017-12-11

RxJava2常用操作符示例代码

RxJava2中常用操作符示例代码以及详细注释 博客说明:http://blog.csdn.net/itrenj/article/details/78753765 GitHub传送门:https://github.com/itrenjunhua/RxJava2Operator

2017-12-08

EditText扩展XEditText

EditText内容格式化控件 XEditText 和 输入内容过滤器工具类。 GitHub地址:https://github.com/itrenjunhua/XEditText

2017-10-11

Android 浮动菜单

Android 浮动菜单效果,博客查看效果图http://blog.csdn.net/itrenj/article/details/73224692 GitHub地址:https://github.com/itrenjunhua/FloatingMenu

2017-06-14

Git 基本使用(常用命令)

Git版本控制工具对命令模式使用的整理

2017-04-14

Git 在Android Studio中的使用

Git 版本控制工具在Android Studio中的使用说明文档

2017-04-14

Git基本使用

Git版本控制工具对命令模式使用的整理

2017-04-14

RecyclerView使用示例

RecyclerView 使用大全测试项目,主要包含怎样使用不同的RecyclerView.LayoutManger实现不同风格的布局(ListView类型?GridView类型?瀑布流?)、给RecyclerView添加分割线、给 item 添加点击事件和长按事件、使用 GridLayoutManager 指定item占用列数、使用多种 item 类型、与 SwipeRefreshLayout 控件结合实现刷新和自动加载更多以及使用 ItemTouchHelper 实现拖拽和侧滑删除效果;同时,将Adapter进行的简单的封装。是一个完整的Android Studio项目(studio版本:2.3.1)。 (博客效果图代码,博客地址:http://blog.csdn.net/itrenj/article/details/70163238)

2017-04-14

Glide框架测试

1.在GlideUtils这个类中封装了一些加载图片的方法,加载图片时调用一个方法即可,可扩展;2. 有一个针对Glide配置的类——ConsumerGlideModule类,在类中对Glide进行了一定的配置,可扩展;3.针对ListView和GridView这控件提供了一个方法,调用这个方法,将ListView或GridView传入就可以实现快速滑动时不加载图片,手指触摸滑动或停止滑动时恢复加载图片。4.图形工具类BitmapUtils 这个类中都是静态方法,提供了一些对Bitmap对象操作的方法(代码中没有用到)。文件是一个Android Studio项目,解压之后直接用Android Studio打开即可,不需要导入。

2017-04-10

OkHttp库封装

MyOKHttp主要包含以下功能: 1.获取数据(后台返回的为json数据,需要解析成不同的数据类型时,使用不同的ResponseHandler即可;如果后台返回xml数据,需要参照response包下的类进行扩展) 2.提交数据(表单类型数据、String类型数据、json类型数据) 3.带进度的上传和下载文件 4.将请求保存(保存大小可设置),支持以不同的形式取消单个、多个或全部请求 代码使用链式调用方式。 压缩文件包含一个Android Studio项目(项目中包含一个库myokhttp和一个代码示例Simple)和MyEclipse项目(包含提交json、string数据以及上传、下载文件的服务端代码,所以在运行Simple的相关功能时需要改变ip地址,MyEclipse项目只包含代码)

2017-03-29

Volley封装

Volley框架封装,主要包含(封装)以下功能: 1.获取String、Bean、Json等类型的数据 2.提交表单数据 3.上传文件 4.加载图片,并且使用三级缓存 将Volley的相关操作封装成一个库,下载文件包含Volley工具库和一个使用实例,下载之后直接使用Android studio打开VolleyTest即可(完整项目,不需要导入);文件上传使用的是自己实现的servlet服务器,所以将服务端代码(使用MyEclipse工具)也一并上传了,直接发布到Tomcat中就可以使用了。

2017-03-07

Picasso简单封装

1.Picasso的工具类PicassoUtils 这个类使用单例设计模式,全局使用一个,也就是全局使用一个Picasso对象,在Demo中我是在基类(BaseActivity)中初始化的;在PicassoUtils这个类中封装了一些加载图片的方法,加载图片时调用一个方法即可;另外在这个类中写了一个图形装换的方法的内部类,可以将图片转换为圆形和指定圆角大小的圆角矩形,其他转换可以根据需要进行扩展。 2.图形工具类BitmapUtils 这个类中都是静态方法,提供了一些对Bitmap对象操作的方法,包括将图片变为圆角矩形、圆形、对图片进行压缩处理、水平翻转原图、将彩色图片变为黑白图片等一些方法。 3.针对ListView和GridView这类控件类 在这个类中写了一个方法,调用这个方法,将ListView或GridView传入就可以实现快速滑动时不加载图片,手指触摸滑动或停止滑动时恢复加载图片。 文件是一个Android Studio项目,解压之后直接用Android Studio打开即可,不要导入。

2016-12-29

Android 操作引导工具

Android新应用操作引导代码。1.添加模糊层,可以指定控件不添加(高亮),高亮区域支持矩形和圆形。2.支持添加覆盖整个页面的引导;3.支持高亮区域显示边框,边框支持实线和虚线两种形式以及设置颜色。引导内容通过xml布局文件实现自定义,可以动态设置模糊层背景颜色。上传的文件包括一个库和一个使用实例。

2016-12-26

Android 操作引导

Android新应用操作引导代码。1.添加模糊层,可以指定控件不添加(高亮),高亮区域支持矩形和圆形。2.支持添加覆盖整个页面的引导;3.支持高亮区域显示边框,边框支持实现和虚线两种形式。引导内容通过xml布局文件实现自定义,可以动态设置模糊层背景颜色。上传文件包括一个Android库和一个使用实例,直接使用Android studio打开运行即可。

2016-12-26

Android 水波纹效果

Android自定义控件实现动态百分比水波纹效果,支持修改波纹长度、波峰高度、颜色、是否需要边框、边框的颜色、大小、可以控制波纹的移动速度,支持矩形和圆形两种效果。所有属性可以通过布局文件设置,也可以在代码中设置。

2016-12-25

Android水波纹效果

Android自定义控件实现动态百分比水波纹效果,支持修改波纹长度、波峰高度、颜色、是否需要边框、边框的颜色、大小、可以控制波纹的移动速度,支持矩形和圆形两种效果。所有属性可以通过布局文件设置,也可以在代码中设置。

2016-12-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除