自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 表格计划表(支持简单定制,如: 计划表颜色定制,单元格大小定制...)

github地址:https://github.com/PPQingZhao/ScheduleViewDemo 运行截图: 第一张图展示 AM 00:00 - 11:59计划 ...

2019-11-19 20:34:33 379

原创 RecyclerView粘性头部,支持线性和网格布局,支持item添加和删除(无需再次排序)

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

2019-11-13 18:50:18 352

原创 最简单实现网格布局分页效果 (recyclerview + snaphelper)

运行截图                       基于 PagerSnapHelper 自定义 GridPagerSnapHelper. 支持横向与纵向滑动,行列数量可自定义传入 private void initGridePager() { // 3行3列,横向 int colum = 3; int row = 3; ...

2019-07-05 16:25:57 4017 6

原创 线程

多线程 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间 线程是指进程中的一个执行流程,一个进程可以运行多个线程 意义: 进程的意义:提高CPU的使用率 线程的意义:提高应用程序的使用率 Thread类中start() 和run()区别 ①start: 用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,

2020-05-31 21:36:32 298

原创 面向对象

面向对象思想: 封装 隐藏实现细节,对外提供公共的访问方式 好处: ①隐藏实现细节,对外提供公共的访问方式 ②复用性(工具类) ③安全性(私有化成员变量,使用setXXX(),getXXX()) 继承 把多个类中相同的成员提取到定义到一个独立的类中,然后让这多个类与这个独立类产生一个关系,这多个类就具备这些内容,这个关系叫做继承。 优点 ① 复用性(直接使用继承自父类的成员) ②维护性(只修改父类,就可以达到影响子类效果) ③是多态的前提 缺点 ①耦合度增加(子类中耦合了多个类,修改父类,就会影响子类)

2020-05-31 20:46:33 254

原创 Retrofit

https://www.jianshu.com/p/45cb536be2f4

2020-02-12 16:46:46 265

原创 关于保存状态的Fragment,setRetainInstance(true)

关于保存状态的Fragment,setRetainInstance(true)添加链接描述

2020-01-14 09:51:09 310

原创 Android组件-ViewModel 源码分析

android viewModel源码分析

2020-01-12 17:11:23 388

原创 全面了解MVC、MVP、MVVM模式(含实例讲解)

android 架构

2020-01-07 19:10:49 591

原创 recyclerview 滑动切换画廊效果

https://blog.youkuaiyun.com/weixin_43853568/article/details/84790552

2019-12-27 11:28:41 761

原创 策略模式

https://blog.youkuaiyun.com/haoxuhong/article/details/84023825

2019-12-27 11:04:27 127

原创 recyclerView adapter.notifyDataSetChanged()分析

① mAdapter.notifyDataSetChanged(); 跟进源码,发现是通过观察者模式进行分发的 RecyclerView.Adapter: public final void notifyDataSetChanged() { this.mObservable.notifyChanged(); } ② 找到注册观察者的地方:应该就是设置设...

2019-12-26 19:30:18 1717

原创 recyclerview 预取机制

https://blog.youkuaiyun.com/tangedegushi/article/details/88790754

2019-12-25 16:51:51 325

原创 RecyclerView性能优化

https://zhuanlan.zhihu.com/p/49338922

2019-12-25 15:34:23 227

原创 android AOP编程

https://blog.youkuaiyun.com/innost/article/details/49387395

2019-12-25 10:33:53 125

原创 基于滑动场景解析RecyclerView的回收复用机制原理

基于滑动场景解析RecyclerView的回收复用机制原理

2019-12-23 20:14:53 206

原创 android aidl

Android中AIDL的使用详解 Android中AIDL的工作原理

2019-12-17 16:19:36 150

原创 单例模式

**单例模式定义:** 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例 **使用场景:** 确保某个类有且只有一个对象的场景,避免产生多个对象消耗过多资源,或者某种类型的对象只应该有且只有一个.例如,创建一个对象需要消耗的资源过多,如要访问IO 和数据等资源,这时就要考虑使用单例模式. **实现单例模式主要有如下几个关键点:** ① ...

2019-12-17 11:43:13 154

原创 深入理解Java虚拟机——JVM类加载机制(类加载过程和类加载器)

类加载过程

2019-12-17 11:03:21 202

原创 Glide自定义缓存key

https://juejin.im/post/5a335cc7f265da431523f542

2019-12-10 17:06:30 1736

原创 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 327

原创 Glide 源码分析--初始化

初始化 RequestOptions options = new RequestOptions() .skipMemoryCache(true) .diskCacheStrategy(DiskCacheStrategy.NONE); Glide.with(context) .load...

2019-12-10 11:16:40 276

原创 状态模式

状态模式

2019-12-09 10:41:57 146

原创 Android利用android:indeterminateDrawable来实现ProgressBar三种方式

Android利用android:indeterminateDrawable来实现ProgressBar三种方式

2019-12-06 10:52:10 267

原创 Android开发之MVVM新姿势探索

[Android开发之MVVM新姿势探索 ](https://www.jianshu.com/p/fc814a20c452)

2019-12-02 17:10:40 172

原创 Glide使用总结

Glide使用总结: 一.缓存策略: RequestOptions requestOptions = new RequestOptions() .diskCacheStrategy(DiskCacheStrategy.NONE) // 配置磁盘缓存 .`skipMemoryCache(true) // 是否跳过内存缓存` ...

2019-11-27 15:40:32 447

原创 android框架

Android 由setContentView探究Activity界面加载流程及Activity、Window和DecorView的关系 链接 Android View 测量流程(Measure)源码解析 链接

2019-11-21 16:15:31 147

原创 android drawable目录

https://blog.youkuaiyun.com/guolin_blog/article/details/50727753 https://blog.youkuaiyun.com/zhaokaiqiang1992/article/details/49787117 基本概念: 1. px: 分辨率单位像素 平常所说的1920×1080只是像素数量,也就是1920px × 1080p...

2019-11-20 14:31:06 359

原创 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 6703 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 833

原创 ConstraintLayout 详解

https://www.jianshu.com/p/f86f800964d2

2019-08-12 11:02:36 153

原创 android 设计文档

https://blog.youkuaiyun.com/wzgiceman/article/details/82593266

2019-07-15 09:51:42 1139

原创 AsyncTask(多任务串行/并行)简单分析

1. 多实例并行时,使用 asynchTask.execute()提交的任务是串行执行的. 下面分析原因: 以下是两个异步实例提交任务: private void asynchTaskTest() { // 异步任务1 TestAnsycTask testAnsycTask1 = new TestAnsycTask(); Log.e("T...

2019-07-12 15:41:43 920

原创 GreenDao 学习

https://www.jianshu.com/p/53083f782ea2

2019-07-11 13:43:14 199

原创 源码--Handler 机制

文章未仔细梳理 Handler 机制大致描述:  这个机制主要牵涉到类 Handler、Message、MessageQueue 和 Looper.  这个机制大致工作流程: ① 执行 Looper.prepare();方法,为当前线程准备Looper对象; ②接下来就是往消息队列中插入消息,也就是我们熟悉的handler.sendMessage(new Message...

2019-07-10 17:35:57 200

原创 android keytool工具获取签名md5/sha1,代码动态获取

终端使用keytool 工具获取md5 sha1 https://www.jianshu.com/p/edfb4922840d 代码动态获取md5 https://www.jianshu.com/p/e7fa21c4d3cf 代码动态获取 sha1 https://www.jianshu.com/p/499f95971ad7 ...

2019-07-01 15:20:14 1070

原创 音视频学习四: Opengl ES Shader讲解

Shader             生成测试yuv数据和pcm数据命令: ffmpeg -i test.mp4 -f si6le test.pcm ffmpeg -i 720.mp4 -pix_fmt yuv20p -s 424x240 out.yuv 具体显示yuv数据 --- 着色器语言 GLSL (运行在显卡上,不消耗cpu) -GLSL的基本语法与C语言基本相同 -它...

2019-06-13 10:51:21 2542

原创 音视频学习三: 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 5108 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 955

原创 音视频学习一: android平台下ffmpeg编解码简记-解封装

解封装 1.常用函数: av_register_all():注册所有组件 avformat_network_init() : 初始化网络环境 avformat_open_input(...) : 打开输入的视频文件 avformat_find_stream_info(...) : ...

2019-06-11 14:42:19 1121

空空如也

空空如也

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

TA关注的人

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