- 博客(153)
- 资源 (30)
- 收藏
- 关注
原创 Kotlin--›如何实现一个自己的自定义TabLayout(附Touch事件分发)
前言你能学到啥?自定义View的基础知识ViewGroup中Child View的测量布局控制Touch事件的传递,拦截和处理draw和OnDraw方法的区别OverScroller的使用GestureDetector的使用ViewGroup中setWillNotDraw方法的作用Canvas的使用方法(自绘的核心类)需求分析TabLayout的...
2018-07-21 13:24:03 867 2
原创 Kotlin--›Android 自定义实现支付密码数字键盘
你能学到什么kotlin的使用, 扩展特性的写法等自定义ViewGroup的一些基础知识xml属性的编写和读取 因为每个按键都考虑到需要支持背景设置等其他个性设置和Touch手势的处理, 所以我决定采用 每个按键 对应一个View的思路实现. 否则可以使用Canvas.drawText实现 这样可以提高扩展性和可自定义性1.根据效果图先定义按键//首先定...
2018-07-20 16:12:40 694
原创 Kotlin--›Android 超高模仿QQ7.5 侧滑菜单
效果图: 特性模仿全屏可视区域滑动检测 (菜单关闭和打开状态, 都支持)内容区域滑动过程中自带阴影遮罩菜单打开状态, 点击阴影区域自动关闭滑动过程中, 视差效果可以嵌套在其他具有滚动特性的View中实现方法如果使用 ViewDragHelper 那么局限性会很多, 所以这里我采用了最原始的TouchEvent控制.以下代码, 只贴部分片段, 详细请下载源码首先...
2018-04-04 10:33:55 688
原创 Kotlin-->模仿QQ发送图片进度效果
效果图:效果分析 1. 带圆角的布局.(Canvas的clipPath方法实现, 不在本文介绍) 2. 蒙层(绘制一个有透明度的黑色) 3. 进度百分比(Canvas的drawText, 难点就是控制绘制的x和y坐标) 4. 白色进度圆圈(本文介绍,难点1) 5. 最外层是具有一定透明度的白色进度圆圈(实现方法和4一致)在Android中, 要绘制 圆柱形圆圈 , 及其不容易. 有同学可
2017-11-21 09:45:31 813 6
原创 Android-->播放视频横竖屏切换的2种方式
Activity的横竖屏切换其实很简单, 如果你的Activity没有声明android:configChanges, 那么Activity的方向就会随着手机的旋转而旋转. (手机需要开启自动旋转功能, 通常在手机的顶部通知栏中)本来这样就搞定了, 但是….之所以需要自己控制, 是因为横屏和竖屏时, 见面的显示需要有所不同. 才需要针对做出处理.接下来, 就教大家2种界面处理的方式:为了更好的用
2017-10-20 11:19:02 9239 2
原创 AS-->一键依赖全部或多个aar文件
首先, AS对aar文件依赖的支持, 并不友好.需要依赖aar文件, 我们需要2个步骤:1: app下的build.gradle文件加入repositories { flatDir { dirs "libs" // aar目录 }}2:dependencies中加入aar依赖compile name: 'aar文件名', ext: 'aar'上述方法, 就是添加aa
2017-10-13 09:01:16 2405 1
原创 Android-->自定义ViewGroup, 银行卡片布局
首先了解下, 自定义View的三部曲.1:onMeasure方法此方法主要目的, 就是根据xml的 android:layout_width="wrap_content" android:layout_height="wrap_content"wrap_content match_parent 这2个属性, 来确定测量自身的大小. 当然, 这2个值, 只是parent告诉你,
2017-09-19 11:32:19 993
原创 Kotlin-->范围选择进度条, 双向SeekBar
首先了解下, 自定义View的三部曲.1:onMeasure方法此方法主要目的, 就是根据xml的 android:layout_width="wrap_content" android:layout_height="wrap_content"wrap_content match_parent 这2个属性, 来确定测量自身的大小. 当然, 这2个值, 只是parent告诉你,
2017-09-19 11:11:59 1865
原创 Kotlin-->自定义评分控件RatingBar
首先了解下, 自定义View的三部曲.1:onMeasure方法此方法主要目的, 就是根据xml的 android:layout_width="wrap_content" android:layout_height="wrap_content"wrap_content match_parent 这2个属性, 来确定测量自身的大小. 当然, 这2个值, 只是parent告诉你,
2017-09-19 10:58:16 1144
原创 Android-->ConstraintLayout解读
截止日前2017-08-27, ConstraintLayout的版本为1.0.2 compile ‘com.android.support.constraint:constraint-layout:1.0.2’也许你需要先了解一下ConstraintLayout一些xml属性的归纳相对位置约束属性layout_constraintLeft_toLeftOflayout_constraint
2017-08-27 11:11:55 1094
原创 Android-->你真的会用属性动画(ValueAnimator)么
讲真, ValueAnimator并不能当做属性动画来理解, 因为这样会限制自己对它的理解, 也会限制对它的使用范围. This class provides a simple timing engine for running animations which calculate animated values and set them on target objects.官方描述文档其实也
2017-06-10 08:10:39 595
原创 Android-->如何快速写出属于自己的圆角图片控件
客官请看图无处不在的圆角, 到处满天飞开源库, 是时候写一个属于自己的圆角控件了.原理通过Canvas强大的clip特性, 你要想什么形状的图片都可以的…class CircleImageView(context: Context, attributeSet: AttributeSet? = null) : AppCompatImageView(context, attributeSet) {
2017-06-08 18:00:55 697
原创 Android-->输入框自动提示文本, 失去焦点自动输入
客官请看图功能简介 检查文本输入框当前输入的字符串, 进行后台匹配, 如果匹配到了, 就进行提示. 当然, 这个提示并不是简单粗暴的setText, 因为用户的输入可能只是前面的一致而已.后面不一定相同呢. 一旦发现不匹配, 立即取消提示.原理1.自定义一个ExEditText 继承 AppCompatEditText public class ExEditText extends
2017-06-07 11:08:04 2118 1
原创 Android--›模仿QQ7.0底部导航效果(kotlin版)
来一波效果图有没有一种蠢蠢欲动的想法? 反正我已经动了.分析一波 1:选中状态, 和未选中状态显示的图片不一样. 这个简单:一个Boolean成员变量控制. 2:当手指360°滑动的时候,图片会跟随移动.这个就是核心了, 需要计算手指距离图片中心的角度, 然后计算出偏移的dx,dy值. 3:细心的你, 可能已经发现了, 笑脸其实并不是相对滚动的, 是有滚动差的. 这个可以在步骤2计算
2017-06-06 13:37:41 2901 1
原创 Kotlin-->Kotlin 和 Java 类型映射
Java type Kotlin type byte kotlin.Byte short kotlin.Short int kotlin.Int long kotlin.Long char kotlin.Char float kotlin.Float double kotlin.Double boolean kotlin.Boolea
2017-05-25 09:00:26 1507
原创 Android-->友盟分享/登录快速集成库
友盟分享/登录快速集成库友盟分享快速集成库本库基于友盟6.4.4的分享模块版本开发.暂时只集成了, QQ和微信 的分享和登录功能.使用方法1:打开项目中的 build.gradle 文件: 你会看到配置以下信息:UMENG_APPKEY: "替换你申请的友盟KEY",PROJECT_NAME: "替换成开发中APP的包名(如 com.angcyo.demo)",QQ_ID : "Q
2017-05-19 14:08:06 1303
原创 OS-->JitPack从入门到使用
如果你还不知道JitPack是什么,那么请你移步至: http://www.jianshu.com/p/e443456bb506首先需要发布的Library, 并不需要任何特殊的配置.也就是说上篇文章中的这段话,是可以不需要添加. 打开 Project 的 root build.gradle,在 dependencies 节点添加一个 classpath:classpath ‘com.githu
2017-03-23 16:22:21 727
原创 AS-->打开第三方项目之前,必做的事(新手必看)
通常在Github, 或者其他渠道拿到的AS工程.结构如下(并非需要完全一致, 这不影响本文.):如果此项目创建时间是很久以前, 那么根据AS更新版本的速度, 此时你的AS版本和创建工程的AS所使用的版本, 多数情况下是不一样.这个时候, 贸然打开工程, 不是错误,就是等待时间特别长.所以, 你需要这样做: 删掉上图中, 红色圈中的文件或者文件夹.此再次打开工程, AS就会自动使用本机默认的G
2017-03-20 17:27:37 3778 9
原创 Android-->Behavior上手入门
开始布局时,方法回调顺序:1:StickBehavior([context, attrs])-> 2:onAttachedToLayoutParams([params])->3:layoutDependsOn([parent,child,dependency])->//当dependency是你需要监听的View时,需要返回true, 否则dependency View位置改变, 或者大小改变不
2017-03-16 16:15:51 1031
原创 Android-->RxJava2更新体验
截止日前最新版2017-3-15: RxJava compile ‘io.reactivex:rxjava:1.2.7’ compile ‘io.reactivex:rxandroid:1.2.1’RxJava2 compile “io.reactivex.rxjava2:rxjava:2.0.7” compile “io.reactivex.rxjava2:rxandr
2017-03-15 14:27:58 2459
原创 Android--›打造无限循环的RecyclerView(已更新新方式)
难点分析: 1:如何在有限的数据里面, 实现无限个Item呢? 2:如何让滑动的时候, 一个一个的滑动, 而不会一下子滚动多个呢? 3:如何在第一次显示的时候, 就可以左滑呢?更新于2018-3-8 鉴于之前的时候方式, 有很多问题, 思路也不是特别好. 最近在学习的过程中, 发现了大神写了自定义的ViewPagerLayoutManager支持无限循环, 所以我就打算使用...
2017-03-01 14:38:02 16818 3
原创 Android-->RecyclerView分组悬浮标题(分割线)
客官先看图: https://github.com/angcyo/ContactsPicker/blob/master/screenshot/1%E6%9C%88-15-2017%2016-17-46.gifRecyclerView中实现分组功能, 和 实现分割线 使用的是相同原理. 就是手动绘制信息.都是继承RecyclerView.ItemDecoration分割线的实现传送门:http://
2017-01-15 16:48:36 3691
原创 Android-->Toast全屏和动画(模拟QQ样式)
如图, 底下是一个空布局, 参考我的博文: http://blog.csdn.net/angcyo/article/details/53967099 顶部就是一个Toast. 全屏,并且进入和退出都有自定义的动画.正文: 系统并没有提供设置全屏和动画的方法.但是Java有一个神器, 反射. 我们可以通过反射. 肆意修改成员变量.//全屏和动画的设置方法private static void
2017-01-14 13:41:17 2482 8
原创 Android-->如何让普通View具有checked属性(背景xml支持checked状态)
当需要实现选择状态的时候,CompoundButton是系统提供的选择.我们可以很简单的通过isChecked(), 返回是否选中.也可以通过xml设置background的方法, 实现选中后的样式.但是, 有些时候, 系统提供的控件不足以满足我们的需求,,,这个时候就是头脑风暴的时候了.首先, 如果需要实现isChecked()返回是否选中, 那么自定义View的时候, 就需要自己通过一个变量
2017-01-10 16:14:40 4522 2
原创 Android--›Realm数据库使用注意事项
不知不觉Realm已经更新到2.2.2了. Realm Java 2.2.2但是,还有多少坑等着你呢?以下写一些我遇到的坑:1:Realm需不需要close呢?当你每次调用 Realm.getDefaultInstance(); 的时候, Realm的引用计数就会+1. 也就是说, close()方法调用次数也要+1, 才能释放Realm资源.Realm再调用close之后, 对应线程上whe
2017-01-10 12:16:03 2061
原创 Android--›键盘表情切换的终极解决方案(已重构)
之前写过一篇文章 Android–>如何优雅的切换表情和键盘(原理), 没有看多的可以看看. 这个方案有一个问题, 当状态栏透明的时候, 就会出现问题. 而且也不支持在Dialog中使用.实现方式也很简单, 但是代码逻辑很复杂, 不容易修改. 一不小心就会出错, 还找不到原因.今天这篇文章, 让你焕然一新. 完全颠覆之前的方案.前提,2个属性 android:windowSoftInputMod
2017-01-10 11:59:13 3083 2
原创 Android-->RecyclerView模仿探探左右滑动布局
站在巨人的肩膀上,才能走得更远.参考文章:http://blog.csdn.net/zxt0601/article/details/53730908我在此基础上优化了部分代码, 添加了滑动回调, 可自定义性更强. 并且添加了点击按钮左右滑动的功能.据说无图都不敢发文章了. 看图:1:这种功能, 首先需要自己管理布局 继承 RecyclerView.LayoutManager , 显示自己管理布
2017-01-08 14:56:28 9907 8
原创 Android-->如何将RecyclerView打造成ViewPager的效果
如题所示,都支持横向和纵向, 暂不支持StaggeredGridLayoutManager布局管理.如图: 在LinearLayoutManager中: 在GridLayoutManager中: 1:当adapter中Item的数量不足时, 需要用假数据填充. 否则最后一页显示不全, 达不到页面的效果.@Overridepublic int getItemCount() { raw
2017-01-03 22:26:16 5413 5
原创 Android-->打造流行的无数据空布局页面
看图:实现方式,就是在一个自定义View里面, 绘制一个大的圆角矩形, 和三个小的圆角矩形.支持的属性,resources> declare-styleable name="EmptyView"> attr name="ev_default_color" format="color"/> attr
2017-01-01 17:19:14 3144 2
原创 Android--›状态栏高度,导航栏高度,Window高度,DecorView高度,heightPixels
喔…这标题,吓我一跳;请稍等….思绪整理中…Android中, 经常被这些高度绊脚. 完全进入懵逼的状态, 有木有?请允许我,介绍清楚!通常情况下, 宽度都是很友好的,但是高度就呵呵, 所以本文只介绍高度的计算.1:DecorView的高度 DecorView的高度代表的是: 整个装饰窗口的高度, 这个高度包括:状态烂的高度和导航栏的高度.(状态栏和导航栏通常叫做装饰窗口, 而ActionBar不
2016-11-20 14:30:56 7779 1
原创 Android-->轻松打造带删除按钮的输入框(EditText),附Emoji表情过滤
输入框带删除按钮, 此乃标配, 实现起来方法也很多, 网上开源也很多.但是, 没事就喜欢瞎折腾.上图说话. 只是在原生的基础上加了扩展. 相对来说入侵非常少, 使用方法和原生的一模一样.无任何阉割.完整代码:public class ExEditText extends AppCompatEditText { Rect clearRect = new Rect(); public Ex
2016-11-20 12:04:27 2998
原创 Android-->最全的启动第三方APP,应用程序(按需启动,历史启动)
在很多地方都需要启动其他的程序, 调起第三方应用;比如:桌面程序,必须的就是启动第三方应用了.如果你很细心的话, 应该注意到一点: 在桌面程序中点击启动第三方应用, 如果程序还没启动过, 就会重新创建并启动, 但是…已经启动过的程序,则不会重新创建…为啥呢?继续往下阅读:第1种: 只需要第三方程序的包名就能启动. 超级简单,难就难在怎么获取包名!!!哈哈~PackageManager packa
2016-11-10 16:05:08 4941 1
原创 Android--›RecyclerView 显示底部,滚动底部(无动画)
当你在做聊天界面的时候, 通常进入界面后, 都需要显示到最底部, 鹅场也是这么干的;很容易就能找到 RecyclerView的smoothScrollToPosition 方法.而且也确实实现了目的;为什么不用 scrollToPosition 这个方法呢? 你去试试就知道!但是,,,这个方法会带来界面的滚动, 当聊天记录特别多的时候, 这个滚动时间会持续很长, 显然产品经理不爽了, 那么看完本文
2016-11-07 16:15:07 9103
原创 Android-->如何优雅的切换表情和键盘(原理)
网上有很多开源的项目, 但通常都封装的很复杂, 并不能很友好的自定义, 甚至原理都看不清楚.没关系, 这篇文章就是讲原理的. 让你分分钟都能自定义一个出来.正常情况下, 当我们切换表情和键盘的时候, Layout会跳动, 体验极其差.有几个前提需要满足:<activity android:windowSoftInputMode="adjustResize" //这个是必
2016-10-19 21:43:39 4654 1
原创 Android-->RecyclerView.ItemDecoration分割线详解
RecyclerView.ItemDecoration不仅仅只是用来画线实现分割线这么简单;你可以绘制everything, 只要你想要; 都可以;最常用的: 绘制分割线; 绘制分组标题;点这里查看效果图参考文档: http://blog.csdn.net/pengkv/article/details/50538121ItemDecoration有3个重要的方法:@Overridepubli
2016-10-16 14:30:48 3784
原创 Android-->拍照/相册选择照片(从Uri中获取图片路径)
对于一个APP来说, 照片选择是经常会用到的功能.拍照获取照片 此方法需要指定照片的路径, 这是最简单的获取照片的方式了;/** * 拍照获取图片, imageUri.getPath() 图片路径 */public static void getPhotoFromCamera(Activity context, int requestCode, Uri imageUri) { Int
2016-10-10 13:39:05 11332 2
原创 Android-->Facebook图片加载库Fresco(爱它的理由)
在Android中,图片加载框架很多,很多,很多…都是经典,爆款.也许你在用: https://github.com/square/picasso https://github.com/bumptech/glide https://github.com/nostra13/Android-Universal-Image-Loader/ https://github.com/koush/U
2016-10-02 05:53:11 2209
原创 Android-->颜色渐变动画的实现,应用市场跳转
这个动画实现起来很简单,但是前提是你知道该怎么实现. 哈哈; 如果不知道, 再简单, 都是那么难;public void startAnimation(View view) { View animationView = findViewById(R.id.view); //创建动画,这里的关键就是使用ArgbEvaluator, 后面2个参数就是 开始的颜色,和结束的颜色.
2016-09-22 09:43:39 4938
原创 Swift-->NSUserDefaults键值对,Android中的SharedPreferences
IOS中, 有4种数据存储的方法: 1:NSKeyedArchiver与NSKeyedUnarchiver存档 http://blog.csdn.net/angcyo/article/details/52262893 2:CoreData数据库 http://blog.csdn.net/angcyo/article/details/52331382 3:File存储 http://blog.c
2016-08-28 20:20:52 1389
原创 Swift-->ViewController跳转,转场以及自定义动画
IOS常用的转场方式: 1:UINavigationController的pushViewController打开,popViewController关闭; 2:UIViewController的presentViewController打开,dismissViewController关闭; 当然你也可以直接使用rootViewController赋值的方式…(本文暂不介绍此方法)1:首先看一
2016-08-28 01:56:27 6325
RecyclerViewDemo
2015-06-10
NettyServer
2015-06-09
批处理工具
2015-05-26
窗口工具V13.5
2015-05-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人