XYH Blog

一板一眼就会滋生弱点

RecyclerView ConcatAdapter

ConcatAdapter

ConcatAdapter可以依次呈现多个RecyclerView#Adapter的内容,它是由MergeAdapter改名而来。 MergeAdapter是在RecyclerView:1.2.0-alpha02版本中添加进来的,然后在RecyclerView:1.2.0-alpha04改名为ConcatAdapter。 比如常见的给RecyclerView添加Header或者F...

Android存储空间整理

Scope Storage

Android文件系统类似于其他平台上基于磁盘的文件系统。该系统提供了以下几种保存应用数据的选项: 应用专属存储空间:存储仅供应用使用的文件,可以存储到内部存储卷中的专属目录或外部存储空间中的其他专属目录。使用内部存储空间中的目录保存其他应用不应访问的敏感信息。 共享存储:该目录下的文件,包括媒体、文档和其他文件可以与其他应用共享。 偏好设置:以键值对形式存储私有原始数据。 ...

CameraX小记

Jetpack CameraX

本文记录如何使用CameraX预览、拍照、解析照片、录制视频。 CameraX特性: CameraX最低兼容到Android5.0(API 21) CameraX使用的是Camera2的API,但使用的是更为简单且基于用例的方法,该方法具有生命周期感知能力。 支持CameraX Extensions插件,用于访问手机制造商已为特定手机实现的效果(焦外成像、HDR 及其他功能...

Coroutines Flow

Coroutines Flow小记

Flow Flow的出现是为了解决挂起函数只能返回一个返回值的问题,Flow支持返回一个”流”,可以理解为可以返回多个异步处理的结果。 创建一个Flow 创建flow的方式在Builders.kt中,主要有以下: 最基本的创建方式: 1 2 3 4 5 val mFlow = flow { emit(1) emit(2) emit(3)...

记一次Google Play上架遇到的问题

Google Play上架问题

前言 开发的直播项目VoLive在上架Google Play的时候被拒了2次,记录这2个问题。 SSL Error Handler 第一次上架的时候被拒绝,然后邮件告知: 问题:WebView遇到SSL错误应该告知用户,让用户处理是否继续或退出。 分析:问题代码出现在WebView重写WebViewClient#onReceivedSslError(view: WebView?...

Android MotionLayout

MotionLayout小记

前言 最早19年的时候在Youtube上看到Google的视频说过MotionLayout,当时看到第一感觉就是很酷,能用xml来描述两个布局切换的过程,还能定义关键帧,最近有时间来好好研究一下。 什么是MotionLayout Motion代表动作,说明MotionLayout处理布局之间的“运动”,这样说不够贴切,准确来说应该是处理布局之间的转换(比如从布局A切换到布局B的一个转换...

Android Q深色模式

关于深色模式的一些简记

前言 一篇晚来的记录,其实应该在3月份就可以整理出来,可还是疫情的原因,让原本就不轻松的工作变得更加繁忙起来,虽然也想过以后不写这些东西了,可是等若干年回头看,自己曾经写过的东西何尝又不是一种奇妙的感觉呢。 正文 在Android Q及更高的版本,Google提供了深色模式(或者叫夜间模式?),我最早在用网易云音乐、B站的时候就体验过了夜间模式,后来B站也把他们的方案开源了,Magic...

设计模式-单例模式

Singleton模式

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

设计模式-工厂模式

Factory模式

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

设计模式-Builder模式

Builder模式

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