- 博客(81)
- 资源 (212)
- 问答 (1)
- 收藏
- 关注
原创 RecyclerView 悬浮吸顶效果实现,支持数据绑定及Touch事件
诸如联系人列表、分类页商品类表等分组场景,都可能需要悬浮吸顶的效果。Android 官方并未提供原生的组件来实现这个功能,因此需要我们自定义实现。网上看到的基本实现思路都是通过 ItemDecoration ,在滑动过程中去根据当前滑动位置,绘制吸顶的视图。如果只是需要简单的绘制,确实通过这个方式要简单的多。但是通过这种方式无法支持 Touch 事件。感兴趣的可以参考一下这个:https:/...
2019-11-27 13:40:15 1747
原创 RecyclerView Adapter 实现自动多 ViewType
前言多Type的列表在App中很常见,例如各种电商类App的首页,甚至是购物车、订单详情页面等。我们暂且将页面上每个ViewType对应的模块称之为楼层。那么,以电商订单详情举例,可能有以下楼层:订单状态(交易成功、交易关闭等)物流信息收货地址订单商品信息列表价格相关信息订单信息(订单号、交易流水号等)其他一些展示信息那么,我们可以通过不同的 ViewType 来区分这些模块...
2019-11-26 20:36:32 1407 2
原创 IDEA 插件开发
文章目录前言插件工程创建插件工程结构plugin.xmlPlugin ActionAction 是什么创建Action注册Action快速创建Action运行插件打包插件安装插件Plugin ComponentsComponents 类型创建 Component获取 Component 实例持久化PropertiesComponentPersistentStateComponent注册持久化组件G...
2019-08-22 10:00:41 3247
原创 关于 RecyclerView 优化的一些建议
RecyclerView 几乎已经取代了 ListView & GridView,但为了达到更好的性能体验,还是需要做一些适当的优化的。布局优化首当其冲,减少层次结构、减少过渡绘制,可以提高item的解析测量与绘制的效率。另外,应该尽量避免多次measure & layout 次数。1、 View 的三大过程 从ViewRoot的 performTraversals() 方法开始,依次经过 mea
2018-04-24 14:52:04 9352 1
原创 滴滴开源Android插件化框架VirtualAPK原理分析
概述Activity 支持Hook ActivityManagerServiceHook Instrumentation启动插件ActivityService 支持ContentProvider 支持Receiver 支持小结概述滴滴出行公司的首个对外开源项目 - VirtualAPK。地址:https://github.com/didi/VirtualAPK滴滴自行研发了这款插件化
2017-07-08 19:30:10 23150 13
原创 从源码的角度解析Handler、Looper、Message和MessageQueue
导语HandlerHandler 作用MessageMessage 结构Message 创建及发送MessageQueueMessageQueue 结构插入消息读取消息LooperLooper 创建Looper 开启循环线程阻塞问题结语导语虽然很基础的一个东西,然是最近面试中还是常常最被问到,而且都是到源码层,因此决定再造一...
2017-07-04 14:03:43 1952
原创 手把手带你撸一套Android简易ORM框架
ORM概念实体模型建立注解列ID主键自增长数据表的列实体基类实体类映射成表结构数据库操作封装数据库升级ORM概念对象关系映射(Object Relational Mapping),通俗来讲就是建立关系型数据库与业务实体对象之间作一个映射关系。对于Java后端来说,例如mybatis、hibernate等,在Android平台下,常见的数据库映射框架有 GreenDAO、Realm
2017-06-07 19:41:05 2290
原创 HashMap 内部原理
HashMap 内部实现通过名字便可知道的是,HashMap 的原理就是散列。HashMap内部维护一个 Buckets 数组,每个 Bucket 封装为一个 Entry 键值对形式的链表结构,这个 Buckets 数组也称为表。表的索引是 密钥K 的散列值(散列码)。如下图所示:链表的每个节点是一个名为 Entry 的类的实例。 Entry 类实现了 Map.Entry 接口,下面是
2017-04-06 12:01:15 7117 2
原创 Android 7.1.1 之实现 3D Touch
转载请注明出处:http://blog.csdn.net/yyh352091626/article/details/68962736Shortcut概念具体实现BuildConfig 配置静态配置动态配置创建删除或禁用更新返回栈问题Shortcut概念Shortcut 是Android-25(Android 7.1)新增的一项类似iOS的 3D Touch 功能的快捷方式组件,但
2017-04-03 18:05:54 13205 3
原创 JVM 基础知识
JVM 概念类加载器子系统装载链接初始化JVM 内存模型方法区Method Area堆区Heap Area栈区Stack Area程序计数器Program Counter Register本地方法栈Native Method Stacks执行引擎Java Native Interface JNI本地方法库JVM 概念JVM(Java Virtual Mechine,Java
2017-03-06 16:11:42 3222
原创 Android 7.0 之拍照与图片裁剪适配
在Android 7.0以上,在相机拍照和图片裁剪上,可能会碰到以下一些错误:android.os.FileUriExposedException: file:///storage/emulated/0/xx.jpg exposed beyond app through ClipData.Item.getUri()exposed beyond app through Intent.getData()
2017-02-07 13:05:22 13361 3
转载 Android View 绘制流程
View 绘制机制一、 View 树的绘图流程当 Activity 接收到焦点的时候,它会被请求绘制布局,该请求由 Android framework 处理.绘制是从根节点开始,对布局树进行 measure 和 draw。整个 View 树的绘图流程在ViewRoot.java类的performTraversals()函数展开,该函数所做 的工作可简单概况为是否需要重新计算视图大小(measure)
2017-02-07 09:57:02 1323
原创 RxJava 从入门到出轨
RxJava:https://github.com/ReactiveX/RxJava前言RxJava 概念初步理解作用 - 异步模式 - 观察者模式结构 - 响应式编程优势 - 逻辑简洁RxJava 依赖RxJava 入门事件产生事件消费不完整定义回调入门示例RxJava 进阶Scheduler线程控制变换map操作符flatMap操作符RxJava 其他常用操作
2016-11-23 14:26:44 28684 42
原创 Android 如何应用ttf图标字体库
作为一个Android开发者,自己想做一个app练手,有个比较头疼的问题就是没有UI图标资源~~ 其实很容易搞定的,下面就来聊聊如何在Android中应用图标字体库,找图标不再纠结! 图标库传送门:https://icomoon.io/app/#/select1、点击左上角菜单 -> Manager Projects 进入管理页面。 2、点击New Project, 创建一个工程,如First
2016-11-10 10:59:20 7165 4
原创 关于Retrofit2+Okhttp3实现统一添加请求参数和重定向
Android开发中难免会遇到一些比较“不友好”的服务端接口。比如以前遇到的json数据中,某个字段偶尔为Object,偶尔为List… 最近遇到的一个问题就是:所有请求接口都要增加一个token参数… 并且token参数有可能过期,比如请求某一条接口,如果token失效则在该请求的响应中把新的token带回来,客户端就得用新的token再次发送该请求,类似重定向。token失效的stateCode
2016-11-08 15:04:37 15952 2
转载 一个 2 年 Android 开发者的 18 条忠告
原文:What 2 Years of Android Development Have Taught Me the Hard Way前言不要重复造轮子不要盲目的选择library坐下来喝杯咖啡阅读更多的代码看在上帝的份上维护一个恰当的编程规范吧你需要ProGuard是的你真的需要使用一个恰当的架构用户界面就像笑话如果还需要解释那就糟糕了分析是你最好的朋友做一个营销专家是时候优化
2016-11-08 09:36:58 4236 7
原创 深入理解金融交易报文Iso8583协议
深入理解金融交易报文ISO8583协议字段域解释前言最初)金融系统只有IBM这些大公司来提供设备)象各种主机与终端等,后来有很多大大小小的公司进入)怎样设计一个报文协议)解决各公司金融系统之间的报文交换)暂且称该协议叫做ISO8583协议。例如“回头客会员管理系统”POS机上应用的就是8583报文。金融行业涉及到的数据内容是比较少的)如交易类型、帐号、帐户类型、密码、交易金额、交易手续费、日期时间、商户代码、2磁
2016-10-20 11:44:17 10085 2
翻译 10 个你有可能不知道的Android Studio技巧
英文原文:medium当你想不起来某个功能怎么用的时候修改快捷键你需要了解的自动补全在自动提示以后使用 Tab 键替换当前的方法或值当你写完了一行代码三个定位的小技巧根据后缀自动生成的代码模板Debug 时自定义对象显示的技巧总结Android Studio 是每一个 Android 开发每天都要使用的工具,但是即使你是一个经验丰富的开发人员,你也可能已经错过了许多可以节约生命的
2016-10-11 11:59:46 5804 9
原创 详解Android/IOS平台下抓包工具使用以及抓取API接口
抓包工具Charles主机允许代理模式客户端设置代理截获数据包HTTPS模仿一个appUI请求接口封装加密请求Header抓包(Packet Capture),实际上就是对网络请求(包括发送与接收)的数据包进行截获、重发、编辑、转存等操作,在Android下,也经常被用来进行数据截取等。学会抓包之后,获取某个App的API就是轻而易举的事了,当然,现在有很多App,都对API进行
2016-10-09 10:06:45 41885 4
原创 从源码角度一步步分析AsyncTask的用法与原理
前言AsyncTask特点AsyncTask简单使用原理分析总结AsyncTask 是Android特有的一个轻量级异步抽象类,在类中通过doInBackground()在子线程执行耗时操作,执行完毕在主线程调用onPostExecute()。前言众所周知,Android视图的绘制、监听、事件等都UI线程(主线程,Main Thread)执行,如果执行访问网络请求、数据库等耗时操作,可能会阻
2016-10-08 16:23:21 2375 1
原创 JS实现类似于微博秀的GitHub挂件
先来几张效果图。GitHub用户信息挂件 GitHub代码库信息挂件 GitHub个人贡献信息挂件 为CSDN博客添加GitHub用户信息挂件 实现GitHub用户信息挂件<div class="github-widget" data-username="smuyyh"></div><script src="../js/github_user_widget_en.js"></script>
2016-08-29 09:59:56 3683 2
原创 -bash :gradlew command not found
mac下执行gradlew命令时,提示-bash :gradlew command not found,主要原因是Android Project根目录下地gradlew文件没有执行权限。打开终端,执行以下命令:sudo chmod +x gradlew为gradlew增加可执行权限。值得一提的是,mac下执行当前目录下的命令需要在前面加上“./”,否则会到环境变量下找相应命令。例如./gradlew
2016-08-28 10:16:50 24511 2
原创 Android 实现气泡布局/弹窗,可控制气泡尖角方向及偏移量
Android 自定义布局实现气泡弹窗,可控制气泡尖角方向及偏移量。效果图实现首先自定义一个气泡布局。/** * 气泡布局 */public class BubbleRelativeLayout extends RelativeLayout { /** * 气泡尖角方向 */ public enum BubbleLegOrientation {
2016-08-25 14:51:03 22406 9
原创 Java 实现顺时针螺旋二维数组输出
看到一道有点意思的逻辑算法题,便着手实现一下。打印 N*N顺时针螺旋数组,规律如下:// 1 2 3 4 5// 16 17 18 19 6// 15 24 25 20 7// 14 23 22 2
2016-08-18 11:24:14 8318
原创 Java/Android 编码规范,从第一行代码开始
转载请注明出处:http://blog.csdn.net/yyh352091626/article/details/52219812谈到编码规范,对于团队项目开发来说,是很有必要的。如果说代码是一种社会行为,那么代码规范可以说是法律,通过法律来约束行为。养成一个良好编码规范的习惯,一是可以统一代码风格;二是便于团队成员协作开发;三是在review代码的时候,更加容易精确地判断需要修改的地方;四是提高
2016-08-16 20:55:26 4182 1
原创 Android 图片选择器,丰富的配置选项,极大程度的简化使用
Android 图片选择器。支持图库多选/单选/图片裁剪/拍照/自定义图片加载库,极大程度的简化使用。优点1、通过实现ImageLoader接口,可以实现自定义图片加载器的功能。例如可以用Glide、Picasso、ImageLoader,暂不支持Fresco,因为SimpleDraweeView本身并不属于ImageView。当然,也可用相同的思路来实现。 2、可配置的ImgSelConfig。
2016-08-08 18:59:06 13077 41
原创 SprintNBA
完整的NBA第三方Android客户端,包含NBA头条新闻、视频集锦/赛场花絮、比赛直播(目前支持比赛前瞻、文字直播、球队及球员技术统计)、球队战绩排行、球员数据排名、虎扑论坛专区(已实现发帖与回复功能)、球队及球员的详细资料。本项目的API均来自NBA中文官网与虎扑体育,纯练手之作,个人未从中获取任何利益,其所有内容均可在NBA中文官网与虎扑体育获取。数据的获取与共享可能会侵犯到NBA中文官
2016-08-02 13:33:51 4873 18
原创 利用Gradle发布项目到JCenter、Maven
利用Gradle发布Android项目到JCenter Android Studio将远程仓库默认指定为Jcenter仓库,位于Bintray网站。Bintray网站下面还有其他好几个仓库。本文主要介绍如何将Android项目发布到Jcenter。注册Bintray账号Bintray官网:https://bintray.com 也可使用GitHub账号登录。获取APIKey上传项目之前我们需要
2016-07-13 21:13:51 6255
原创 银联标准之MAC算法实现(POS终端加密)
本文详细讲解银联标准MAC算法的过程,以及通过Java代码来实现这一运算过程。POS终端采用ECB的加密方式,简述如下:将欲发送给POS中心的消息中,从消息类型(MTI)到63域之间的部分构成MAC ELEMEMENT BLOCK (MAB)对MAB,按每8个字节做异或(不管信息中的字符格式),如果最后不满8个字节,则添加“0x00”下面举个例子来说明MAC算法的过程: MAB =
2016-06-24 12:01:44 17508 1
原创 从Java反射机制到Android注解框架
一、Java反射机制1、定义 JAVA反射机制是在“运行状态”中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。Java反射机制主要提供了几个功能:在运行时判断任意一个对象所属的类、在运行时构造任意一个类的对象、在运行时判断任意一个类所具有的成员变量和方法
2016-06-13 16:20:26 4770 6
原创 解决AndroidStudio导入项目在 Building gradle project info 一直卡住
Android Studio导入项目的时候,一直卡在Building gradle project info这一步,主要原因还是因为被墙的结果。gradle官网虽然可以访问,但是速度连蜗牛都赶不上...解决办法主要有两种,一是直接下载gradle离线包,二是修改项目的gradle-wrapper.properties里的gradle版本为自己电脑已有的版本。离线包下载导入方式查看所需gradle版
2016-05-24 16:12:21 150506 25
原创 浅析Android Activity的启动过程
Activity作为Android的四大组件之一,也是最基本的组件,负责与用户交互的所有功能。Activity的启动过程也并非一件神秘的事情,接下来就简单的从源码的角度分析一下Activity的启动过程。根Activity一般就是指我们项目中的MainActivity,代表了一个Android应用程序,一般也是在一个新的进程中启动起来。在Android系统中,所有的Activity组件都保存在堆栈
2016-04-07 17:15:05 6610
翻译 关于Android开发的40条优化建议
以下是开始Android编程的好方法: 1、找一些与你想开发的功能类似的代码; 2、调整它,尝试让它变成你想要的; 3、回顾开发中遇到的问题 4、使用StackOverflow来解决遇到的问题对每个你想实现的东西重复上述过程。采用这种方法能够激励你,因为你在保持不断迭代更新,在这个过程里面你会学到很多。当然,当你发布应用的
2016-03-22 23:25:25 9006 3
原创 Android MarsDaemon实现进程及Service常驻
前段时间,就讨论过关于如何让Service常驻于内存而不被杀死,最后的结论就是使用JNI实现守护进程,但是不得不说的是,在没有修改系统源码的情况下,想真正实现杀不死服务,是一件很难的事情,目前除了白名单的方式,也好像没有发现有一款APP能做到不管怎么搞它都能自动重启...最近在GitHub上发现了一个比较有意思的轻量级库:MarsDaemon,进行一些简单的配置,就可以实现在android上实
2016-03-21 16:51:46 15740 17
原创 Android Studio 使用正式签名进行调试
在Android Studio中,可以使用Gradle进行打包时自动签名。其实Android Studio默认会给调试应用加上Debug签名,但有时候调一些第三方SDK时,需要正式签名才能调起来,所以接下来分享一下使用Gradle自动签名的方法。一、创建签名文件打开AS,选择Build->Generate Signed APK,选择要打包的项目,点击Next,再点击Create new..
2016-03-17 21:33:49 28014 10
翻译 MVP for Android: 如何组织显示层的内容
MVP(Model View Presenter)模式是从众所周知的MVC(Model View Controller)模式中派生出来的,这在Android开发中变得越来越重要。越来越多的人在谈论MVP,但实际上可靠的、有条理的信息很少。这就是我为何要用这个博客来鼓励大家讨论,然后把我们所有知识以最好的方式应用到我们项目中来。什么是MVP?MVP模式允许从业务逻辑中拆分出表示(presen
2016-03-15 16:10:05 6916
原创 通俗理解Android中View的事件分发机制及滑动冲突处理
说起Android滑动冲突,是个很常见的场景,比如SliddingMenu与ListView的嵌套,要解决滑动冲突,不得不提及到View的事件分发机制。一、Touch事件传递规则分析首先,我们要知道Touch事件是包装在MotionEvent对象中的,在手指与屏幕接触过程中产生一系列事件,典型的事件有以下三种:ACTION_DOWN:手指刚接触屏幕的瞬间ACTION_UP:手指
2016-02-25 13:47:40 14247 6
原创 Mac如何上传项目源代码至GitHub
提起GitHub大家并不陌生,GitHub也算为“开源”做出突出的贡献了~ Git这种良好支持分支管理的分布式的SCM真正解决了一个问题问题:每个工程师在自己本地分支上开发,完成功能以后往master分支合并。关于Windows下GitHub的一些使用,随处可见。本文着重介绍如何在Mac OSX下上传本地的项目源代码至GitHub。首先当然是安装Git工具。1、下载Git instal
2016-02-22 11:01:49 28582 3
原创 Android框架模式之MVC与MVP
MVC (Model-View-Controller):顾名思义,M是指逻辑模型,V是指视图模型,C则是控制器。一个逻辑模型我们可以才用多种视图模型,例如进度条显示,我们可以采用圆环、直线、容器式的试图显示,当然,一种视图模型也可以对于多种逻辑模型。MVC的作用:将M层和V层的实现代码分离,从而使同一个程序可以在同一View下,有不同的表现形式;而C层则是确保M层和V层的同步,一旦M层有改变,
2016-02-01 13:58:14 4352
原创 Genymotion错误之INSTALL_FAILED_CPU_ABI_INCOMPATI
运行App到Genymotion,出现了这么个错误:Installation error:INSTALL_FAILED_CPU_ABI_INCOMPATI。Google官方的解释是由于引用了其他非android的sdk编译环境编译的二进制代码导致的,有如下两种解决办法:1、libs目录如果有其他jar包,把libs里的jar包拿出来放到项目的buildpath里面即可解决。2、下载
2016-01-29 12:39:59 1996
Android实现应用增量更新 源码
2016-01-25
Android 通过JNI实现双守护进程,保证服务不被杀死 源码
2016-01-19
Android 无需root实现APK静默安装
2016-01-17
细说android 4.0 ndk编程.pdf (王家林) 附源码
2015-12-24
Android集成主流优秀第三方组件框架 源码
2015-11-11
Android动画合集大全(上百种动画,一应俱全) 源码
2015-11-10
gradle-4.1-all.zip 离线包下载 需要下载
2017-08-08
gradle-4.1-rc-2-all.zip 下载
2017-08-02
gradle-4.0.2-all.zip 下载
2017-07-31
gradle-4.1-rc-1-all.zip 下载工具
2017-07-24
gradle-4.0.1-all.zip 工具下载
2017-07-08
gradle-4.0-all.zip 官方下载
2017-07-01
Android 电子书滑动翻页库
2016-10-09
Android实现3D卡片滑动效果
2016-02-17
Genymotion-ARM-Translation.zip
2016-01-29
Android 流量与网速监测(悬浮窗) 源码
2016-01-28
gradle-2.7-bin.zip 下载
2016-01-26
关于JNI的两个技术问题
2016-03-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人