自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 资源 (4)
  • 问答 (2)
  • 收藏
  • 关注

原创 在Jetpak Compose中管理网络请求竟然如此简单!

本文中提及的use开头的函数,都出自与我的项目,它提供了一系列 React Hooks 风格的状态封装函数,可以帮你更好的使用 Compose,无需关系复杂的状态管理,专心于业务与UI组件。在Compose中使用useRequest轻松管理网络请求在Compose中使用状态提升?我提升个P…Provider在Compose中父组件如何调用子组件的函数?在Compose中方便的使用MVI思想?试试useReducer!在Compose中像使用redux一样轻松管理全局状态。

2024-04-03 11:44:47 1605

原创 在Compose中使用useRequest轻松管理网络请求

还记得:这篇文章么?现在我将 ahooks 带到了 Compose 开发中!在Compose项目中,你是如何进行网络请求,管理状态的?ViewModel?还是配合State?他们看起来都不够优雅,我们真的需要在 Compose 中创建这么多VM么?还有更优雅的方式么?来了解一下吧,也许它会让你在 Compose 开发中更加得心应手,更多的专注于组件而非复杂的状态管理。more。

2024-04-01 16:17:00 681

原创 在Jetpack Compose中优雅的使用防抖、节流

本文中提及的use开头的函数,都出自与我的项目,它提供了一系列 React Hooks 风格的状态封装函数,可以帮你更好的使用 Compose,无需关系复杂的状态管理,专心于业务与UI组件。在Compose中使用useRequest轻松管理网络请求在Compose中使用状态提升?我提升个P…Provider在Compose中父组件如何调用子组件的函数?在Compose中方便的使用MVI思想?试试useReducer!在Compose中像使用redux一样轻松管理全局状态。

2024-04-15 15:21:40 1065

原创 在Compose中轻松使用异步dispatch管理全局状态

本文中提及的use开头的函数,都出自与我的项目,它提供了一系列 React Hooks 风格的状态封装函数,可以帮你更好的使用 Compose,无需关系复杂的状态管理,专心于业务与UI组件。在Compose中使用useRequest轻松管理网络请求在Compose中使用状态提升?我提升个P…Provider在Compose中父组件如何调用子组件的函数?在Compose中方便的使用MVI思想?试试useReducer!在Compose中像使用redux一样轻松管理全局状态more。

2024-04-03 11:43:55 704

原创 在Compose中像使用redux一样轻松管理全局状态

本文中提及的use开头的函数,都出自与我的项目,它提供了一系列 React Hooks 风格的状态封装函数,可以帮你更好的使用 Compose,无需关系复杂的状态管理,专心于业务与UI组件。在Compose中使用useRequest轻松管理网络请求在Compose中使用状态提升?我提升个P…Provider在Compose中父组件如何调用子组件的函数?在Compose中方便的使用MVI思想?试试useReducer!more。

2024-04-01 16:21:16 733

原创 在Compose中方便的使用MVI思想?试试useReducer!

本文中提及的use开头的函数,都出自与我的 ComposeHooks 项目,它提供了一系列 React Hooks 风格的状态封装函数,可以帮你更好的使用 Compose,无需关系复杂的状态管理,专心于业务与UI组件。在Compose中使用useRequest轻松管理网络请求在Compose中使用状态提升?我提升个P…Provider在Compose中父组件如何调用子组件的函数?more什么是MVI?明确分离。

2024-04-01 16:20:36 879

原创 在Compose中父组件如何调用子组件的函数?

咋一看标题你可能会觉得这有什么好研究的,请仔细看我的描述:在中调用的函数!众所周知,如果我们希望让调用的函数,可以如下方式:传递函数参数给子组件的方式,最常用,但是嵌套层级多了之后很麻烦通过useContext向子组件暴露,参考很好、很解耦,但是有一些模板代码,相对比较重那么问题来了,如何调用的函数呢?moreCompose 不同于传统的 View 体系,每一个组件都是注解的函数,没有实例对象,无法对外暴露函数。你可能会说,父组件调用子组件函数有必要么?

2024-04-01 16:19:26 472

