自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (2)
  • 收藏
  • 关注

原创 Android分区存储到底该怎么做

App私有目录就是上面说的内部存储,共享存储空间就是上面说的外部存储。Android10以前,外部存储中的所有文件虽然有分类目录,但是不管文件是什么类型都可以随便存放,比如mp3音频文件可以放到Movies目录中或者Picture目录中。分区存储就是在外部存储中的这些文件夹不能随便放了,必须相应的文件类型存到相应的目录中才可以。比如图片文件只能放到Picture目录或者DCIM目录中,就不能放到Movies或者Music中了,否则就会报错崩溃。

2024-03-16 22:56:39 1069 1

原创 Android自定控件感觉无从下手看这里

1、xml可配置属性2、代码动态设置属性//根据文字内容获取一个矩形@Override。

2024-03-03 00:30:47 954

原创 Android 架构 MVC > MVP > MVVM

Android 目录结构就是 MVC,xml 布局文件可以看作 View 层,代码在 Activity 中,很容易由于代码管控不慎,导致 Activity 即成为 Control 层,也成为 Model 层,甚至写出 View 层代码,Activity 会变得非常臃肿。Activity 做的事情过多,也违背了单一职责原则。在 MVC 基础之上发展出了 MVP 架构,从代码层上分离处理逻辑,Activity 作为 View 层,负责数据的 Model 层独立开来,View 层发送指令给 Presenter,P

2022-06-08 22:38:33 505 1

原创 Kotlin 核心编程-代数数据类型和模式匹配(3)

文章目录一、代数数据类型一、代数数据类型

2022-02-13 18:25:10 1403

原创 Kotlin 核心编程-面向对象(2)

文章目录一、类和构造方法1.1、Kotlin 中的类和接口1.2、更简洁的构造类的对象一、类和构造方法1.1、Kotlin 中的类和接口Kotlin 中的类class Bird { val weight: Double = 500.0 val color: String = "blue" val age: Int = 1 fun fly() {}}不可变属性成员:声明不可变的属性成员用 val,是利用在 Java 中的 final 修饰符实现的,声明可变的属性

2022-02-10 23:46:47 1243

原创 Kotlin 核心编程-基础语法(1)

高阶函数特性:可以在顶层直接定义一个函数也可以在函数内部定义一个局部函数还可以直接将函数像普通变量一样传递给另一个函数,或在其他函数内被返回

2022-02-10 17:03:41 1391

原创 多渠道打包

多渠道

2021-12-12 18:19:54 2515

原创 View 的工作原理

文章目录一、 初始 ViewRoot 和 DecorView一、 初始 ViewRoot 和 DecorViewViewRoot 对应于 ViewRootImpl 类,它是连接 WindowManager 和 DecorView 的纽带,View 的三大流程均是通过 ViewRoot 来完成的

2021-09-09 22:53:17 70

原创 View 的事件体系

文章目录一、View 基础知识1.1、什么是 View1.2、View 的位置参数一、View 基础知识1.1、什么是 ViewView 是 Android 中所有控件的基类,不管是简单的 Button 和 TextView 还是复杂的 RelativeLayout 和 ListView,它们的共同基类都是 View。ViewGroup 内部包含了许多个控件,即一组 View,ViewGroup 也继承了 View,这就意味着 View 本身就可以是单个控件也可以是由多个控件组成的一组控件,通过这种关

2021-09-08 23:45:39 181

原创 Activity 任务栈和它的启动模式

文章目录Activity 的 LaunchModeActivity 的 LaunchMode

2021-08-18 16:11:31 410

原创 IPC 机制

文章目录分清进程和线程,IPC 是进程间通信,不是线程间通信。

2021-07-26 22:45:37 352

原创 Kotlin 从零开始(四)

文章目录一、协程的定义二、协程的基本用法一、协程的定义在线程中,需要依靠操作系统的调度才能实现不同线程之间的切换。而协程可以理解成一种轻量级的线程,它能在编程语言的层面就能实现不同协程之间的切换,大大提升了并发编程的运行效率。二、协程的基本用法Kotlin 并没有将协程纳入标准库的 API 当中,而是以依赖库的形式提供的。implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.1"创建一个 CoroutinesTest

2021-07-25 19:21:06 202 2

原创 Kotlin 从零开始(三)

