Android
文章平均质量分 65
分享一些学习Android的小经验和小项目
FranzLiszt1847
大道如青天,我独不得出
展开
-
Android Compose——ScrollableTabRow和LazyColumn同步滑动
我们需要一种方法来反映一个状态与另一个状态的状态,这意味着无论当前所选索引的值是多少,它都应该反映列表状态中的正确位置,反之亦然,无论列表状态的当前位置是什么,它都反映正确的索引。原创 2024-01-06 17:59:35 · 1027 阅读 · 0 评论 -
解决在Android Compose中点击空白处收回软键盘
在最外层的组件中通过监听点击事件,执行键盘的关闭操作。监听单击点击事件,并清除当前聚焦组件的焦点。完成对焦点请求和焦点变化的监听处理。对象,对软键盘进行显示与关闭操作。原创 2023-12-30 19:06:51 · 674 阅读 · 0 评论 -
用代码诠释SOLID六大原则
SOLID六大原则六大原则单一职责原则定义代码解释未遵守单一原则遵守单一原则开闭原则定义代码解释里氏替换原则定义代码解释依赖倒置原则定义代码解释未遵守依赖导致原则遵守依赖导致原则接口隔离原则定义代码解释未遵守接口隔离原则遵守接口隔离原则迪米特原则定义代码解释六大原则单一职责原则定义定义:确保单例类只有一个实例,并且这个单例类提供一个函数接口让其他类获取到这个唯一的实例。解释:一个类只负责一个职责,不要存在多于一个导致类变更的原因。代码解释比如一个类记录一些食品的名称,但同时又记录食品的做法原创 2021-10-27 21:32:59 · 613 阅读 · 7 评论 -
浅谈单例模式(Singleton)
单例模式(Singleton)单例模式的介绍优点缺点SynchronizedSynchronized示例Synchronized与非SynchronizedSingleton第一个示例第二个示例第三个示例第四个示例第五个示例单例模式的介绍单例对象(Singleton)是一种常用的设计模式。在实际使用中,单例对象能保证在一个JVM中,该对象只存在一个实例存在。优点1、减少系统开销,提高系统性能2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力3、避免对共享资源的多重占用缺点1、不适原创 2021-10-29 16:12:27 · 785 阅读 · 8 评论 -
Android Compose——一个简单的Bilibili APP
此Demo采用Android Compose声明式UI编写而成,主体采用MVVM设计框架,Demo涉及到的主要技术包括:Flow、Coroutines、Retrofit、Okhttp、Hilt以及适配了深色模式等;主要数据来源于Bilibili API。原创 2023-03-05 15:58:58 · 3886 阅读 · 3 评论 -
Android Compose——Paging3的使用以及利用泛型进行封装
本Demo采用Hilt+Retrofit+Paging3完成,主要为了演示paging3分页功能的使用原创 2023-01-13 19:01:10 · 1581 阅读 · 7 评论 -
Android Compose——一个简单的新闻APP
使用Compose完成的一个简单Demo,改自Google官方用例原创 2023-01-13 17:40:15 · 1680 阅读 · 2 评论 -
Android Jetpack Compose——一个简单的笔记APP
此项目功能较为简单,基本就是使用Room数据库实现CRUD,但是此项目实现了一个干净的架构,项目使用MVVM架构进行设计,每一个模块的职责划分清晰,功能明确,没有冗余的代码。其中涉及了Hilt依赖注入,对于数据库的的操作,使用接口实现类进行获取,然后将实现类的CRUD操作封装在一个数据类中,最后通过Hilt自动注入依赖,供外部调用。此项目原创来源于YouTube的一位创作者[Philipp Lackner]原创 2023-01-05 15:44:59 · 1193 阅读 · 3 评论 -
Android 浅析Hilt依赖注入
首先,某个类的成员变量称为依赖,如若此变量想要实例化引用其类的方法,可以通过构造函数传参或者通过某个方法获取对象,此等通过外部方法获取对象实例的称为依赖注入;而依赖注入又可以简单分为`手动注入`和`自动注入`两种方式;`Hilt`就是基于Dagger进行`场景化优化`的一个依赖注入库,Hilt是Google专门为Android平台打造的一个依赖注入库,在使用上极大程度进行啦简化(与dagger相比)原创 2023-01-04 22:07:18 · 929 阅读 · 2 评论 -
Android Jetpack Compose——一个简单的微信界面
此Demo用于熟悉Jetpack Compose,故仿造微信写了部分界面原创 2023-01-01 00:03:47 · 3573 阅读 · 8 评论 -
Android Jetpack Compose——一个简单的聊天界面
目前声明式UI已经成为前端开发趋势,除了一开始的跨端开发React,Flutter等以及Web支持外,后续Android和IOS平台也相继推出声明式开发,Android通过Jetpack Compose配合Kotlin强大的语言特性进行开发,彻底摆脱啦命令式使用XML文件进行UI布局原创 2022-11-29 15:31:31 · 1883 阅读 · 2 评论 -
Android——Glide的多样使用
我们进入一个Activity时,触发网络请求,Glide开始请求数据,当Glide未完成数据返回时,我们退出此Activity,即销毁,会触发异常,因为Glide仍在运行,当它的数据返回时,发现Activity已经被销毁啦,就会产生报错异常,所以在必要的Glide代码中加一个生命周期判断。当网络请求过多或者业务繁忙时,Glide返回可能会有一定延迟,此空窗期就会不显示任何东西,通过。可添加一张占位符,在数据未返回之前,显示一张默认图片。在开发需求中,往往会需要将某些图片进行圆角处理,通过。原创 2022-10-28 13:40:35 · 1140 阅读 · 2 评论 -
Android——一个简单的音乐APP(二)
一个简单的音乐APP(第一篇)音乐下载音乐离线播放mLog视频播放个人信息音乐信息删除本地音乐基于第一版也稍稍有些变动,废弃了二维码登录功能(依旧能登录,但有少部分功能无法联动使用),部分代码结构有变动。原创 2022-10-20 23:13:00 · 1935 阅读 · 9 评论 -
Android——一个简单的音乐APP
Github上有位牛人将网易云音乐的接口进行部署和总结,然后我将它的仓库部署到我的云服务器上,因为他的是需要翻墙的,此项目所有接口信息均与网易云音乐关联。由于此项目用于熟悉kotlin语言,所以绝大部分代码均使用kotlin编写;目前EasyMusic为第一版,功能上还有欠缺,但主流程已经基本完成;原创 2022-09-23 19:28:47 · 4996 阅读 · 17 评论 -
Android——一个简单的天气APP
此天气数据源采用[心知天气API(试用版)](https://www.seniverse.com/),免费版获取数据有限,只能获取普通的温度、湿度等,例如压力、云量、可见度等均获取不到,试用版相当于正式版,可以获取大部分数据,试用日期是14天。首页不同城市天气页面之间的滑动采用的是`ViewPager`,编辑界面的搜索栏采用的是`SearchView+ListView`,其中城市数据源是统计到一个xml文件中;通过点击搜索匹配项,插入至SQLite数据库中,然后刷新当前天气子项,然后通过`EventBu原创 2022-09-02 23:27:02 · 6394 阅读 · 9 评论 -
Android——m3u8视频文件下载
下载器采用开源框架Ariagithub中文文档service在Appliaction中启动,即启动app即启动service并且service只启动一次,后序通过单例binder去调用服务。原创 2022-07-27 19:03:14 · 2531 阅读 · 2 评论 -
Android——SRT字幕文件的下载、解压、转换、显示
需要在视频播放时,同步显示字幕,市面上主流的字幕文件一般为SRT文件,一般流程为从服务器请求一个url地址,此为zip字幕压缩文件,一般需要请求url,下载zip文件,解析zip文件得到字幕srt文件,最后进行显示。...原创 2022-07-27 16:34:53 · 4016 阅读 · 2 评论 -
Android——解决BottomNavigationView+Fragment重建与重叠问题
在BottomNavigationView+多个Fragment框架下,进行Fragment切换时,会导致Fragment重建,也会出现同级Fragment未hide,导致重叠。原创 2022-07-27 15:42:48 · 2269 阅读 · 2 评论 -
Android——Fragment懒加载
大部分APP框架由一个单例MainActivity和多个Fragment组成;在实际开发中常使用BottomNavigationView+Fragment,而又在Fragment中使用ViewPager+Fragment,多层嵌套Fragment,进入一个界面之后,会牵连多个同级的Fragment同时启动,若都存在网络请求,则负担很大,所有一般当用户滑到某个界面时,此Fragment开始加载数据,其他Fragment则不受印象。...原创 2022-07-27 15:19:45 · 900 阅读 · 2 评论 -
Android|完美适配Activity和Fragment唤起和收起系统软键盘
在Fragment中存在EditText,然后点击外部区域,或者点击其他非此EditText的控件时,收起系统软键盘原创 2022-07-07 09:59:03 · 1264 阅读 · 3 评论 -
Android——浅析OKHttp+Gson
下面为从某个服务器中拉去的数据,其中data为数据核心部分,minfo为一个数组,其中包含所需要渲染的数据,filter为一个数据实体,包含筛选条件信息。创建对应格式化实体类从服务器端拉去的Json字符串,需要创建对应的实体类进行接收,本文介绍一种插件,用于Android端格式化建立实体类点击设置->plugins->搜索并安装插件GsonFormatPlus插件第一步,在需要创建实体类的地方右击空白处,在弹出的显示框中选择第二步,然后在选择刚才安装的插件GsonFormatPlus第三步,最后将原创 2022-06-18 19:02:56 · 1308 阅读 · 2 评论 -
Android——一个简单的记账本APP
Android——一个简单的记账本APP原创 2022-06-05 10:56:41 · 16670 阅读 · 52 评论 -
「Android」浅析viewBinding和DataBinding
浅析viewBinding和DataBindingviewBinding优点配置使用源码解析DataBinding配置创建实体类创建布局创建viewModeldataBinding绑定viewBinding优点当一个页面布局出现多个控件时,使用findViewById去进行控件绑定,过于冗长,且存在NULL指针异常风险。viewBinding直接创建对视图的引用,不存在因控件ID不存在而引发的NULL指针异常。并且在绑定类中对控件添加@NonNull注解findViewByIdviewBi原创 2022-05-27 15:35:55 · 2215 阅读 · 12 评论 -
Android——一个简单的APP模版
Android——一个简单模版APP述效果视频技术栈地图、定位、导航地图定位导航偏好设置当前导航信息预定车位和订单结算创建订单计时服务传导后台服务计时订单结算个人信息查询更新城市选择历史订单登录、注册、忘记密码验证码获取以及判定读秒正则表达式判定手机号码格式注册忘记密码登录尾言述如果你恰好在学习Android,并且刚看完网上的一些入门视频以及一些相关书籍,需要一个实战项目来巩固自己所学,并提升自我开发能力,那么此文也许你可以浅看一下。此外重点在于叙述,并附上少部分关键代码,不会面面俱到介绍每一个功能代码原创 2022-05-02 00:19:53 · 4178 阅读 · 22 评论 -
「Android」开发小技巧合集
「Android」开发小技巧合集沉浸式标题栏修改主题样式颜色隐藏标题栏进行自主设置状态栏设置代码圆型图片设置APP图标修改APP名称创建不同分辨率图片文件夹更改项目名称Button字母大小写TextView 字体样式EditText 输入时调用数字键盘CheckBox变为圆形自定义Switch样式原生样式与自定义样式对比设计选择器滑块和轨道样式导入不同gradle版本的项目日期相关处理获取系统时间将毫秒转为时间字符串将日期字符串毫秒复用布局文件GenyMotion模拟器沉浸式标题栏在我们日常开发中,常常原创 2022-04-30 13:00:40 · 3128 阅读 · 13 评论 -
【Android】登录实战
【Android】登录实战效果视频ViewPager+TabLayout+PagerAdapter简述创建滑动适配器添加视图与标题视图与标题双向绑定TabLayout样式设置选择器布局设置注册效果图功能简述手机号码格式判定正则表达式判定手机格式手机号码长度判定是否已被注册验证码获取验证码验证码读秒提交验证码验证码验证注册成功忘记密码效果图功能简述按钮背景变化设置样式效果样式代码样式控制更新密码登录效果图功能简述登录判定尾言效果视频原创 2022-04-23 23:06:05 · 3266 阅读 · 20 评论 -
【Android】线上自助点餐系统
【Android】线上自助点餐系统效果视频商品选购界面效果图商品数据商品标题文件商品详细文件信息商品图片添加商品数据解析左侧标题数据解析右侧商品数据左侧标题与右侧商品双向绑定加减按钮监听所选商品存入数据库商品复选效果图取出商品数据商品清空商品增删支付界面效果图密码匹配支付成功效果图SharedPreferences历史数据图表化效果图数据初始化X轴Y轴尾言效果视频 【Android】线上自助点餐系统原创 2022-04-13 15:24:40 · 6393 阅读 · 28 评论 -
【Android】侧滑按钮
【Android】侧滑按钮效果视频 导入闭包将以下语句倒入目录下build.gradle文件内 implementation 'com.github.WangcWj:WeSwipe:1.0.2' implementation 'cn.wang.we:network:1.0.0'将以下语句倒入项目build.gradle文件内maven { url 'https://jit原创 2022-04-07 14:02:09 · 2318 阅读 · 13 评论 -
【Android】自定义Toast样式
自定义Toast样式原生Toast样式自定义Toast样式创建样式所谓自定义一个Toast就是建立一个布局文件,然后使用一个view容器承载,然后显示出来。Toast毕竟只是起到一个提示作用,不必要放太多控件去填充,反而会显得内容很拥挤,一般一个标题,一张图片,一段简短文字即可。<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_pa原创 2022-04-05 13:41:57 · 6473 阅读 · 12 评论 -
Android——集地图、定位、导航于一体
集地图、定位、导航于一体效果视频电子地图地图修改定位图标定位导航尾言效果视频 电子地图地图电子地图修改定位图标MyLocationConfiguration.LocationMode mCurrentMode = MyLocationConfiguration.LocationMode.NORMAL; BitmapDescriptor mCurrentMarker = Bi原创 2022-03-28 10:46:47 · 3011 阅读 · 7 评论 -
Android——一个神奇的通讯录APP
一个神奇的通讯录APP效果视频联系人总览效果图SQLite数据库建表CRUD增删改查滚动条联系人分组数据库数据与滚动条绑定添加联系人效果图添加紧急电话联系人数据源添加新增编辑与查看联系人查看效果图大图姓氏数据收发发收编辑及删除删除拨号申请权限隐式Intent效果视频联系人总览效果图SQLite数据库建表使用常量定义需要使用的行,方便后期更改;简洁,方便public class Helper extends SQLiteOpenHelper { /**数据库名称*/ publ原创 2022-03-17 20:46:47 · 5543 阅读 · 13 评论 -
Android自定义滚动条——城市列表
Android自定义滚动条——城市列表效果视频绘制滚动条区别选中与未选择文字绘制等高间距滑动事件监听解析承载城市数据的XML文件下载XML文件解析文件适配器建立适配器类适配器子项视图效果图代码适配器绑定单向绑定效果视频绘制滚动条区别选中与未选择文字private void init() { mLetterList = Arrays.asList(INDEX_STRING); mTextNormalColor = Color.parseColor("#000000");原创 2022-03-06 11:33:44 · 3107 阅读 · 5 评论 -
Android——一个神奇的计算器APP
一个神奇的计算器APP中缀运算效果视频自定义圆形TextView效果图建立attr文件绘制圆形字符拼接清空栈内元素运算执行手势监听入栈&&出栈运算结果小数位判断运算代码任意进制转换效果视频进制转换结果逆置结果返回中缀运算 中缀运算定义了两个栈,数字栈和符号栈;分别存储用户输入的数字(例如:1,2,3)和输入的符号(例如:+,-); &n原创 2022-03-02 20:28:48 · 21295 阅读 · 40 评论 -
Android——实现APP内算路导航
百度API算路导航效果视频跳转至百度地图进行算路导航APP内进行算路导航功能实现跳转方式实现权限声明判断手机内是否安装百度地图实现跳转至百度地图非跳转方式实现UI设计背景圆点布局代码功能实现效果视频跳转至百度地图进行算路导航APP内进行算路导航功能实现跳转方式实现功能描述:通过初始化百度地图API,获取当前位置的经纬度做为起点,所输入的地址做为目的地,然后封装成Uri格式,使用隐式Intent调用百度地图APP,最终实现算路导航。权限声明声明导航所需要具备的权限,例如:网路权限、位置权限原创 2022-02-19 15:00:29 · 2787 阅读 · 24 评论 -
Android——实现人脸支付
基于Android实现人脸支付效果展示人脸支付效果视频密码框输入支付效果视频功能实现人脸支付API初始化人脸特征提取返回支付结果密码框输入支付自定义密码输入框控件初始化控件密码匹配尾言效果展示人脸支付效果视频密码框输入支付效果视频因为密码支付时会调起系统安全键盘,开启自动保护功能,防止泄露,会导致输入密码时录屏黑屏,故使用另一台手机拍摄。功能实现人脸支付人脸识别API初始化 ftEngine = new FaceEngine(); ftInitCode =原创 2022-02-17 21:13:57 · 2452 阅读 · 11 评论 -
Android——一个简单的闹钟APP
一个简单的闹钟效果视频闹钟子项子项布局效果图闹钟适配器类闹钟初始数据侧滑删除闹钟子项添加依赖布局设置实现侧滑回调方法绑定RecyclerView删除子项新增闹钟子项序列化实体类定义实体类,并实现序列化取出序列化实体类对象TimePicker自定义TimePicker文字大小及颜色获取时间数据返回时间数据存储数据取出数据子项添加自定义Switch样式Switch效果如图创建`thumb`和`track`样式thumb样式选中状态默认状态track样式选中状态默认状态闹钟提醒服务Service开始服务暂停服务单原创 2021-11-18 22:03:22 · 38732 阅读 · 77 评论 -
Android ——SharedPreferences的简单封装
存储时将其转化为json字符串保存到缓存文件中,取时,解析json字符串即可,使用起来就跟存储字符串无异。参数三默认值,例如此key没有相对应的缓存value,则取默认值作为value。参数一Context上下文。参数一Context上下文。...原创 2021-11-18 09:50:16 · 2447 阅读 · 5 评论 -
Android美食大赏——做一名合格的吃货
美食大转盘效果视频前言美食大转盘初始化SurfaceView测量绘制绘制圆盘背景绘制盘块绘制盘块内文字绘制盘块内图标开始旋转转盘停止旋转转盘自定义转盘等份控件引用布局引用Activity 引用图标切换更换转盘等份沉浸式体验效果图建立一个样式引用空标题栏样式自定义标题栏合二为一Reveal Animator效果视频建立一个圆形样式动画设置自定义转盘代码XML布局代码Activity代码代码下载地址效果视频前言你还在为明天吃什么而烦恼嘛美食大赏帮你解决选择困难症帮你做出最佳的选择做吃货,我们是认真原创 2021-11-12 16:23:34 · 4480 阅读 · 17 评论 -
Android——浅析Activity过渡动画
Activity过渡动画前言分解动画效果视频解析滑动动画效果视频解析淡出动画效果视频解析共享元素共享单个元素效果视频解析共享多个元素效果视频全部代码第一个Activity XML布局文件代码第一个Activity 代码第二个Activity XML布局文件代码第二个Activity 代码前言以前Activty之间得跳转非常生硬,自Android.5X后,Google对Activity的切换设计更多丰富的动画效果。Android 5.X提供了三种Transition类型,具体如下:✧进入:一个进人的原创 2021-11-10 21:27:22 · 4275 阅读 · 7 评论 -
AndroidSVG矢量动画——实现两直线交叉
实现两直线交叉效果视频目录结构SVG常用指令初始化状态效果图制作静态SVG图型动画变换动画黏合引用解决低版本异常问题效果视频目录结构SVG常用指令L :为从当前点绘制到直线给定的点,后面跟着的为x,y坐标M :为将画笔移动到某一点,但只是移动画笔,并没有绘制过程,所有没有产生绘制动作A :为绘制一段弧线,允许弧线不闭合初始化状态效果图制作静态SVG图型首先在drawablw目录中建立一个svg_pic.xml文件夹分别给两条直线名为Path1和Path2<vect原创 2021-11-09 20:05:24 · 2328 阅读 · 8 评论