XYH Blog

一板一眼就会滋生弱点

设计模式-单例模式

Singleton模式

wiki百科 单例模式,也叫单子模式,是一种常用的软件设计模式,属于创建型模式的一种。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。 优点: 内存只有一个实例,节约内存。 避免对资源的重复占用。 缺点: 没有接口,不能继承,与单一职责原则冲突。 单例实现方法: 懒汉...

设计模式-工厂模式

Factory模式

工厂模式 -wiki百科 工厂方法模式(英语:Factory method pattern)是一种实现了“工厂”概念的面向对象设计模式。就像其他创建型模式一样,它也是处理在不指定对象具体类型的情况下创建对象的问题。工厂方法模式的实质是“定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。” 优点: 屏蔽了类的实现过程,用户...

设计模式-Builder模式

Builder模式

-wiki百科 生成器模式(英:Builder Pattern)是一种设计模式,又名:建造模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。 在Android SDK里有很多地方也使用了Builder模式,如经典的AlertDialog#Builder。 优点: 建造者独立,易扩展。 ...

设计模式-适配器模式

适配器模式

-wiki百科 在设计模式中,适配器模式(英语:adapter pattern)有时候也称包装样式或者包装(英语:wrapper)。将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类能在一起工作,做法是将类自己的接口包裹在一个已存在的类中。 比如在Android SDK中经典的BaseAdapter,同时满足ListView跟Spinner获取Item...

仿抖音时钟

一款类似抖音时钟的自定义View

前言 最近在抖音上看到的一个效果,觉得蛮好玩的,于是想着自己写一个,顺便复习一下自定义View。 效果图 思路 该效果稍微麻烦一点的就是3个圈的旋转控制,其余都是基础的绘制内容。 绘制中间文本(时间、日期、星期) 绘制时钟圈 绘制分钟圈 绘制秒钟圈 旋转 绘制选中框 绘制比较简单,通过canvas.rotate()旋转绘制时分秒,其中需要计算的点是时、...

编译ijkplayer

Ubuntu编译ijkplayer

编译ijkplayer 鉴于公司即将开始的直播APP开发,对市面上主流播放器进行了考究之后决定采用Bilibili开源的ijkplayer作为播放器,本文记录如何在Ubuntu下编译ijkplayer,Windows安装虚拟机的教程可以参考这里。 环境准备 本次编译需要的环境如下: JDK SDK NDK Git Make vim yasm JDK 在U...

leetcode字符串反转

leetcode入门算法。

字符串反转 题目要求: 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 示例: 输入:["h","e","l","l","o"] 输出:["O","l","l","e","...

Android10 行为变更

Android 行为变更。

限制非SDK接口 为了帮助确保应用的稳定性和兼容性,Android 平台开始限制应用在 Android 9(API 级别 28)中使用非 SDK 接口。Android 10 包含更新后的受限制非 SDK 接口列表(基于与 Android 开发者之间的协作以及最新的内部测试)。我们的目标是在限制使用非 SDK 接口之前确保有可用的公开替代方案。 如果您不打算以 Android 10(API...

Android指纹识别简记

Android指纹识别简记。

前言 Google在Android6.0开始已经有官方API支持指纹识别,每次讨论这个话题总绕不开国产五彩缤纷的ROM,国产部分手机在Android6.0之前有已经实现了自己的指纹识别功能,具体的适配需要去查阅厂商开发文档,本文不深入讨论。 想要实现指纹识别在AndroidM(6.0)~ Android P(9.0)有 FingerprintManager,而在Android P(9.0...

微信小程序滑块验证

本文记录微信小程序滑块验证功能

本文记录微信小程序实现滑块验证。 前言 最近做小程序的时候有个需求要求用户登录之前需要滑块验证,这个在很多网页上面也有使用防止模拟登录或者限制登录频率。 本文记录实现的思路,基本的思路是使用微信提供的movable-area配合movable-view。 具体的使用方法参考文档。 实现步骤如下: 记录滑动的x并且判断x是否到达了滑动的边界,如果未到边界则将x置为0,反...