一、泛型和委托1.1、泛型的基本用法

2021-07-25 19:20:48 384

原创 Message、Handler、MessageQueue、Looper

Android 中的异步消息处理主要由 4 个部分组成:Message、Handler、MessageQueue 和 Looper。MessageMessage 是线程之间传递的消息,它可以在内部携带少量的信息,用于在不同线程之间传递数据。比如 Message 的 what ,arg1、arg2 字段携带一些整型数据,obj 字段携带一个 Object 对象。HandlerHandler 顾名思义也就是处理者的意思,它主要是用于发送和处理消息的。发送消息一般是使用 Handler 的 sendMe

2021-07-15 23:44:33 171

原创 Kotlin 从零开始(二)

文章目录一、标准函数和静态方法1.1、标准函数 with、run 和 apply1.2、定义静态方法一、标准函数和静态方法1.1、标准函数 with、run 和 applyKotlin 的标准函数指的是 Standart.kt 文件中定义的函数,任何 Kotlin 代码都可以自由地调用所有的标准函数。在上一篇中已经介绍了 let 这个标准函数,它主要的作用就是配合 ?. 操作符进行判空处理。withwith 函数接收一个 StringBuilder 对象,此时with 函数中整个 Lambda 表

2021-06-28 23:45:01 290 3

原创 Kotlin 基本语法(一)

文章目录一、Android 中的日志工具类 Log二、变量和函数2.1、变量2.2、函数(方法)2.3、语法糖三、程序的逻辑控制3.1、if 条件语句3.2、when 条件语句3.3、循环语句一、Android 中的日志工具类 LogLog.v():对于级别 verbose,是 Android 日志里面级别最低的一种。用于打印那些最为琐碎的、意义最小的日志信息。Log.d():对应级别 debug,比 verbose 高一级。用于打印一些调试信息,这些信息对你调试程序和分析问题应该是有帮助的。Lo

2021-05-16 22:55:11 491

原创 使用 AIDL

接上一篇 IPC 机制文章目录三、Android 中的 IPC 方式3.4、使用 AIDL三、Android 中的 IPC 方式3.4、使用 AIDL前面介绍了使用 Messenger 来进行进程间通信的方法,可以发现,Messenger 是以串行的方式处理客户端发来的消息,如果大量的消息同时发送到服务端,服务端仍然只能一个个处理,如果有大量的并发请求,那么用 Messenger 就不合适了。同时,Messenger 的作用主要是为了传递消息,但是我们可以使用 AIDL 来实现跨进程的方法调用。下

2021-04-11 22:10:08 126

原创 位运算符

B站视频一、位逻辑运算符& //与| //或~ //取反^ //异或(可以理解为是否相等)1.1、位逻辑运算结果ABA&BA|BA^B~A0000011001100101111111001.2、位逻辑运算的逻辑结果ABA&BA|BA^Btruetruetruetruefalsetruefalsefalsetruetruef

2021-03-16 22:44:00 99

原创 二进制、十进制、十六进制

文章目录一、十进制()二、二进制()三、十六进制()四、进制转换4.1、二进制转十进制(B——>D)4.2、十进制转二进制()4.3、十六进制转十进制()4.4、十进制转十六进制()4.5、二进制转十六进制()4.6、十六进制转二进制()五、数据5.1、无符号数据5.2、有符号数据5.3、非数值数据一、十进制()二、二进制()三、十六进制()四、进制转换4.1、二进制转十进制(B——>D)4.2、十进制转二进制()4.3、十六进制转十进制()4.4、十进制转十六进制()4.5、

2021-03-12 22:26:08 798

原创 注解与依赖注入框架(ButterKnife 和 Dagger2)

文章目录一、注解分类1.1、标准注解1.2、元注解二、定义注解2.1、基本定义2.2、定义成员变量2.3、定义运行时注解2.4、定义编译时注解2.5、定义源码级注解三、注解处理器一、注解分类1.1、标准注解@Override:对覆盖超类中的方法进行标记,如果被标记的方法并没有实际覆盖超类中的方法,则编译器会发出错误警告。@Deprecated:对不鼓励使用或者已过时的方法添加注解,当编程人员使用这些方法时,将会在编译时显示提示信息。@SuppressWarnings:选择性的取消特定代码段中的警

