
Android
文章平均质量分 79
angcyo
没有一跃而成的成就, 只有慢慢积累的菜鸟.
展开
-
Flutter-->AAPT: error: resource android:attr/lStar not found.
AAPT: error: resource android:attr/lStar not found.原创 2024-08-13 14:24:22 · 3023 阅读 · 2 评论 -
Android--›最万能的TabLayout(不仅仅是TabLayout)
DslTabLayout♥️ Android界最万能的TabLayout(不仅仅是TabLayout) 特性支持任意类型的child视图.支持任意类型Drawable的指示器.支持智能开启横向滚动.支持高凸模式, 允许某个child高出一节显示.支持滑动选择模式, 滑动的时候智能选择上一个或下一个.点击查看全部属性效果一个DSLTabLayout可实现以下3中效果...原创 2019-12-03 17:48:58 · 1642 阅读 · 5 评论 -
Android--›迁移到AndroidX指南(含包依赖关系)
AndroidX发布已经有段时间了, 相应的包也都出了1.0.0正式版本.顺势而为, 才能得以生存.是时候迁移到AndroidX了.迁移操作本身是很简单的, 有菜单命令一键搞定.如下:你以为这样就完事了?还真是…项目妥妥的跑起来了, 还不算完事吗?如果仅仅是为了跑起项目, 那还真的就完事了.但是项目中的依赖包还是写的com.android.support:xxx:xxx, 所以要彻...原创 2019-10-19 10:14:29 · 1989 阅读 · 0 评论 -
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 · 2142 阅读 · 0 评论 -
Android-->如何让普通View具有checked属性(背景xml支持checked状态)
当需要实现选择状态的时候,CompoundButton是系统提供的选择.我们可以很简单的通过isChecked(), 返回是否选中.也可以通过xml设置background的方法, 实现选中后的样式.但是, 有些时候, 系统提供的控件不足以满足我们的需求,,,这个时候就是头脑风暴的时候了.首先, 如果需要实现isChecked()返回是否选中, 那么自定义View的时候, 就需要自己通过一个变量原创 2017-01-10 16:14:40 · 4674 阅读 · 2 评论 -
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 · 3762 阅读 · 0 评论 -
Android-->如何将RecyclerView打造成ViewPager的效果
如题所示,都支持横向和纵向, 暂不支持StaggeredGridLayoutManager布局管理.如图: 在LinearLayoutManager中: 在GridLayoutManager中: 1:当adapter中Item的数量不足时, 需要用假数据填充. 否则最后一页显示不全, 达不到页面的效果.@Overridepublic int getItemCount() { raw原创 2017-01-03 22:26:16 · 5591 阅读 · 5 评论 -
Android--›打造无限循环的RecyclerView(已更新新方式)
难点分析: 1:如何在有限的数据里面, 实现无限个Item呢? 2:如何让滑动的时候, 一个一个的滑动, 而不会一下子滚动多个呢? 3:如何在第一次显示的时候, 就可以左滑呢?更新于2018-3-8 鉴于之前的时候方式, 有很多问题, 思路也不是特别好. 最近在学习的过程中, 发现了大神写了自定义的ViewPagerLayoutManager支持无限循环, 所以我就打算使用...原创 2017-03-01 14:38:02 · 17220 阅读 · 3 评论 -
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 · 2503 阅读 · 0 评论 -
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 · 1088 阅读 · 0 评论 -
Android--›键盘表情切换的终极解决方案(已重构)
之前写过一篇文章 Android–>如何优雅的切换表情和键盘(原理), 没有看多的可以看看. 这个方案有一个问题, 当状态栏透明的时候, 就会出现问题. 而且也不支持在Dialog中使用.实现方式也很简单, 但是代码逻辑很复杂, 不容易修改. 一不小心就会出错, 还找不到原因.今天这篇文章, 让你焕然一新. 完全颠覆之前的方案.前提,2个属性 android:windowSoftInputMod原创 2017-01-10 11:59:13 · 3225 阅读 · 2 评论 -
Android-->获取所有联系人以及所有的字段(联系人头像,邮箱,地址,公司等)
本文测试平台: Android 6.0 , API 23辅助阅读: Android官网有关联系人的开发指南: https://developer.android.com/guide/topics/providers/contacts-provider.html相关API: https://developer.android.com/reference/android/provider/Cont原创 2016-08-11 01:54:06 · 15655 阅读 · 3 评论 -
Android-->RecyclerView模仿探探左右滑动布局
站在巨人的肩膀上,才能走得更远.参考文章:http://blog.youkuaiyun.com/zxt0601/article/details/53730908我在此基础上优化了部分代码, 添加了滑动回调, 可自定义性更强. 并且添加了点击按钮左右滑动的功能.据说无图都不敢发文章了. 看图:1:这种功能, 首先需要自己管理布局 继承 RecyclerView.LayoutManager , 显示自己管理布原创 2017-01-08 14:56:28 · 10140 阅读 · 8 评论 -
Android-->轻松打造带删除按钮的输入框(EditText),附Emoji表情过滤
输入框带删除按钮, 此乃标配, 实现起来方法也很多, 网上开源也很多.但是, 没事就喜欢瞎折腾.上图说话. 只是在原生的基础上加了扩展. 相对来说入侵非常少, 使用方法和原生的一模一样.无任何阉割.完整代码:public class ExEditText extends AppCompatEditText { Rect clearRect = new Rect(); public Ex原创 2016-11-20 12:04:27 · 3069 阅读 · 0 评论 -
Android-->如何优雅的切换表情和键盘(原理)
网上有很多开源的项目, 但通常都封装的很复杂, 并不能很友好的自定义, 甚至原理都看不清楚.没关系, 这篇文章就是讲原理的. 让你分分钟都能自定义一个出来.正常情况下, 当我们切换表情和键盘的时候, Layout会跳动, 体验极其差.有几个前提需要满足:<activity android:windowSoftInputMode="adjustResize" //这个是必原创 2016-10-19 21:43:39 · 4817 阅读 · 1 评论 -
Android-->最全的启动第三方APP,应用程序(按需启动,历史启动)
在很多地方都需要启动其他的程序, 调起第三方应用;比如:桌面程序,必须的就是启动第三方应用了.如果你很细心的话, 应该注意到一点: 在桌面程序中点击启动第三方应用, 如果程序还没启动过, 就会重新创建并启动, 但是…已经启动过的程序,则不会重新创建…为啥呢?继续往下阅读:第1种: 只需要第三方程序的包名就能启动. 超级简单,难就难在怎么获取包名!!!哈哈~PackageManager packa原创 2016-11-10 16:05:08 · 5119 阅读 · 1 评论 -
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 · 2269 阅读 · 0 评论 -
Android--›RecyclerView 显示底部,滚动底部(无动画)
当你在做聊天界面的时候, 通常进入界面后, 都需要显示到最底部, 鹅场也是这么干的;很容易就能找到 RecyclerView的smoothScrollToPosition 方法.而且也确实实现了目的;为什么不用 scrollToPosition 这个方法呢? 你去试试就知道!但是,,,这个方法会带来界面的滚动, 当聊天记录特别多的时候, 这个滚动时间会持续很长, 显然产品经理不爽了, 那么看完本文原创 2016-11-07 16:15:07 · 9297 阅读 · 0 评论 -
Android-->RecyclerView.ItemDecoration分割线详解
RecyclerView.ItemDecoration不仅仅只是用来画线实现分割线这么简单;你可以绘制everything, 只要你想要; 都可以;最常用的: 绘制分割线; 绘制分组标题;点这里查看效果图参考文档: http://blog.youkuaiyun.com/pengkv/article/details/50538121ItemDecoration有3个重要的方法:@Overridepubli原创 2016-10-16 14:30:48 · 3845 阅读 · 0 评论 -
Android-->颜色渐变动画的实现,应用市场跳转
这个动画实现起来很简单,但是前提是你知道该怎么实现. 哈哈; 如果不知道, 再简单, 都是那么难;public void startAnimation(View view) { View animationView = findViewById(R.id.view); //创建动画,这里的关键就是使用ArgbEvaluator, 后面2个参数就是 开始的颜色,和结束的颜色.原创 2016-09-22 09:43:39 · 4989 阅读 · 0 评论 -
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 · 1358 阅读 · 0 评论 -
Android-->.9图片文件制作,简单粗暴(菜鸟都能秒懂)
制作工具: (SDK根目录)/Tools/draw9patch.bat图中描述的很清楚,这里简单再说明一下:拉伸: 就是图片会被放大的区域 内容显示区域: View的Text属性, 字符串显示的位置;需要注意的是(其实也可以用PS制作.9文件,只需要满足以下条件就行): 1:图片四边,必须包含4根黑边; 2:黑边必须是黑色,且为1个像素大小至此: 文章就原创 2015-06-24 15:25:43 · 1124 阅读 · 0 评论 -
Android--›系统源码下载之"指定模块源码的下载"(如:系统闹钟源码下载)
网上大多数的文章都是介绍Android系统源码的下载.本文小清新, 介绍Android系统中, 单个模块源码的下载.其实repo下载的Android系统, 就是通过下载多个小模块, 然后拼起来的.简单介绍下Android源码下载方法来自Android官方的下载方法:https://source.android.com/source/downloading (需要翻墙)来自中国科学技术大学...原创 2019-07-17 11:09:17 · 993 阅读 · 0 评论 -
Android--›ObjectBox 2.3.4 数据库上手指南
Room,Realm,,ObjectBox 你选择哪个?作为数据库的库, 那肯定是用来操作数据的咯;你能想到的增删改查肯定是必备的咯.多余的废话, 就到此!日前最新版是: 2.3.4官网地址Github地址项目基本配置上路:文章目录库的优点接入指南1.root工程根目录的build.gradle2.app/library工程的build.gradle3.初始化MyObjectBo...原创 2019-04-23 19:47:09 · 667 阅读 · 0 评论 -
Android--›身份证识别OCR之百度云,讯飞云和云识别
Android本地OCR识别, 网上流行的基本上都是tesstwo实现的, 大家可以百度一下.鉴于识别效率和体验, 种种原因…云识别也是需要了解一下的:百度OCR讯飞OCR云识别大厂的SDK文档都很详细, 这里把简单的使用入门放在一起, 大家可以参考一下:注意: 百度和讯飞 免费接口 一天只能请求500次, 云识别 未知…SSL由于大厂使用了https的接口链接, 如果直接...原创 2019-04-26 17:22:36 · 1207 阅读 · 0 评论 -
Android--›Retrofit,OKHTTP3,Token拦截器(超级通用版)
相关库:OkHttp3Retrofit需求分析当请求任意接口时, 返回需要获取Token的错误时, 拿到token并且重新请求接口.源码public class TokenInterceptor implements Interceptor { private static final Charset UTF8 = Charset.forName("UTF-8"); ...原创 2019-02-20 13:30:34 · 2224 阅读 · 5 评论 -
Android--›360全面插件化RePlugin框架交互通信使用概述
官方开原地址RePlugin1.宿主接入指南2.插件接入指南3.内置插件添加内置插件将APK改名为:插件名.jar放入主程序的assets/plugins目录3.1.使用插件中的组件例如您要打开一个Activity,则可以这么玩:Intent intent = new Intent(v.getContext(), ThemeDialogActivity.class);con...原创 2018-10-10 17:45:56 · 1794 阅读 · 0 评论 -
Android--›EditText不显示系统键盘,可用来显示自定义的键盘
系统键盘 包含普通键盘和现在很多ROM定制的密码安全键盘调用已下方法即可解决:https://developer.android.google.cn/reference/android/widget/TextView#setShowSoftInputOnFocus(boolean)但是,此方法是API 21Android 5.0加入的, 所以为了兼容低版本, 建议使用已下方法: publ...原创 2018-10-11 10:17:01 · 669 阅读 · 0 评论 -
Android--›InputFilter详解(用例:只能输入中文, 只能输入数字, 只能输入字母, 最大长度限制等)
InputFilter用的最多的可能是LengthFilter用来限制输入字符串的长度;知道为啥Button默认的字母都是大写的吗? 因为系统默认添加了一个AllCaps过滤器.当系统的InputFilter无法满足需求时, 自定义就派上了用场.代码中的注释, 已经说的很详细了, 这里就不重复了.请看代码…public class CharInputFilter implemen...原创 2018-08-10 16:45:10 · 3449 阅读 · 0 评论 -
Android-->打造流行的无数据空布局页面
看图:实现方式,就是在一个自定义View里面, 绘制一个大的圆角矩形, 和三个小的圆角矩形.支持的属性,resources> declare-styleable name="EmptyView"> attr name="ev_default_color" format="color"/> attr原创 2017-01-01 17:19:14 · 3223 阅读 · 2 评论 -
Android--›状态栏高度,导航栏高度,Window高度,DecorView高度,heightPixels
喔…这标题,吓我一跳;请稍等….思绪整理中…Android中, 经常被这些高度绊脚. 完全进入懵逼的状态, 有木有?请允许我,介绍清楚!通常情况下, 宽度都是很友好的,但是高度就呵呵, 所以本文只介绍高度的计算.1:DecorView的高度 DecorView的高度代表的是: 整个装饰窗口的高度, 这个高度包括:状态烂的高度和导航栏的高度.(状态栏和导航栏通常叫做装饰窗口, 而ActionBar不原创 2016-11-20 14:30:56 · 7976 阅读 · 1 评论 -
Android-->播放视频横竖屏切换的2种方式
Activity的横竖屏切换其实很简单, 如果你的Activity没有声明android:configChanges, 那么Activity的方向就会随着手机的旋转而旋转. (手机需要开启自动旋转功能, 通常在手机的顶部通知栏中)本来这样就搞定了, 但是….之所以需要自己控制, 是因为横屏和竖屏时, 见面的显示需要有所不同. 才需要针对做出处理.接下来, 就教大家2种界面处理的方式:为了更好的用原创 2017-10-20 11:19:02 · 9855 阅读 · 2 评论 -
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 · 1055 阅读 · 0 评论 -
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 · 1154 阅读 · 0 评论 -
Android-->Toast全屏和动画(模拟QQ样式)
如图, 底下是一个空布局, 参考我的博文: http://blog.youkuaiyun.com/angcyo/article/details/53967099 顶部就是一个Toast. 全屏,并且进入和退出都有自定义的动画.正文: 系统并没有提供设置全屏和动画的方法.但是Java有一个神器, 反射. 我们可以通过反射. 肆意修改成员变量.//全屏和动画的设置方法private static void原创 2017-01-14 13:41:17 · 2544 阅读 · 8 评论 -
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 · 642 阅读 · 0 评论 -
Android-->如何快速写出属于自己的圆角图片控件
客官请看图无处不在的圆角, 到处满天飞开源库, 是时候写一个属于自己的圆角控件了.原理通过Canvas强大的clip特性, 你要想什么形状的图片都可以的…class CircleImageView(context: Context, attributeSet: AttributeSet? = null) : AppCompatImageView(context, attributeSet) {原创 2017-06-08 18:00:55 · 790 阅读 · 0 评论 -
Android-->MediaMuxer,MediaCodec,AudioRecord及Camera实现音频视频混合MP4文件
本文相当长,读者请注意… 阅读之前,我喜欢你已经了解了以下内容: 1:https://github.com/saki4510t/AudioVideoRecordingSample 这个开源库介绍了, 音频和视频的录制, 其实已经够了~~~,不过视频的录制采用的是GLSurfaceView中的Surface方法, 并没有直接采用TextureView和Camera的PreviewCallb原创 2016-04-02 13:29:50 · 50290 阅读 · 31 评论 -
Android-->输入框自动提示文本, 失去焦点自动输入
客官请看图功能简介 检查文本输入框当前输入的字符串, 进行后台匹配, 如果匹配到了, 就进行提示. 当然, 这个提示并不是简单粗暴的setText, 因为用户的输入可能只是前面的一致而已.后面不一定相同呢. 一旦发现不匹配, 立即取消提示.原理1.自定义一个ExEditText 继承 AppCompatEditText public class ExEditText extends原创 2017-06-07 11:08:04 · 2214 阅读 · 1 评论 -
Android-->拍照/相册选择照片(从Uri中获取图片路径)
对于一个APP来说, 照片选择是经常会用到的功能.拍照获取照片 此方法需要指定照片的路径, 这是最简单的获取照片的方式了;/** * 拍照获取图片, imageUri.getPath() 图片路径 */public static void getPhotoFromCamera(Activity context, int requestCode, Uri imageUri) { Int原创 2016-10-10 13:39:05 · 11606 阅读 · 2 评论