avatar
文章
108
标签
35
分类
15
首页
归档
标签
分类
友链
关于
Fleming's Blog
搜索
首页
归档
标签
分类
友链
关于

Fleming's Blog

MonoBehaviour生命周期
发表于2025-04-03|Unity 3D
MonoBehaviour生命周期Unity 中的 MonoBehaviour 类提供了一系列的回调方法,这些方法按照一定的顺序被调用,形成了脚本的生命周期。了解这些生命周期方法对于控制游戏对象的行为非常重要。以下是 MonoBehaviour 的主要生命周期方法: Awake(): 当脚本实例被加载时调用。这个方法在整个游戏生命周期中只调用一次,通常用于初始化变量或游戏状态。 OnEnable(): 当对象变为可用或激活状态时调用。当一个对象从非激活状态转为激活状态(比如通过设置 gameObject.SetActive(true))时会调用此方法。每次对象变得可用时都会调用。 Start(): 在第一次帧更新之前调用。仅在启用状态下才会被调用,常用于需要等待所有初始化完成后再执行的操作。 FixedUpdate(): 固定物理更新频率调用。用于处理物理相关的计算,因为它的调用不受帧率的影响。 Update(): 每帧调用一次。这是使用最频繁的方法之一,适合用于处理与帧率同步的游戏逻辑。 LateUpdate(): 在每帧Update方法之后调用。主要用于处理跟随摄...
EdgeToEdge全屏状态和导航栏高度适配
发表于2024-11-06|Code
EdgeToEdge全屏状态和导航栏高度适配12345ViewCompat.setOnApplyWindowInsetsListener(binding.root) { v, insets -> val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) insets}
scrcpy不重定向到电脑声卡
发表于2024-07-31|经验
scrcpy不重定向到电脑声卡1scrcpy --render-driver=software --no-audio
Android刷机
发表于2024-07-07|经验
Android刷机对于安卓设备的刷机过程,通常会涉及到使用ADB(Android Debug Bridge)和Fastboot工具。以下是基于命令行操作的刷机步骤及对应指令: 准备工作 确保已安装ADB和Fastboot:你需要在电脑上安装ADB和Fastboot工具。 解锁Bootloader(如果需要):不同的制造商有不同的解锁方法,请查阅官方文档或社区指南。 刷机步骤及对应指令 连接设备并启用调试模式 在设备上进入“设置”->“关于手机”,连续点击版本号激活开发者选项。 返回设置主菜单,进入开发者选项,启用USB调试。 使用USB线将设备连接到电脑。 检查设备是否正确连接 1adb devices 确认可以看到你的设备。 重启设备进入Bootloader模式 1adb reboot bootloader 确认设备处于Fastboot模式 1fastboot devices 解锁Bootloader(如果尚未解锁) 注意:这一步会清除设备上的所有数据。1fastboot oem unlock 具体指令可能因设备而异,请参照设备制造商提供的说明。 刷入...
关于Gradle版本配置
发表于2024-02-13|经验
关于Gradle版本配置✅ 项目里“真正被 Gradle 选中参与构建”的所有依赖👉 都会被下载到 .gradle/caches 下 ✅ 这些依赖的“具体版本”👉 最终来自:第三方库自身的版本声明 + Gradle 的依赖解析结果 老项目 AGP -> 最高7.4.2, gradle-7.5-bin JVM -> 11及以下 新项目 AGP -> 8.0.0及以上, 最低gradle-8.0-bin推荐:2024 AGP:8.3.2 gradle:8.4-bin以上 kotlin:1.9.20 JVM -> 17及以上 需要配置namespace 关于Kotlin AGP 推荐 Kotlin 7.4.x 1.7.20 8.0.x 1.8.10 8.1.x 1.8.20 8.2.x 1.9.0 8.3.x 1.9.20
如何设置菜单
发表于2024-02-10|Code
为了优化 onActivityCreated 和 onCreateOptionsMenu 并避免使用过期方法,建议采用以下现代 Android 开发实践: 移除 onActivityCreated:该方法已弃用。原本在其中调用的 setHasOptionsMenu(true) 也可以移除。 使用 MenuProvider API:这是替代 onCreateOptionsMenu 和 onOptionsItemSelected 的推荐方式,它能更好地与生命周期结合。 123456789101112131415161718192021222324252627282930313233private fun setupMenu() { val menuHost: MenuHost = requireActivity() menuHost.addMenuProvider(object : MenuProvider { override fun onCreateMenu( menu: Menu, ...
调节对比度
发表于2024-02-08|Code
调节对比度要通过代码调整Android屏幕对比度,您可以使用以下方法: 使用WindowManager.LayoutParams设置屏幕亮度和对比度: 1234WindowManager.LayoutParams layoutParams = getWindow().getAttributes();layoutParams.screenBrightness = 1.0f; //设置屏幕亮度layoutParams.contrast = 1.5f; //设置对比度getWindow().setAttributes(layoutParams); 通过Settings.System类使用ContentResolver设置系统对比度: 123ContentResolver cr = getContentResolver();Settings.System.putInt(cr, Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL); //设置手动调节屏幕亮度Setti...
查询本地图片资源
发表于2024-02-08|Code
查询本地图片资源12345678910111213141516171819202122232425262728293031val mImageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URIval mContentResolver = contentResolverval cursor: Cursor?val projection = arrayOf( MediaStore.MediaColumns._ID, MediaStore.MediaColumns.DATA, MediaStore.MediaColumns.DISPLAY_NAME, MediaStore.MediaColumns.DATE_MODIFIED)//只查询jpeg和png的图片cursor = mContentResolver.query( mImageUri, projection, MediaStore.MediaColumns.MIME_TYPE + "=? or " + MediaStore....
ViewModel在Activity和Fragment之间共享
发表于2023-11-21|经验
ViewModel在Activity和Fragment之间共享在 Android 的 Jetpack ViewModel 架构组件中: 在 Activity 中使用 by viewModels() 创建的 ViewModel,默认作用域是该 Activity。 在 Fragment 中使用 by activityViewModels() 创建的 ViewModel,其作用域也是 宿主 Activity。 因此,只要 ViewModel 的类型相同,并且使用的是默认的 Factory 和 key(即没有自定义 key),那么无论你是在 Activity 中通过 viewModels() 还是在 Fragment 中通过 activityViewModels() 获取,它们都会共享同一个 ViewModel 实例。 原理简述ViewModel 是通过 ViewModelStoreOwner 来管理生命周期和存储的。 Activity 是一个 ViewModelStoreOwner。 viewModels() 在 Activity 中会从 Activity 自己的 Vie...
更新当前的选中状态
发表于2023-11-21|Code
更新当前的选中状态123456789101112131415161718192021222324252627282930313233private fun updateSelectStatus(curUser: User) { mAdapter.run { var targetPosition = -1 var previousCheckedPosition = -1 // 遍历一次,同时更新状态并记录位置 data.forEachIndexed { index, user -> val wasChecked = user.isChecked val shouldBeChecked = (user.uid == curUser.uid) if (wasChecked != shouldBeChecked) { user.isChecked = shouldBeChecked ...
1234…11
avatar
Fleming Chen
不积跬步无以至千里,不积小流无以成江海。——《荀子·劝学》
文章
108
标签
35
分类
15
Follow Me
公告
欢迎来到我的博客,有任何疑问可以随时联系我交流讨论!
最新文章
AI编程工具全景对比2026-06-05
PJSIP Android 原生库与 Java 绑定编译指南2026-05-14
AI提示词生成技巧2026-05-06
交叉编译的含义2026-04-14
adb性能分析2026-04-08
分类
  • ADB12
  • Code19
  • Flutter1
  • Git10
  • Grep1
  • Linux5
  • React1
  • Repo2
标签
MVP sip Message 音频 EditText AlertDialog SQLite adb Markdown 学习路线 git unity 日常 系统 AsyncTask LruCache 开发工具 IDE 自学 Android 代码 扩展 缓存 Handler linux Dialog 系统广播 架构 UI flutter 数据库 react BroadcastReceiver Android Studio 经验
归档
  • 六月 2026 1
  • 五月 2026 2
  • 四月 2026 3
  • 二月 2026 2
  • 一月 2026 2
  • 八月 2025 3
  • 七月 2025 5
  • 六月 2025 1
网站信息
文章数目 :
108
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2016 - 2026 By Fleming Chen框架 Hexo 6.1.0|主题 Butterfly 5.5.4
搜索
数据加载中