2021-01-27 15:31:08 271 1

原创 Android 函数响应式编程(RxJava3)

文章目录一、RxJava 基本用法1.1、RxJava3 基本使用一、RxJava 基本用法说到异步操作,我们会想到 Android 的 AsyncTask 和 Handler。但是随着请求的数量越来越多,代码逻辑将会变得越来越复杂,而 RxJava 却能保持清晰的逻辑。RxJava 的原理就是创建一个 Observable 对象来干活,然后使用各种操作符建立起来的链式操作,就如同流水线一样,把想要处理的数据一步步加工成成品,再发射给 Subscriber 处理。RxJava 的异步操作时通过扩展的观

2021-01-18 17:04:09 580

原创 Android 设计模式

文章目录一、设计模式六大原则1、单一职责原则2、开放封闭原则3、里氏替换原则4、依赖倒置原则5、迪米特原则6、接口隔离原则二、设计模式分类一、设计模式六大原则1、单一职责原则定义:就一个类而言,应该仅有一个引起它变化的原因。不要让一个类承担过多的职责。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。2、开放封闭原则定义:类、模块、函数等应该是可以拓展的,但是不可修改。设计程序时,面对需求的改变要尽可能地保证相对稳定,尽量通过扩展的

2020-12-28 11:48:58 226 1

原创 Android 网络编程和网络框架(6.4、6.6 、7.4 未测试)

文章目录TCP 的三次握手与四次挥手TCP 的三次握手与四次挥手

2020-12-22 09:39:49 366

原创 Android 多线程编程全面篇

文章目录一、线程的状态二、创建线程2.1、继承 Thread 类,重写 run() 方法2.2、实现 Runnable 接口,并实现该接口的 run() 方法2.3、实现 Callable 接口,重写 call() 方法一、线程的状态New:新创建状态。线程被创建,还没有调用 start 方法,在线程运行之前还有一些基础工作要做。Runnable:可运行状态。一旦调用 start 方法,线程就处于 Runnable 状态。一个可运行的线程可能正在运行也可能没有运行,这取决于操作系统给线程提供运行的时

2020-12-07 15:54:13 247

原创 View 体系和自定义 View

文章目录View 和 ViewGroup坐标系View 获得自身的宽高View 自身的坐标MotionEvent 提供的方法View 和 ViewGroupView 是所有控件的基类,ViewGroup 继承自 View。ViewGroup 是 View 的组合,可以包含多个 View 以及 ViewGroup,其包含的 ViewGroup 又可以包含 View 和 ViewGroup。坐标系View 获得自身的宽高手动计算 int width = getRight() - get

2020-11-10 11:27:50 156

原创 Android 动画(属性动画基本使用)

文章目录帧动画View 动画(补间动画)属性动画(Android 3.0)帧动画将一张张单独的图片连贯的进行播放View 动画(补间动画)alpha(淡入淡出)translate(位移)scale(缩放大小)rotate(旋转)属性动画(Android 3.0)...

2020-10-27 14:28:29 243 1

原创 Activity 生命周期和启动模式

文章目录过程图正常情况下的生命周期异常情况下的生命周期过程图正常情况下的生命周期指在用户参与的情况下,Activity 所经过的生命周期的改变。Activity 的切换过程,有以下几种情况。针对一个特定的 Activity,第一次启动onCreate —> onStart —> onResume打开新的 Activity 或者切换到桌面时onPause —> onStop特殊情况:如果新 Activity 采用了透明主题,那么当前 Activity 不会回调 onS

2020-10-22 23:38:30 231

原创 3 种 Notification

文章目录版本适配Android O 8.0 通知新特性普通 Notification折叠式 Notification悬挂式 Notification版本适配Android O 8.0 通知新特性参考:Android O(8.0) Notification解决方案android 8.0通知新增了NotificationChannel(通知渠道),用来帮助管理用户通知。Android Studio新版会默认使用新版本的SDK编译项目,如果App的targetSDKVersion >=26或者And

2020-10-20 09:57:17 177

原创 Android 动态申请权限框架

文章目录导包需要配置例如请求位置权限导包该库需要 RxJava implementation 'com.github.tbruyelle:rxpermissions:0.12' implementation "io.reactivex.rxjava3:rxjava:3.0.4"需要配置 compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility

