自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

William的博客

好看的皮囊千篇一律,有趣的灵魂万里挑一

  • 博客(57)
  • 资源 (3)
  • 收藏
  • 关注

原创 Android ImageView 设置圆角及外边框样式

Android ImageView 设置圆角及外边框样式

2022-09-29 22:58:49 6761 2

原创 Android 性能优化 之 插桩日志分析

Android 使用插桩日志,更方便的分析性能数据,改善应用体验。

2022-08-22 23:04:43 1124 2

原创 【iOS 开发】搜索栏控件 UISearchBar

目录iOS 搜索栏控件 UISearchBar1. UISearchBar 使用2. UISearchBarDelegate 协议详解附 Github 源码:iOS 搜索栏控件 UISearchBar1. UISearchBar 使用// 创建 UISearchBarlet searchBar = UISearchBar(frame: CGRect(x: 15, y: 1400, width: 350, height: 150))// 设置 UISearchBar 风格searchBar.s

2022-03-02 22:09:39 3318 1

原创 【iOS 开发】时间选择器控件 UIDatePicker

目录iOS 时间选择器控件 UIDatePicker1. UIDatePicker 计时器模式2. UIDatePicker 日期时间模式附 Github 源码:iOS 时间选择器控件 UIDatePicker1. UIDatePicker 计时器模式// 创建 UIDatePickerlet picker1 = UIDatePicker(frame: CGRect(x: 15, y: 1050, width: 350, height: 150))// 设置 UIDatePicker 模式p

2022-03-01 21:43:41 4594

原创 【iOS 开发】选择器控件 UIPickerView

目录iOS 选择器控件 UIPickerView1. UIPickerView 使用2. UIPickerView 设置数据3. UIPickerView 监听选中事件4. UIPickerView 设置图片视图附 Github 源码:iOS 选择器控件 UIPickerView1. UIPickerView 使用// 创建 UIPickerViewlet pickerView = UIPickerView(frame: CGRect(x: 15, y: 900, width: 350, heig

2022-02-28 21:45:13 3236 1

原创 【iOS 开发】步进器控件 UIStepper

目录iOS 步进器控件 UIStepper1. UIStepper 常规使用2. UIStepper 设置按钮图片附 Github 源码:iOS 步进器控件 UIStepper1. UIStepper 常规使用// 创建 UIStepperlet stepper = UIStepper(frame: CGRect(x: 25, y: 880, width: 0, height: 0))// 设置 UIStepper 颜色stepper.tintColor = UIColor.red//

2022-02-26 21:44:33 547

原创 【iOS 开发】进度条控件 UIProgressView

目录iOS 进度条控件 UIProgressView1. UIProgressView 常规使用2. UIProgressView 设置进度图片附 Github 源码:iOS 进度条控件 UIProgressView1. UIProgressView 常规使用// 创建 UIProgressViewlet progress1 = UIProgressView(progressViewStyle: UIProgressView.Style.default)// 设置 UIProgressView

2022-02-19 17:12:44 2823

原创 【iOS 开发】活动指示器控件 UIActivityIndicatorView

目录iOS 活动指示器控件 UIActivityIndicatorViewUIActivityIndicatorView 常规使用附 Github 源码:iOS 活动指示器控件 UIActivityIndicatorViewUIActivityIndicatorView 常规使用// 创建 UIActivityIndicatorViewlet activity1 = UIActivityIndicatorView(style: .medium)// 设置 UIActivityIndicatorV

2022-02-19 16:49:31 1030

原创 【iOS 开发】滑块控件 UISlider

目录iOS 滑块控件 UISlider1. UISlider 的常规使用2. UISlider 设置进度图片附 Github 源码:iOS 滑块控件 UISlider1. UISlider 的常规使用// 创建 UISliderlet slider = UISlider(frame: CGRect(x: 25, y: 750, width: 340, height: 30))// 设置 UISlider 的最大值slider.maximumValue = 100// 设置 UISlide

2022-02-13 14:06:11 2434

原创 【iOS 开发】基础控件:UISegmentedControl

目录iOS 基础控件 UISegmentedControl1. UISegmentedControl 的常规使用2. UISegmentedControl 动态更新 item附 Github 源码:iOS 基础控件 UISegmentedControl1. UISegmentedControl 的常规使用// 创建分段控制器let segmentedControl = UISegmentedControl(items: ["Home", "Circle"])// 设置 UISegmentedC

2022-02-12 19:08:02 1742

原创 【iOS 开发】基础控件:UIPageControl

目录iOS 基础控件 UIPageControl1. UIPageControl 的常规使用2. UIPageControl 添加交互事件附 Github 源码:iOS 基础控件 UIPageControl1. UIPageControl 的常规使用// 创建分页控制器let pageControl = UIPageControl(frame: CGRect(x: 25, y: 650, width: 280, height: 30))// 设置 UIPageControl 页数pageCo

