- 博客(45)
- 收藏
- 关注
原创 简单了解一下SurfaceView
最近好几次面试被问到SurfaceView的特点了,都没回答出来。SurfaceView和TextureView也是Compose这样的声明式ui唯二实现不了控件;因为他们就不是View,而是Android提供的和Surface相关的显示系统。特此简单了解一下。
2024-09-22 13:53:18
489
原创 碎碎念之懒加载和预加载
* 以fragment和viewPager举例,当我们左右滑动时,一定有预加载,左右页面进行缓存或销毁,保存在arrayList里面。可设置值,最少加载1。* viewPager2提供了懒加载;此时预加载的是空白页面,滑动到了要到达的页面才加载数据更新ui。
2024-09-01 22:04:58
523
原创 碎碎念之Android中CPU架构arm-v8a、arm-v7a、x86
其实不是第一次见到CPU架构了,早在我最初接触Android的时候;就发现一些开源的AI模型部署Android的so库会提供arm-v8以及arm-v7架构两种。当时没太了解,自己虽然也尝试了并生成自己模型的so库但是也没过多关注。后来,在参与实际工作中发现发包时也会针对不同厂商的cpu架构发不同的包。
2024-08-31 02:23:57
1047
原创 《Kotlin核心编程》2021版复习记录
准备先回顾一下kotlin。每天看到哪里就会写到哪里,随缘记录一下我觉得比较常用的思想和知识点。暂时粗略过一遍,方面查看。后续有时间再仔细看看;争取不和学flutter一样暂时烂尾hh。
2024-08-11 22:38:35
1028
原创 Android中原生自定义View复习(一)
自定义View可由以下四个方面涵盖。绘图:画布Canvas 画笔Paint交互:触摸TouchEvent 动画Animation性能:onDraw 考虑主线程安全 SurfaceView副线程绘图,不会阻塞主线程封装:尺寸measure 属性attributes</
2024-07-28 16:51:21
439
原创 Compose简单实现原生TabLayout和ViewPager的效果
主要是两个控件,TabRow和HorizontalPager。当然如果是垂直滑动的话,用VerticalPager。
2024-07-24 22:57:35
452
原创 Android中Service学习记录
Service组件一般用来执行长期在后台的任务,如播放音乐、直播、下载文件等。Service有两种使用模式。Service可以在后台,也可以到前台。Service在主线程,不能执行耗时操作。
2024-07-24 19:58:43
1856
1
原创 Android中Intent和IntentFilter
intent是意图,intentFilter是意图过滤器。使用intent,可以启动activity、service、broadcastReceiver等。
2024-07-22 01:09:27
678
原创 Android屏幕适配度量单位px、ppi、dpi、dp、sp等
我以iphone13举例,说来挺有意思,我们这做Android开发的只有一位平常用的是Android手机。可以看到下面有6.1英寸、分辨率、ppi等。接下来我们将一一介绍。
2024-07-22 01:08:52
813
原创 Android中OkHttp3中超时时间概述
可以看到,使用还是很简单的。主要相关的有这五个参数,其中我们常用到是就是connectTimeout、readTimeout和writeTimeout。再看上图,可以看到默认下connectTimeout、readTimeout和writeTimeout都是10s,而其他两个默认是0。
2024-07-17 23:50:21
1444
原创 Android中Context概述
Context,上下文,可以获取应用的资源和信息。它提供了关于应用环境全局信息的接口。有两个子类,其中ContextImpl是具体实现类,而ContextWrapper是包装类。Application、Activity、Service直接或间接继承ContextWrapper,其中Activity有主题,继承的是ContextThemeWrapper。意思差不多是虽然Activity继承Context,但是更像代理了Context,而Context拥有权力,Activity通过权力从而可以做很多事情。
2024-07-17 23:04:13
327
原创 Android中ContentProvider学习记录
在Android中,不管是sp键值对存储还是sqlite数据库存储,一般都是应用内的数据存储。而如果需要让数据跨应用共享,就需要使用到我们的内容提供者ContentProvider,比如系统的通讯录。它的底层是binder。简单来说,就是IPC通信,作为中介,可以选择哪一部分数据进行共享,保证数据的安全性。但是注意真正的存储还是文件存储、sp、sqlite等。比如外界看到的是一个URI,这个URI映射到数据库的一个部分。内容提供者 提供数据 ContentProvider。
2024-07-16 21:34:51
290
原创 Android中元数据meta-data的使用
meta-data(元数据),主要用来定义一些组件相关的配置值。与String.xml只能暴露给内部不同,AndroidManifests.xml下的meta-data是对外界开放的,是向系统注册的信息,系统及外界是可以通过相关API获取到meta-data的信息。可以在activity、service、receiver、application中进行注册。so用途显而易见,经常可以在开发包中看见。
2024-07-16 09:50:41
756
原创 Kotlin中let、apply、also、with、run的使用与区别
let()函数是一个扩展对象函数,一般用于对象的判空处理,函数块里面it代指该对象,最后一行或者return为返回的结果。preson?.let{return 1函数体里面写的时候是it和this提示就可以区分,主要还是以下两点两个a开头的返回的是对象本身,其余的返回是return或者最后一行结果(lambda 表达式的结果)。with是内联函数,其他的是扩展函数。
2024-07-15 10:17:25
479
原创 Android中Retrofit的学习和使用记录
是Android一个restful风格的网络请求框架,本质上还是OkHttp进行请求,Retrofit负责对接口的封装。Retrofit 接口层封装请求参数、Header、Url 等信息。
2024-07-15 10:16:51
1227
原创 Android OkHttp3中HttpLoggingInterceptor使用
HttpLoggingInterceptor是OkHttp3提供的拦截器,用来记录HTTP请求和响应的详细信息。
2024-07-14 17:15:43
1563
原创 Android中OkHttp3的使用
是目前Android使用最广泛的网络框架。上图很清晰了,这里只做一个简单的介绍。1.创建一个OkHttpClient对象,2.创建request和requestBody(如果有)3.利用request对象创建call对象。选择是同步还是异步请求。4.代码上在上一步就可以得到响应结果,工作流程是进入分发器完成任务的调配,分发器维护请求队列和线程池。5.进入拦截器6.服务端返回响应结果。
2024-07-14 02:45:56
577
1
原创 Kotlin中Unit、Any和Nothing
Unit是一个特殊的类型,它表示“没有意义的值”的单元类型。在Kotlin中,当你不需要函数返回任何具体值时,可以使用Unit类型。因为对这个Nothing很感兴趣所以写了这篇博客,想和这个函数一样,如果休息时间有人call我就抛异常。一般就用来抛异常,还有一种是循环和资源复用?表示一个函数或方法永远不会正常返回。利用Nothing是所有类的子类型。和Java 中 void一样。类似Java中Object。Java里面没有这个概念。
2024-07-11 22:45:45
432
原创 Jetpack Compose学习记录(一)
学了一段时间的Compose,不得不说声明式UI比原生的开发效率快很多,而且Compose也是Google现在主推的开发模式,可以动态化地更改ui,相比于databinding对数据和布局进行绑定。Compose更近一步,界面上任一控件也可以动态地进行改变。在某些场景下,有些需要写多套布局,而Compose只需要写一套。缺点个人认为也显而易见,虽然理论上可以实现几乎所有和原生一样的功能,但是比如RecyclerView这样的控件,Compose中的LazyColumn还是没有那么丝滑;
2024-07-11 22:29:41
867
原创 Android中RecyclerView使用详解(一)
RecyclerView 是 Android 开发中一个非常强大且灵活的组件,用于在有限的窗口中展示大量数据集。它提供了一种比传统的 ListView 更高效的方式来滚动大量数据项。RecyclerView 不仅可以像 ListView 那样垂直滚动,还可以水平滚动,甚至支持更复杂的布局,如网格布局(Grid Layout)、瀑布流布局(Staggered Grid Layout)。
2024-07-11 00:48:06
2792
原创 Markdown文档基础语法
#一级标题##二级标题反斜杆\为转义符加粗的文字** 加粗的文字 **斜体* 斜体*删除的文字~~ 删除的文字 ~~都可以套用:比如加粗斜体:加粗的斜体换行一般为空两格然后回车键,我更习惯用br标签前面一个* 一个空格1.加上一个空格二级列表四个空格```kotlin```> 加上空格[百度](url)百度我是脚注1图片的话要链接一般设置成网络图片或本地图片。在超链接的前面加个!|姓名|年龄||-|-|
2024-07-07 12:27:24
243
原创 Andoird中Sqlite数据库的使用
是一种轻量数据库,一般用于手机或者嵌入式设备中。SQL:结构化查询语言。在Android中我们一般继承于SQLiteOpenHelper进行SQLite的一个实现。
2024-07-06 21:51:08
434
原创 Android持久化存储之SharedPreferences
之前ViewModel,是在内存做一个缓存,一般情况下当应用退出就会丢失。而持久化存储,也就是存储到磁盘里面,一般卸载应用清除数据会丢失。默认在data/data/包名/shared_prefs下,本质是xml里面的键值对。apply()方法是异步的,不会阻塞主线程,而commit()方法是同步的,会阻塞主线程直到数据被写入。4、MODE_WORLD_WRITEABLE:可被其他应用写入。2、MODE_PRIVATE:私有方式存储,其他应用无法访问。下面的代码,sp的传入需要Context。
2024-07-03 22:51:20
442
原创 Android中ViewModel、LiveData以及DataBinding的使用
ViewModel、LiveData以及DataBinding都是Jetpack中的组件,准备做一个三者结合的计数器小应用,分别为+1,+2。由于ViewModel的特性我们切换横竖屏的时候数据仍然不会丢失。
2024-07-03 00:17:03
787
原创 Android横竖屏
默认有竖屏,也就是protrait布局文件,我们点击下图所示的按钮创建横屏landscape布局文件。可以在xml中配置configChanges, 表示在改变屏幕方向或大小的时候状态不变。当横竖屏切换的时候Activity走了Destroy,如果我们想保存状态,可以通过重写。我们移动设备一般可以切换横竖屏,可以编写不同的布局文件显示不同的布局。还可以设置屏幕的方向,有些车机会限定横屏或者竖屏。有些应用也会,比如金铲铲,王者荣耀。比如给横竖屏的按钮换个颜色。
2024-06-30 23:16:20
474
原创 Android本地化
简单学习一下Android本地化,也就是在手机系统切换语言时显示不同的文字,比如Hello变成你好。在strings.xml里面配置字段,并且点击右上角进入配置。xml中一个textview,使用定义的字符串资源。点击图标配置选取中文下对应的含义。
2024-06-30 14:05:49
356
原创 Android MVVM架构学习
ViewModel:作用个人感觉和MVP的Presenter层一样。不过ViewModel是不持有view引用的,当VIewModel的数据更新时,view层会相应更新ui,一般与jetpack相配合。View: 界面层,对应于Activity,XML,负责数据显示以及用户交互。相比MVP,这里面的view视图数据一般是在xml中使用DataBinding进来双向绑定数据的。Model:数据层,包含数据实体和对数据实体的操作。DataBinding可以看我的上一篇博客链接。应该写的还是比较简单清晰的。
2024-06-29 22:18:11
374
原创 Android安卓里ViewBinding和DataBinding的使用
相信大家在接触Android开发的时候都会在Activity中使用findViewById来将xml中的组件,如Button、TextView等进行绑定。ViewBinding帮我们生成了一个ActivityMainBinding类,我们通过ActivityMainBinding.inflate()来加载布局,再设置bingding的根布局为内容视图。在ViewBinding的基础上除了可以绑定控件id,还进行了数据绑定。在build.gradle或kts文件进行配置。xml配置进行事件绑定。
2024-06-29 19:37:53
753
原创 Android安卓MVP模式
最近实习写mvvm比较多,但是好多老项目都是mvp,准备接下来写一个mvp模式的demo练手,在此之前做一个复习。mvp在mvc模式的基础上发展而来,原来的Controller是Activity,但是还view,高度耦合。具体可以看我的上一篇博客。
2024-06-29 00:58:18
1110
原创 Android SDK开发学习
SDK全称 Software Development Kit,广义上的SDK 是为特定的软件包、软件框架、硬件平台、操作系统等建立应用程序时所使用的开发工具的集合;1)数据化存储相关,sp、mmkv、sqlite等最好都不要明文存储==如地图SDK、人脸识别或OCR的SDK、支付SDK、音视频SDK等等。2)网络安全配置,networkSecurityConfig。注入注入(APP)应用上下文,用于获取相关资源及服务。其实就是jar包、so库、aar包,可以在应用获取也可以利用。1)需要考虑调用简单。
2024-06-23 12:08:07
321
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人