2020-10-14 13:45:13 820

原创 卡片 CardView

文章目录简介导包属性简介Android 5.0 版本中新增。继承自 FrameLayout 类。可以设置圆角和阴影,使得控件具有立体性。可以包含其他的布局容器和控件。导包implementation 'androidx.cardview:cardview:1.0.0'属性xml 属性app:cardBackgroundColor:设置背景色app:cardCornerRadius:设置圆角app:cardElevation:设置 Z 轴阴影app:cardMa

2020-10-12 17:05:40 244 2

原创 RecyclerView 的使用(androidx)

文章目录导包基本使用设置分割线自定义点击事件实现 GridView实现瀑布流导包 implementation 'androidx.recyclerview:recyclerview:1.1.0'基本使用首先是两个布局文件Activity 的布局文件<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

2020-10-11 22:11:05 10308 1

原创 Room 没那么复杂

Room 使用

2020-09-10 10:31:51 193

原创 win10 系统下 git 修改默认目录

我的 git 没有桌面快捷方式,常用的软件习惯于在任务栏打开。每次打开 git 都要 cd 再 cd 又 cd,就很烦。现在我们来修改 git 的默认目录。第一步:将 Git Brash 直接拖到桌面,就创建了一个桌面快捷方式。第二步:右键快捷方式——>属性。第三步:红框就是我们需要修改的两个地方,将第一个红框中的 --cd-to-home 删掉,将第二个红框中的内容修改成你想要的目录,点击确定关闭窗口,如下图所示。第四步:这时候通过桌面快捷打开 git,会发现默认目录已经被修改了。

2020-09-04 21:37:47 936

原创 最好用的网络库:Retrofit(Kotlin)

注:第一行代码(3版)文章目录Retrofit 的基本用法Retrofit 同样是一款有 Square 公司开发的网络库,但是它和 OkHttp 的定位完全不同。OkHttp 侧重的是底层通信的实现,而 Retrofit 侧重的是上层接口的封装。事实上,Retrofit 就是 Square 公司在 OkHttp 的基础上进一步开发出来的应用层网络通信库,使得我们可以用更加面向对象的思维进行网络操作。项目主页地址。Retrofit 的基本用法Retrofit 的设计基于以下几个事实。同一款应用程序中

2020-08-24 15:50:58 1086

原创 Android 9.0 及以上网络请求失败

从 Android 9.0 系统开始,Android 默认只允许使用 HTTPS 类型的网络请求,HTTP 类型的网络请求因为有安全隐患默认不再被支持。为了能让程序使用 HTTP,我们还要进行如下配置。在 Android 项目的 res 目录下新建一个 xml 目录,在 xml 目录中新建一个 network_config.xml 文件,内容如下:<?xml version="1.0" encoding="utf-8"?><network-security-config>

2020-08-19 09:57:51 269

原创 Android沉浸式状态栏,一行代码搞定

参考博客:StatusBarUtil 状态栏工具类(实现沉浸式状态栏/变色状态栏)用法代码1.Java代码public class StatusBarUtil { private static final int TAG_KEY_HAVE_SET_OFFSET = -123; private static final int FAKE_STATUS_BAR_VIEW_ID ...

2020-04-10 14:59:53 713

原创 Android屏幕适配

为什么要屏幕适配?由于不同手机像素密度(dpi)不同,不做屏幕适配会导致同样的数据长度,在不同的手机上显示的长度不一样。适配方案:Android SDK会自动屏幕尺寸选择对应的资源文件进行渲染,如SDK检测到你手机dpi是160的话会优先到mdpi文件夹下找对应的图片资源,注意只是优先,假设你手机dpi是160,但是你只在xhpdi文件夹下有对应的图片资源文件,程序一样可以正常运行。所以理论...

2019-12-18 16:13:50 199

原创 Android启动页实现

Android APP应用启动页白屏(StartingWindow)优化

2019-12-18 09:51:57 649

Fragment间传值Demo

Fragment间传值的三种方式:通过标签传值,回调函数传值,第三方开源框架传值

2016-10-22

经典俄罗斯方块

经典俄罗斯方块,画面不错,配有背景音乐,代码容易看懂,优化过后,亲测通过,utf-8格式,直接运行!

2016-01-02

空空如也

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

TA关注的人

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