2022-02-09 20:50:35 1604

原创 【iOS 开发】基础控件:UISwitch

目录iOS 基础控件 UISwitch1. UISwitch 的常规使用2. UISwitch 监听开关状态变化附 Github 源码:iOS 基础控件 UISwitch1. UISwitch 的常规使用// 创建开关控件let si = UISwitch()// 设置位置si.center = CGPoint(x: 50, y: 620)// 设置 UISwitch 开启状态的颜色si.onTintColor = UIColor.green// 设置 UISwitch 滑块的颜色

2022-02-08 22:28:56 1750

原创 【iOS 开发】基础控件:UITextField

目录iOS 基础控件 UITextField1. UITextField 的常规使用2. UITextField 设置监听事件附 Github 源码:iOS 基础控件 UITextField1. UITextField 的常规使用// 创建 UITextFieldlet textField = UITextField(frame: CGRect(x: 30, y: 550, width: 300, height: 40))// 设置 UITextField 的边框风格textField.bo

2022-02-07 22:21:41 1285 2

原创 【iOS 开发】基础控件:UIImageView

目录iOS 基础控件 UIImageView1. UIImageView 的使用2. UIImageView 播放桢动画附 Github 源码:iOS 基础控件 UIImageView1. UIImageView 的使用let uiImage = UIImage(named: "demo")let size = uiImage?.sizeprint(size?.width.description as Any, size?.height.description as Any)let imag

2022-02-06 11:40:39 557

原创 【iOS 开发】基础控件:UIButton

目录iOS 开发之基础控件 UIButton1. UIButton 常规使用2. UIButton 设置内容图片3. UIButton 设置背景图片附 Github 源码:iOS 开发之基础控件 UIButton1. UIButton 常规使用let uiButton = UIButton(type: UIButton.ButtonType.system)// UIButton 设置位置uiButton.frame = CGRect(x: 10, y: 230, width: 360, heig

2022-02-01 16:20:37 1160

原创 【iOS 开发】基础控件:UILabel

