移动开发

Android Jetpack系列之MVVM使用及封装

Android开发架构 如果开发过程中大家各自为战,没有统一规范,久而久之,项目代码会变得混乱且后续难以维护。当使用统一的架构模式后,有很多的好处,如: 统一开发规范,使得代码整洁、规范,后续易于维护及扩展 提高开发效率(尤其在团队人员较多时) 模块单一职责,使得模块专注自己内部(面向对象),模块间解耦 总之,开发架构是前人总结出来的一套行之有效的开发模式,目的是达到高内聚,低耦合的效果,使

RE: 从零开始的车载Android HMI(三) - SurfaceView

1.前言 从零开始的车载Android HMI是一个系列性的文章,目的在于展示一些在Android手机应用开中不常用,但是在车载应用开发中较为常用的一系列Android HMI 组件,希望能够帮助初入车载应用开发的同学了解车载应用开发过程中常用的各种UI 组件。 RE: 从零开始的车载Android HMI(一) - Lottie RE: 从零开始的车载Android HMI(二) - Widge

iOS获取设备唯一标识和UUID

UIDevice.current.identifierForVendor?.uuidString 以上获取uuidString的方法,每次重启都会改变。 但是项目的要求是不变,并且删除app 只有也有有保留的需求。显然这个无法满足我们的需求。 使用KeyChain解决 keychain(钥匙串)存储在iOS系统中,并且恢复iPhone会使keychain的内容也恢复.但是删除App是不会影响k

android studio模块化之模块划分简易版

模块也好,组件也罢,都是需要做好模块区分的。 一、新建module 修改你的模块名,比如你原来的包名是aaa.bbb.ccc,那么模块名就会是aaa.bbb.模块名 二、统一依赖 当我们建立好的module之后,发现主项目app和mudole各自的build.gradle文件都有一些相同的依赖,这个这个时候,需要进行管理,避免混乱。 一些相同的依赖

自定义Chronometer实现定时器

前言 在Android开发过程中,计时控件是经常回使用到的,在Android控件库中有一个能快捷实现计时功能的控件,它就是Chronometer,今天我们基于它自定义实现一个方便调用的计时控件TimeChronometer。 今天涉及知识有: Chronometer常用方法 TimeChronometer在Activity中使用 效果图和项目结构图 TimeChronometer源码 一

Kotlin用@Parcelize实现序列化Parcelable

简介 在Android项目中经常要对Bean进行Parcelable序列化,也有很多序列化工具。Android中提倡通过实现Parcelable来对对象序列化,但是如果是使用Java开发实现起来就比较繁琐,而Kotlin提供了@Parcelize,可以轻松实现对Bean的序列化及反序列话。先看看官方对@Parcelize的解析: /** * Instructs the Kotlin compil

Mac OS14外接显示器字体过小和放大字体模糊问题的简单解决

文章目录 问题简述 解决方法 问题简述使用Mac mini外接2K 显示器时,默认分辨率是25601440,字体较小,如果切换成19201080,字体又变大模糊。 解决方法使用HiDP I(一种显示技术,使用多个物理像素显示1个像素区域,让显示效果更清晰、边缘更平滑)。

安装2024最新版Android Studio 最详细教程(带图展示)

一、安装JDK(1)首先在除C盘以外的盘建立文件夹,分别保存软件位置,JDK位置与SDK位置,特别注意:所有文件名中不要出现空格,而且每个文件夹都是为空的状态这里我是在D盘中操作。 (2)安装配置JDK,这里安装的是JDK17的版本,如果以前安装

Android-推荐一个沉浸式状态栏开源库(ImmersionBar )

图片来源网络,入侵必删 在日常的Android开发中,我们肯定遇到沉浸式的开发需求。在大多数项目当中,都会使用ImmersionBar开源库适配。这篇博客分享一下ImmersionBar相关的知识,希望对看文章的小伙伴有所帮助。 ImmersionBar依赖 mavenCentral版本: // 基础依赖包,必须要依赖 implementation 'com.geyifeng.imme

dispatch_group_leave崩溃

崩溃描述 image.png 近日排查线上崩溃时,发现一个描述信息很少的崩溃,如上。由dispatch_group_leave.cold.1可知,属于dispatch_group异常 dispatch_group使用 dispatch_group使用场景:A任务依赖B/C/D子任务全部执行完成,才进行触发执行。 如何添加子任务,通常有两种方式: block dispatch_gr