原创 在Compose中使用状态提升?我提升个P...Provider

总所周知“,在 Compose 中有个思想叫做,在之前的文章中我们曾提及过。状态提升的想法很好,但是实践的时候可能并不美妙。more。

2024-04-01 16:18:20 616

原创 使用 ahooks 中的 useRequest 轻松管理React中的网络请求

除了上面我们提到的,用于配置手动执行请求之外,options还有很多可选的配置,接下来我们简单介绍几个常用的配置。行文至此,想必你应经对如何使用useRequest有了一定的了解,在后续文章中,我会继续介绍useRequest中的其他高级用法,例如 swr 缓存、请求的防抖、节流,还有上面我们说的乐观更新等等。PS:再本文中,大写的 SW R特指的由 Next.js 团队推出的SWR库,小写的 swr 则指的是这一概念,请注意区分。

2022-09-14 10:41:43 8742 1

原创 如何在 Android 中录制屏幕内容,并以H.264数据流形式发送(屏幕广播)

不同于普通的动态权限申请,屏幕录制的权限在每次使用 App 时都需要重新申请一次。在 回调中保存 与 ,这两个参数将会在后续用于实例化 对象2. 创建 MediaCodec 编码器3. 创建虚拟显示器 VirtualDisplay其中参数有如下几种:一般来说用 VIRTUAL_DISPLAY_FLAG_PUBLIC 即可。大致流程如下:Demo代码仓库地址: junerver/TestCaptureAndRecord...

2022-07-01 11:19:13 1609

原创 React-router-dom 6关键点总结 & 路由鉴权的简单思路

快速入门 React-router-dom v6Params 传参,需要在路由声明接受参数 类似于restful,state传参V6的注意点移除了标签,使用标签替代引入了useRoutes([])用于根据路由表创建根路由,其返回值是dom,用{}包裹,放置于节点下即可配置全部一级路由路由表的创建模式子组件不需要再使用钩子创建路由,路由框架通过识别子组件的 以及路由表的children关系,可以知道往什么地方渲染子组件,这一点非常方便标签取消了 ,cla......

2022-06-27 17:17:48 1486

原创 从零开始学习React:react中事件处理与柯里化