目录iOS 开发之基础控件 UILabel1. UILabel 的使用2. UILabel 设置可变属性文本附 Github 源码:[ViewController.swift](https://github.com/WeiLianYang/iOSAppDemo/blob/main/iOSAppDemo/ViewController.swift)iOS 开发之基础控件 UILabel1. UILabel 的使用// 创建 UILabel 控件let label = UILabel(frame: CG

2022-01-30 18:43:47 1202

原创 【Fix Bug】针对 Google Photos 返回的图片Uri,裁剪照片失败

目录一、问题背景二、定位原因三、解决办法1. 通过媒体库返回 Uri2. 通过照片墙读取 Uri3. 将图片缓存后生成 Uri附 Github 源码一、问题背景在选择 Google Photos 的照片后,会返回 uri,然后再去调用照片裁剪功能会失败。系统提示 “Error, could not load media” 或 “发生错误,无法加载媒体”。二、定位原因在选择 Google Photos 的照片后,返回的 uri 为:content://com.google.android.

2022-01-01 19:25:40 3267 2

原创 Android 11 适配 软件包可见性

一、软件包可见性说明如果应用以 Android 11(API 级别 30)或更高版本为目标平台,在默认情况下,系统会自动让部分应用对您的应用可见,但会隐藏其他应用。通过让部分应用在默认情况下不可见,系统可以了解应向应用显示哪些其他应用,这样有助于鼓励最小权限原则。注意:如果您的应用以 Android 10(API 级别 29)或更低版本为目标平台,那么全部应用均会自动对您的应用可见。即使您的应用以 Android 11(API 级别 30)或更高版本为目标平台,以下场景不会受影响:不会

2021-12-24 21:36:05 4239

原创 Kotlin 与 Java 相互调用

目录一、Kotlin 调用 Java1. kotlin 关键字转义2. kotlin 可将数组传给 java 的可变数量参数3. kotlin 获取对象的 java 类二、Java 调用 Kotlin1. java 调用 kotlin 类的属性和方法2. java 调用 kotlin 的顶级属性和顶级函数3. java 调用生成指定类名的 kotlin 属性和函数4. java 调用 kotlin 的伴生对象的方法和静态方法5. java 调用 kotlin 单例类的方法6. java 调用 kotlin

2021-12-11 21:44:41 7500

原创 Kotlin 注解

目录1. kotlin 定义注解2. kotlin 元注解3. kotlin 使用注解附 Github 源码:1. kotlin 定义注解注解属性在使用时指定,其后不会再变,只能声明为只读属性annotation class Annotation1(val name: String, val desc: String)annotation class Annotation2(val field1: Int, val field2: String)2. kotlin 元注解@Re

2021-12-10 21:36:41 1968 1

原创 Kotlin 泛型 型变、逆变、星号投影、reified、泛型上限

目录1. kotlin 定义泛型类2. kotlin 定义类型变3. kotlin 定义类逆变4. kotlin 定义调用处型变5. kotlin 定义调用处逆变6. kotlin 星号投影7. kotlin 定义泛型函数8. kotlin 使用 reified 修饰泛型9. kotlin 定义泛型上限附 Github 源码:1. kotlin 定义泛型类// 定义泛型类open class GenericDemo<T>(open var field: T? = null)// 继承

2021-12-09 22:40:11 2455 2

原创 Kotlin 基本数据类型

目录1. kotlin 数值型2. kotlin 布尔型3. kotlin 字符型4. kotlin 字符串5. kotlin 可空类型6. kotlin 类型相互转换7. kotlin 二进制、十六进制附 Github 源码:1. kotlin 数值型fun main() { // 整数型 val a: Byte = 1 // 8位 val b: Short = 2 // 16位 val c: Int = 3 // 32 val c2 = 3 // 默认整型

2021-12-07 15:29:41 1394 1

原创 Kotlin 异常处理

目录1. kotlin 捕获异常2. kotlin 先处理小异常,再处理大异常3. kotlin 使用 throw 抛出异常4. kotlin 自定义异常附 Github 源码:1. kotlin 捕获异常不论在 try 块、catch 块中执行怎样的代码(除非退出虚拟机 System.exit(1) ),finally 块的代码总会被执行// 定义顶级常量const val fileName = "src/com/william/testkt/exception_demo.txt"/

2021-12-06 21:59:16 3694 2

原创 Kotlin 对象、枚举、委托

Kotlin 对象、枚举、委托一、Kotlin 对象1. kotlin 伴生对象class Demo { val field: String = "demo field" // kotlin 定义伴生对象 companion object { // kotlin 定义常量 const val KEY_NAME = "key_name" // kotlin 模拟静态方法 @JvmStatic // 加注解实现

2021-12-06 11:05:00 944

原创 Kotlin 扩展、抽象类、接口、内部类、嵌套类

Kotlin 扩展、抽象类、接口、内部类、嵌套类一、Kotlin 扩展扩展的本质:并没有真正修改所扩展的类,只是定义了一个函数,当调用扩展方法时,执行静态解析,由编译时类型决定,属于函数调用1. kotlin 扩展方法// 定义类class ExtClass { var field1: Int = 100 var field2: String = "value str"}/** * kotlin 定义扩展方法 */fun ExtClass.printField()

2021-12-05 20:38:00 467

原创 Kotlin 类、属性、方法、继承、多态

Kotlin 类、属性、方法、继承、多态一、Kotlin 类1. kotlin 定义类使用 open 修饰类,表明可被子类继承使用 open 修饰属性,表明可被子类覆写/** * Kotlin 使用 class 定义类 Phone,使用 open 修饰类,表明可被继承 * 主构造器参数 为 system 只读属性,可被覆写 * 所有属性均会自动生成 getter 或 setter 方法,val 修饰的只有 getter 方法 */open class Phone constru

2021-12-04 20:27:04 2152 2

原创 Kotlin 函数与 Lambda 表达式

Kotlin 函数 与 Lambda 表达式一、Kotlin 函数1. kotlin 定义函数/** * 定义函数。无参,无返回值。 * 也可以使用 Unit 表明没有返回值,同 Java 的 void */fun function1() { println("no params func")}/** * 定义函数,返回2个参数拼接的结果字符串 * * @param param1 int * @param param2 String * @return String

2021-12-03 23:30:14 746 1

原创 Kotlin 集合 Set、List、Map 及常用方法

Kotlin 集合详解Kotlin Set、List、Map 集合及常用方法

2021-12-02 22:07:54 2922

原创 Kotlin 数组及常用方法

Kotlin 数组及常用方法1. kotlin 创建数组val arr1 = arrayOf(1, 2, 3)val arr2 = arrayOf("1", "2", "3")// 指定长度为 3 的整型数组,初始化值为 nullval arr3 = arrayOfNulls<Int>(3)// 创建类型为 String 的空数组val emptyArr = emptyArray<String>()// 创建基本类型的数组val arrInt = intArra

2021-11-30 22:00:14 11271

原创 Kotlin 循环、流程控制:if-else、when、for-in

Kotlin 流程控制一、kotlin if-else 判断结构1. if-else 简单判断val bool = trueif (bool) { println("bool is true")} else { println("bool is false")}2. if-else-if 判断结构val score = 85if (score > 90) { println("score > 90,优秀")} else if (score &

2021-11-29 21:56:14 946

原创 Kotlin 运算符

Kotlin 运算符1. kotlin 单目运算符var field = 1// kotlin 自增运算符field++++fieldfield.inc() // 同自增运算// kotlin 自减运算符field----fieldfield.dec() // 同自减运算println(field) // 12. kotlin 双目算术运算符var a = 3val b = 4var result = 0result = a + b // 7,同a.plus

2021-11-29 17:32:22 1175

原创 Swift 高级特性

Swift 高级特性一、Swift 独占访问Swift 内存安全检查:当两个变量访问同一块内存时,会产生独占内存访问限制。发生读写权限冲突的情况:inout 参数读写冲突结构体中函数修改成员属性读写冲突值类型属性读写冲突1. inout 参数读写冲突// 1. Swift inout 参数读写冲突var inputStr = "input"func plusSlef1(_ param: inout String) { // 在 >= Swift4 版本会抛异常

2021-11-27 21:03:09 1566

原创 Swift 类型转换、泛型、扩展与协议

Swift5 类型转换、泛型、扩展与协议1. Swift 判断值类型// Swift5 判断值类型var anyObj: Any = 1if anyObj is Int { print("anyObj's type is Int")} else if anyObj is String { print("anyObj's type is String")}2. Swift 判断引用类型// Swift5 判断引用类型class Base { var tex

2021-11-25 23:16:46 1290

原创 Swift 内存管理与异常处理

Swift5 内存引用与异常处理1. Swift 内存销毁时机// Swift5 内存销毁时机// 引用类型的内存销毁时机class ClassDemo { var a = "value a" deinit { // 实例被释放 print("deinit class a") }}// 可空类型var ins1: ClassDemo? = ClassDemo()var ins2 = ins1var ins3 = ins2in

2021-11-23 22:09:51 1754

原创 Swift 构造方法

Swift5 构造方法1. Swift 类的构造方法// Swift5 类的构造方法// 1. 在构造方法中需要给没有默认值的属性初始化值class Demo1 { // 含有默认值 var param1: String = "default" // 未指定默认值,需要在 init() 中初始化 var param2: String // 未指定默认值,类型为 Optional,可空, // 默认值为 nil, 不需要在 ini

2021-11-21 19:21:00 1617

原创 Swift 属性与方法

Swift5 属性与方法1. 存储属性2.3.4.5.6.GitHub 源码:Property&Method.playground

2021-11-19 20:57:34 1346

原创 Swift 结构体与类

Swift5 结构体与类在以下情况时推荐使用结构体,其他情况请使用类:只需要少量的简单数据类型的属性在传输数据时需要复制而不是影响原变量不需要继承其他类1. 结构体结构体可以定义属性和方法,像是一组数据类型的集合,不可继承,属于值类型// 定义结构体struct Phone { // 定义价格属性 var price: Int // 定义品牌属性 var brand: String // 定义型号属性

2021-11-17 22:23:00 1684 1

原创 Swift 高级运算符与枚举

Swift5 高级运算符与枚举1. 位运算符// Swift 位运算var sixteen: UInt8 = 0b00010000 // 二进制print(sixteen) // 8// Swift 按位与 & : 操作数相同的位进行逻辑与运算// 即两个对应位的值都为1,结果为1,否则为0。示例:var result1 = sixteen & 0b00001111 // 0var result2 = 0b00000111 & 0b00000001 // 1/

2021-11-16 21:48:58 1595

原创 Swift 函数与闭包

Swift 函数与闭包1. 创建函数// 创建函数,无参,无返回值,同 func func1() -> Voidfunc func1() { print("no params func")}func1()// 创建函数,带参,带返回类型func func2(param: Int) -> Bool { return param > 60}func2(param: 80)// 创建函数,带多个参数,返回类型为元组func func3(param1

2021-11-11 22:18:28 2138

原创 Swift 运算符、循环、流程控制 for-in, while, if-else, switch-case, guard-else

Swift 运算符、循环、流程控制 for-in, while, if-else, switch-case, guard-else1. 运算符:三目,空合并,区间运算符// 元组比较大小。需要元素个数一致,对应的位置的元素类型相同,每一个元素都必须支持比较运算操作。// 从第一个元素开始比较,如果没有比较出结果,那么继续依次比较,直到比出结果为止。var a = (1, 2, "3")var b = (1, 2, "4")var c = a < b // true// 条件判断i

2021-11-09 21:39:03 2139 1

一款好玩的弹幕神器,下载体验

一款好玩的弹幕神器,可以用来 撩 小哥哥 或 小姐姐 哦。 已完成的功能: 1. 可自行输入文本 2. 可设置字体移动速度 3. 可设置字体大小、颜色

2020-11-19

安卓快捷方式设计指南

关于安卓应用程序快捷方式图标的安卓官方介绍文档,文档为英文文档

2018-07-15

TitleLocate

关于沉浸式状态栏设计,标题栏标题部分随页面滑动的定位效果

2018-01-03

空空如也

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

TA关注的人

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