- 博客(40)
- 收藏
- 关注

原创 表格计划表(支持简单定制,如: 计划表颜色定制,单元格大小定制...)
github地址:https://github.com/PPQingZhao/ScheduleViewDemo运行截图: 第一张图展示 AM 00:00 - 11:59计划...
2019-11-19 20:34:33
313

原创 RecyclerView粘性头部,支持线性和网格布局,支持item添加和删除(无需再次排序)
RecyclerView粘性头部 1.实现原理:在外部添加一个与RecyclerView对齐的headerView,动态添加需要展示的header 2.支持线性和网格布局 3.支持item添加和删除(无需再次排序)博主文笔太菜,不想多说,直接上项目链接github:https://github.com/PPQingZhao/StickyHead...
2019-11-13 18:50:18
282

原创 最简单实现网格布局分页效果 (recyclerview + snaphelper)
运行截图 基于 PagerSnapHelper 自定义 GridPagerSnapHelper.支持横向与纵向滑动,行列数量可自定义传入 private void initGridePager() { // 3行3列,横向 int colum = 3; int row = 3; ...
2019-07-05 16:25:57
3862
6
原创 线程
多线程进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间线程是指进程中的一个执行流程,一个进程可以运行多个线程意义:进程的意义:提高CPU的使用率线程的意义:提高应用程序的使用率Thread类中start() 和run()区别①start:用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,
2020-05-31 21:36:32
247
原创 面向对象
面向对象思想:封装隐藏实现细节,对外提供公共的访问方式好处:①隐藏实现细节,对外提供公共的访问方式②复用性(工具类)③安全性(私有化成员变量,使用setXXX(),getXXX())继承把多个类中相同的成员提取到定义到一个独立的类中,然后让这多个类与这个独立类产生一个关系,这多个类就具备这些内容,这个关系叫做继承。优点① 复用性(直接使用继承自父类的成员)②维护性(只修改父类,就可以达到影响子类效果)③是多态的前提缺点①耦合度增加(子类中耦合了多个类,修改父类,就会影响子类)
2020-05-31 20:46:33
212
原创 关于保存状态的Fragment,setRetainInstance(true)
关于保存状态的Fragment,setRetainInstance(true)添加链接描述
2020-01-14 09:51:09
265
原创 recyclerview 滑动切换画廊效果
https://blog.youkuaiyun.com/weixin_43853568/article/details/84790552
2019-12-27 11:28:41
709
原创 recyclerView adapter.notifyDataSetChanged()分析
① mAdapter.notifyDataSetChanged();跟进源码,发现是通过观察者模式进行分发的RecyclerView.Adapter:public final void notifyDataSetChanged() { this.mObservable.notifyChanged(); }② 找到注册观察者的地方:应该就是设置设...
2019-12-26 19:30:18
1627
原创 recyclerview 预取机制
https://blog.youkuaiyun.com/tangedegushi/article/details/88790754
2019-12-25 16:51:51
268
原创 android AOP编程
https://blog.youkuaiyun.com/innost/article/details/49387395
2019-12-25 10:33:53
102
原创 单例模式
**单例模式定义:** 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例**使用场景:** 确保某个类有且只有一个对象的场景,避免产生多个对象消耗过多资源,或者某种类型的对象只应该有且只有一个.例如,创建一个对象需要消耗的资源过多,如要访问IO 和数据等资源,这时就要考虑使用单例模式.**实现单例模式主要有如下几个关键点:**①...
2019-12-17 11:43:13
120
原创 Glide 4.7.1源码分析--启动加载 into(view)
Glide源码分析 – 启动图片加载流程// 在 RequestBuilder.into()之前必须调用load()系列方法,设置model// 重载的一系列into()方法最终都调用/* private <Y extends Target<TranscodeType>> Y into( @NonNull Y target, @Nullable...
2019-12-10 17:05:38
283
原创 Glide 源码分析--初始化
初始化 RequestOptions options = new RequestOptions() .skipMemoryCache(true) .diskCacheStrategy(DiskCacheStrategy.NONE); Glide.with(context) .load...
2019-12-10 11:16:40
228
原创 Android利用android:indeterminateDrawable来实现ProgressBar三种方式
Android利用android:indeterminateDrawable来实现ProgressBar三种方式
2019-12-06 10:52:10
229
原创 Android开发之MVVM新姿势探索
[Android开发之MVVM新姿势探索](https://www.jianshu.com/p/fc814a20c452)
2019-12-02 17:10:40
143
原创 Glide使用总结
Glide使用总结:一.缓存策略:RequestOptions requestOptions = new RequestOptions() .diskCacheStrategy(DiskCacheStrategy.NONE) // 配置磁盘缓存 .`skipMemoryCache(true) // 是否跳过内存缓存` ...
2019-11-27 15:40:32
359
原创 android框架
Android 由setContentView探究Activity界面加载流程及Activity、Window和DecorView的关系 链接Android View 测量流程(Measure)源码解析 链接
2019-11-21 16:15:31
113
原创 android drawable目录
https://blog.youkuaiyun.com/guolin_blog/article/details/50727753https://blog.youkuaiyun.com/zhaokaiqiang1992/article/details/49787117基本概念:1. px: 分辨率单位像素 平常所说的1920×1080只是像素数量,也就是1920px × 1080p...
2019-11-20 14:31:06
307
原创 UnsupportedOperationException: Failed to resolve attribute at index 13:TypedValue{t=0x2/d=0x7f03018
bug描述:Caused by: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 13: TypedValue{t=0x2/d=0x7f03018e a=7}原因:构造布局填充器对象LayoutInflater.from(context.getApplicationContext(...
2019-11-13 19:59:03
6520
4
原创 android 邮箱分享(添加附件筛选邮箱应用)
/** * 发送邮件 * * @param title * @param email * @param extraText */ public static void sendEmail(String title, String[] email, String extraText) { if (ArrayUti...
2019-11-06 10:50:16
763
原创 android 设计文档
https://blog.youkuaiyun.com/wzgiceman/article/details/82593266
2019-07-15 09:51:42
1070
原创 AsyncTask(多任务串行/并行)简单分析
1. 多实例并行时,使用 asynchTask.execute()提交的任务是串行执行的.下面分析原因:以下是两个异步实例提交任务: private void asynchTaskTest() { // 异步任务1 TestAnsycTask testAnsycTask1 = new TestAnsycTask(); Log.e("T...
2019-07-12 15:41:43
854
原创 源码--Handler 机制
文章未仔细梳理Handler 机制大致描述: 这个机制主要牵涉到类 Handler、Message、MessageQueue 和 Looper. 这个机制大致工作流程: ① 执行 Looper.prepare();方法,为当前线程准备Looper对象; ②接下来就是往消息队列中插入消息,也就是我们熟悉的handler.sendMessage(new Message...
2019-07-10 17:35:57
154
原创 android keytool工具获取签名md5/sha1,代码动态获取
终端使用keytool 工具获取md5 sha1https://www.jianshu.com/p/edfb4922840d代码动态获取md5https://www.jianshu.com/p/e7fa21c4d3cf代码动态获取 sha1https://www.jianshu.com/p/499f95971ad7...
2019-07-01 15:20:14
1003
原创 音视频学习四: Opengl ES Shader讲解
Shader 生成测试yuv数据和pcm数据命令:ffmpeg -i test.mp4 -f si6le test.pcmffmpeg -i 720.mp4 -pix_fmt yuv20p -s 424x240 out.yuv具体显示yuv数据 --- 着色器语言 GLSL (运行在显卡上,不消耗cpu)-GLSL的基本语法与C语言基本相同-它...
2019-06-13 10:51:21
2436
原创 音视频学习三: EGL讲解
EGL Opengl与窗口系统对应的设配层EGL是由Khronos Group提供的一组平台无关的API,它的主要功能如下:1. 和本地窗口系统(native windowing system)通讯;2. 查询可用的配置;3. 创建OpenGL ES可用的“绘图表面”(drawing surface);4. 同步不同类别的API之间的渲染,比如在OpenGL ES和Op...
2019-06-12 16:01:26
4944
3
原创 音视频学习二: android平台下ffmpeg编解码简记-编解码
编解码1.主要函数avcodec_register_all(); 注册所有解码器 AVCodec *avcodec_find_decoder(enum AVCodecID id); 软件码:根据解码器id找到解码器 AVCodec *avcodec_find_decoder_by_name(const char *name); 硬解码:根据解码器名称找到解...
2019-06-11 16:18:35
858
原创 音视频学习一: android平台下ffmpeg编解码简记-解封装
解封装1.常用函数:av_register_all():注册所有组件 avformat_network_init() : 初始化网络环境 avformat_open_input(...) : 打开输入的视频文件 avformat_find_stream_info(...) : ...
2019-06-11 14:42:19
1051
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人