从零开始学习React:了解当前React常用技术,编写第一个React组件从零开始学习React:了解组件的三大属性从零开始学习React:react中事件处理与柯里化1. 事件处理React 中元素也可接受、处理事件,但是在语法上有一点不同。在React 中所有事件的命名采用的是小驼峰,而非原生 DOM 的纯小写,所有事件需要我们传入一个函数,而非字符串。例如:const Button = () => { const handleClick = () => {

2022-05-23 15:33:27 444

原创 从零开始学习React:了解组件的三大属性

从零开始学习React:了解当前React常用技术,编写第一个React组件从零开始学习React:了解组件的三大属性上一节我们简单介绍了React的相关技术栈,以及如何在一个 html 文件中使用 React,创建一个React 组件并渲染到Html 中。本节我们来介绍在 React 中 一个组件比较重要的三大属性组件三大属性就如我们上一节中介绍的一个最简单的函数式组件是这样的:const H2 = ({ title }) => <h2>{title}</h2&gt

2022-05-22 16:29:01 530

原创 从零开始学习React:了解当前React常用技术,编写第一个React组件

React 与 Vue 可以说是现阶段最热门的前端UI框架了,最近开始学习 React,准备开一个新坑:从零开始学习React,主要是学习时的一些思考与记录,如有谬误,烦请斧正。由于前端技术的快速迭代,我会在适当位置标注版本信息,以免出现货不对板。1. 了解当前 React 常用技术栈2. 上手实操,编写第一个组件3. 组件三大属性3.1 state3.2 props3.3 refs...

2022-05-21 15:25:47 678

原创 使用 Docker 搭建 Maven 私服,并通过 maven-publish 上传 aar 到 Maven 私服

1 Maven 与 Maven 私服对于 Maven 大家应该都还不算太陌生,虽然作为 Android 开发我们都是用 gradle 来进行项目构建、依赖管理等工作,但是我们还是离不开 Maven 的中心仓库 Maven Central ,例如在我们的根 build.gradle 文件中就可以看到这样的代码:buildscript { repositories { google() mavenCentral() } dependencies {

2022-03-09 10:43:55 1174

原创 在 Kotlin 中巧妙的使用 DSL 封装 SpannableStringBuilder

上一篇文章我们介绍了如何在 kotlin 优雅的封装匿名内部类(DSL、高阶函数),其中我还算详细的介绍了在 Kotlin 中如何使用 DSL,本文可以看作是对上一篇文章中 DSL 的一个实战。源从何来在 Android 开发中 Spannable 实现富文本显示,也算是一个比较常见的使用场景,例如在登录页显示《隐私政策》、《服务协议》,通常这是一个有自定义颜色与点击事件的 Span,使用起来大致需要写如下代码:private fun agreePrivate() { val tv .

2022-02-21 18:07:05 2253

原创 如何在 kotlin 优雅的封装匿名内部类(DSL、高阶函数)

匿名内部类在 Java 中是经常用到的一个特性,例如在 Android 开发中的各种 Listener,使用时也很简单,比如://lambdabutton.setOnClickListener(v -> { //do some thing});//匿名内部类button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //do

2022-02-18 15:57:42 1610

原创 Compose学习笔记2 - LaunchedEffect、状态与 状态管理

在 Compose 中使用协程Kotlin 中协程有多好用,想必不用我多说了。方便的构建、简洁的切换协程语法、await函数与join函数,尤其是在 lifecycle 扩展出现之后,在 Activity 与 Fragment 中可以通过类似 lifecycleScope.launch { } 这样的语法更方便的使用协程。之前我们介绍过,Compose 是 FP 风格的,UI是通过一个个Composable函数组合在一起形成的,自然不能用lifecycleScope.launch { },那么在 Com

2022-02-15 13:43:38 3717

原创 Compose学习笔记1-compose、state、flow、remember

新建一个 compose 项目开始前,请下载最新版本的 Android Studio Arctic Fox,然后使用 Empty Compose Activity 模板创建应用。我们先看看在 app/build.gradle 中是如何配置使用 compose 的。android{ buildFeatures { // viewbinding 之类的功能也需要在此开启 compose true } composeOptions {

2022-02-12 10:48:31 4110

原创 Android Gradle打包常用函数记录

日期函数:def releaseTime() { return new Date().format("yyyyMMddHHmm", TimeZone.getTimeZone("Asia/Shanghai"))}MD5函数:import java.security.MessageDigestdef generateMD5(String path) { MessageDigest digest = MessageDigest.getInstance("MD5") FileIn

2022-01-28 11:20:28 457

原创 用python编写可以快速在 Android 多变体项目中创建 sourceSet 的脚本

本文普适性比较低,仅限于需要在项目里使用多个变体(variant)的开发者。对于gradle打包多变体可以参考我之前写的文章Gradle —— 使用 Gradle 打包多个变体(variant)太长不看:项目地址:junerver/flavor_cli叨叨叨在多变体项目中有一个工作是比较麻烦而且折磨人的,那就是给不同的变体添加自己的 sourceSet。每当我们需要将一个 Java 文件,通过变体来实现差异化时,都需要将该文件从 main 中拷贝,移动到所有变体各自的 sourceSet 中.

2021-10-12 10:34:39 229

原创 Kotlin Koans 学习笔记 —— Unit 5

Kotlin Koans 学习笔记 —— Unit 1Kotlin Koans 学习笔记 —— Unit 2Kotlin Koans 学习笔记 —— Unit 3Kotlin Koans 学习笔记 —— Unit 436 扩展函数fun task36(): List<Boolean> { fun Int.isEven():Boolean {return this%2 ==0 } //偶数 val isOdd: Int.() -> Boolean = { this%

2021-09-23 09:56:09 290 1

原创 Flutter 学习日记1

本文用于记录我在项目中集成 Flutter 遇到的种种问题,作者纯 Flutter 小白,所以可能会有大量错误,请大佬指出。1 在原生项目中显示 Flutter 项目我的原生项目是 Android ,使用 AS 开发,使用官网介绍的源码集成方式集成Flutter 模块,在原项目中的 settings.gradle 添加如下代码:setBinding(new Binding([gradle: this]))evaluate(new File( settingsDir.parentFil

2021-04-20 12:54:59 274

原创 原生Android项目集成Flutter Module踩坑记录

按照官网的手动集成步骤一步一步完成,但是在运行打开 FlutterActivity 时出现了了如下错误:E/flutter: [ERROR:flutter/runtime/dart_vm_data.cc(18)] VM snapshot invalid and could not be inferred from settings.E/flutter: [ERROR:flutter/runtime/dart_vm.cc(250)] Could not setup VM data to bootstrap

2021-01-22 12:03:10 2426 3

原创 更优雅的使用回调函数 —— Kotlin 协程

简断截说,上代码!举例:fun login(name:String,pass:String){ HttpMethods.webService.login(name,pass){ override fun onSuccess(bean: LoginBean) { connect(bean.token) } override fun onError(e: Exception) { } }fun connect(token:String){ ......//调用方法,从

2021-01-06 14:23:13 1779

原创 记一次更新Retrofit版本后发起网络请求程序崩溃

错误日志如下:java.lang.NoSuchMethodError: No static method metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/in

2020-12-18 16:46:32 763 1

原创 DatePickerDialog 仅显示年月

DatePickerDialog 是我们常用系统自带的日期选择对话框,但有时我们仅需要选择 年月 或者仅需要选择 月日,这种情况我们应该如何快速实现该功能呢?直接百度搜索给出的帖子里最接近正确答案的是这篇文章:【Android DatePickerDialog只显示年月或只显示月日】你直接照搬,但是你如果直接照搬,大概率是没有效果,原因在于Dialog的格式!这些文章大部分都写的很早,在19...

2019-11-25 09:45:18 1277 1

原创 Kolin协程与Retrofit 2.6.1完美合璧

协程有多么好用相比我们不需要再多赘述了,协程如何搭配旧版本的 Retrofit 使用相比大家也在网上看到过很多文章,大致如下://扩展 await() 函数 private suspend fun <T> Call<T>.await(): T { return suspendCancellableCoroutine { continuation -...

2019-08-12 15:07:49 3161 2

原创 Kotlin协程 —— 今天说说 launch 与 async

上文我们已经知道了,在没有CoroutineScope时,我们可以通过实现该接口,或者使用 runBlocking 方法,来使我们的程序可以调用 suspend 挂起函数。今天我们来看看 Builders.common 下的几个构建协程函数:launch 与 async 函数launch 函数在上一篇文章中我们已经接触过数次 launch 函数了,他的主要作用就是在当前协程作用域中创建一个新...

2019-08-09 10:38:01 15930 2

原创 Kotlin协程 ——从 runBlocking 与 coroutineScope 说起

关于协程我们不多阐述,详细内容请查看官方文档,本文只谈谈 runBlocking与 coroutineScope。runBlocking我们先来看看 runBlocking 文档是如何描述该函数的:Runs a new coroutine and blocks the current thread interruptibly until its completion. This funct...

2019-08-07 15:10:14 24757 5

原创 JetPack 初见 - 使用 LiveData 实现组件之间数据共享

18年谷歌退出了新的开发套件 JetPack (喷气背包),本文将浅显的讨论一下其中 LiveData 的一些使用方法与注意事项。1. LiveData 是什么?LiveData 是一个可观察的数据持有者类。与常规observable不同,LiveData是生命周期感知的,这意味着它关注其他应用程序组件的生命周期,例如 Activity,Fragment 或 Service。这确保了 Liv...

2019-07-25 11:11:59 3190

原创 Android 9.0适配

在 res/xml 文件夹下新建一个 xml 文件 network_security_config.xml,内容如下:<?xml version="1.0" encoding="utf-8"?><network-security-config> <base-config cleartextTrafficPermitted="true" />&l...

2019-07-15 10:32:08 744

原创 百度鹰眼SDK文档勘误 —— 查询实时位置

SDK 版本: 3.1.0sdk文档:http://lbsyun.baidu.com/index.php?title=android-yingyan/guide/searchtrack查询实时位置查询一或多个被追踪者的实时位置。//鹰眼服务IDlong serviceId = <开发者创建的鹰眼服务的ID>;//entity标识列表(多个entityName,以英文逗号...

2019-07-02 10:43:22 2121

原创 自适应的TextView —— AppCompatTextView

没什么好说的,对CSDN上的一些文章进行勘误。如果你的 minSdkVersion ≥ 26 那么TextView 已经自带该项支持,只需要添加在 xml 文件中添加android:autoSizeTextType="uniform" 即可!如果你的minSdkVersion 小于 26,那么就需要使用 v7 支持包中的 android.support.v7.widget.AppCompatT...

2019-05-21 16:49:26 1134

原创 Android Studio打开项目后所有文件爆红的解决方法

打开一个半年前的项目,发现所有类文件爆红尝试了删除 .gradle build 文件夹,无效。解决方法:File -> Invalidate Caches/Restart问题解决,特此记录!

2019-04-19 11:44:04 3830 1

原创 Kotlin Koans 学习笔记 —— Unit 4

Kotlin Koans 学习笔记 —— Unit 1Kotlin Koans 学习笔记 —— Unit 2Kotlin Koans 学习笔记 —— Unit 3

2019-01-17 09:30:19 287

原创 Kotlin Koans 学习笔记 —— Unit 3

Kotlin Koans 学习笔记 —— Unit 1Kotlin Koans 学习笔记 —— Unit 225 Comparison修改 MyDate.kt 实现 Comparable 接口data class MyDate(val year: Int, val month: Int, val dayOfMonth: Int) :Comparable&amp;amp;lt;MyDate&amp;amp;gt;{ ...

2019-01-07 09:10:38 270

原创 Kotlin Koans 学习笔记 —— Unit 2

Kotlin Koans 学习笔记 —— Unit 1Kotlin Koans第二单元讲的主要是集合在Kotlin中的各种高级操作。13 介绍fun Shop.getSetOfCustomers(): Set&amp;lt;Customer&amp;gt; { // Return a set containing all the customers of this shop return t...

2019-01-02 11:40:35 316

原创 Kotlin Koans 学习笔记 —— Unit 1

最近在学习 Kotlin 将官方出的练习题做了一遍,将答案以及做题的时候的一些思考记录于此:开始执行:git clone git@github.com:Kotlin/kotlin-koans.git,使用 Idea 打开项目。1 转换Java代码fun task1(collection: Collection&lt;Int&gt;): String { val sb = Strin...

2019-01-02 09:01:51 361

原创 Android Studio 项目 Gradle 升级经验总结

想必各位小伙伴早就都有收到各大应用市场下发的关于《软件高 API 公告》吧!升级我们项目的 API 版本等级已经是必须提上日程了,同时 AS 版本等级、Gradle 版本也是我们升级绕不开的一环,总不能 API 等级提高了,项目还基于低版本的 Gradle 吧。下文我们将简单讲讲,在升级 Gradle 版本时需要注意的一些问题,以及出现相关问题时的解决方法,愿各位小伙伴都愉快的升级。环境为:...

2018-12-29 09:59:34 5363

Android 仿微信录制短视频(不使用 FFmpeg)

不引用第三方库,不增加APK包体积,可配置最终输出视频的分辨率、帧率、编码比特率等参数。

2018-11-02

CheatSheet_1.2.9 for MacOS

Mac系统下必备的快捷键提示工具,长按command键即可显示App的全部快捷键!

2018-07-20

StarUML 3.0.1 Mac 版破解补丁

到http://staruml.io/ 下载3.0.1版本,安装完毕后,使用访达前往/Applications/StarUML.app/Contents/Resources/ ,将补丁拖到到该目录覆盖即可!

2018-06-30

SHT20温湿度传感器-Python

在树莓派上使用Python代码通过I2C总线读取SHT20温湿度传感器数据

2017-02-24

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

TA关注的人

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