自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 IOS 18 发现界面(UITableView)Banner轮播图实现

由于返现界面控制器DiscoveryController和多个界面控制器都继承自BaseLogicController,而且列表UITableView在多个控制器上都需要用到,故将列表使用UITableView统一编写在父类BaseLogicController上,方便统一管理和使用。从发现界面的效果图可以看出,发现界面是一个列表,列表包含了不同的Item,我们可以将 banner部分看成是列表的一个Item(Cell),列表使用UITableView来实现。1.创建UITableView;

2024-09-03 10:28:22 1644

原创 IOS 02 SnapKit 纯代码开发

是一个Swift语言写的自动布局框架,可以运行到iOS,Mac系统上;OC版本的框架是,都是出自同一个团队。用这个框架的目的是,用起来比系统自带的API方便,他内部也是对系统API进行了封装。

2024-08-13 10:30:40 1544

原创 LangChain-v0.2 Build an Agent 构建代理

语言模型本身不能采取行动,它们只是输出文本。LangChain的一个重要用例是创建代理。代理是使用LLM作为推理引擎来确定要采取哪些行动,以及传递哪些输入的系统。执行操作后,可以将结果反馈到LLM中,以确定是否需要更多操作,或者是否可以完成。本文我们将构建一个可以与搜索引擎交互的代理。您将能够向该代理提问,观看它调用搜索工具,并与之进行对话。

2024-07-17 17:41:50 1127

原创 Flutter 05 组件状态、生命周期、数据传递(共享)、Key

因此,当各组件的类型不同的时候,类型已经足够用来区分不同的组件了,此时我们可以不必使用key。2、在某些情况下,框架将重新插入State 对象到树的其他位置(例如,如果包含该树的子树State 对象从树中的一个位置移植到另一位置),框架将会调用 build 方法来提供 State 对象适应其在树中的新位置。如下面例:定义了一个StatefulWidget的Box,点击Box的时候可以改变Box里面的数字,当我们重新对Box排序的时候,Flutter就无法识别到Box的变化了,这是什么原因呢?

2023-11-02 01:47:57 904 3

原创 十分钟,零基础使用uniCloud完成后端管理系统搭建一

本文主要是通过uniCloud搭建后端管理系统,适合小白开发者、个人开发者,零后端基础,快速、低成本完成后端管理系统搭建。

2023-06-10 22:17:37 1959

原创 NDK OpenCV人脸定位

NDK系列之OpenCV人脸定位技术实战,本节主要是通过OpenCV C++库,实现识别人脸定位,并对识别到的人脸画面增加红框显示。5)通过中转站FaceTracker,实例化Native层播放窗口ANativeWindow,关联surfaceView;2)初始化人脸跟踪中转站FaceTracker,将人脸识别训练数据路径传递到Native层;7.获取相机数据,传递Native层,人脸定位,绘制人脸框,渲染画面到屏幕。6)获取相机数据,传递Native层,人脸定位,绘制人脸框,渲染画面到屏幕。

2023-04-22 22:43:16 1808 1

原创 NDK FFmpeg音视频播放器一

音视频的准备播放工作主要放在NdkPlayer.class中实现,MainActivity主要作用在于各生命周期触发时,调用NdkPlayer.class去实现功能。NDK前期基础知识终于学完了,现在开始进入项目实战学习,通过FFmpeg实现一个简单的音视频播放器。实现Native层与Java层的通讯,通过jni反射调用Java层的方法。NdkPlayer.cpp的头文件,主要作用:导包,声明函数和成员属性。Java层调用的Native层方法在native-lib.cpp编写。

2023-03-19 17:05:41 894

原创 uni-app学习:uniapp微信小程序分享页面到微信好友和朋友圈。

1、uniapp微信小程序分享页面到微信好友跟onLoad()同级,直接添加代码onShareAppMessage() {}即可激活微信小程序菜单栏的分享微信好友功能,即转发按钮。2、uniapp微信小程序分享页面到微信朋友圈这个功能是微信2020年7月7日才开通的,目前只支持安卓手机,ios还不支持。代码实现:跟onLoad()同级,直接添加代码onShareTimeline() {}至此已经实现分享微信小程序到朋友圈。那要如何自定义分享内容呢?如下:onSha

2020-08-11 11:34:29 11545 10

原创 uni-app学习:CSS之flex布局居中

1、上下居中(垂直居中)style="height: 40px; background-color: #FFFFFF;display: flex; flex-direction: row; align-items: center;"2、左右居中(水平居中)style="height: 40px; background-color: #FFFFFF; display: flex; flex-direction: row; justify-content: center;"...

2020-07-15 14:24:06 19567

原创 Android组件化开发,组件间的Activity页面跳转。

组件化开发有什么好处?1、当项目越来越大是,app的业务越来越复杂,会出现业务功能复杂混乱,各功能块、页面相互依赖,相互调用太多导致耦合度高,而采用组件化开发,我们就可以将功能模块合理的划分,降低功能耦合度。2、不采用组件化开发时,编译速度缓慢,修改一个页面布局编译一下还得等几分钟。使用组件开发后,每次修改只需要编译对应的模块即可。3、有利于团队协作开发,开发人员之间职责明确,每一个开发人员...

2019-07-30 17:41:35 4893 2

原创 android studio 将完整项目打包aar,快速换壳,或给第三方使用。

时隔多年,公司又提出了新的需求,之前的打包jar已经满足不了合作方的需求了。合作方:你们的jar,没有页面,需要时间去开发,给我一个直接能用的。程序员:你有钱,你说什么都对。这个需求首先让我想到的就是换壳,直接把这整个项目打包aar。在合作方公司App里面直接引入,启动APP时直接加载aar里面的页面,达到零开发成本。进入正题:简单的module打包aar 完整项目打包aar简单的modu...

2019-07-18 16:50:20 8562 1

原创 Android Camera 自动适配多种屏幕,解决预览照片拉伸和保存的图片拉伸

最近公司需要做一个手机自拍照的功能,由于之前有做过类似手机拍照的功能,所以很快就实现了自定义手机拍的功能。但是后面发现部分手机出现预览照片拉伸和保存的图片拉伸的情况。然后百度了一下,发现原理很好理解,也有一堆demo,然而并没有解决拉伸的情况。下面总结一下我的解决方法,希望对你有用。一、原理我们首先来理解主要的三个大小:1、SurfaceView的大小,屏幕上显示摄像头拍摄的图像的vi...

2018-09-20 18:20:15 6509

原创 Flutter 13 网络层框架架构设计,支持dio等框架。

在移动APP开发过程中,进行数据交互时,大多数情况下必须通过网络请求来实现。客户端与服务端常用的数据交互是通过HTTP请求完成。面对繁琐业务网络层,我们该如何通过网络层架构设计来有效解决这些问题,这便是网络层框架架构设计的初衷。

2024-10-30 16:29:09 1119

原创 Flutter 12 实现双击屏幕显示点赞爱心多种动画(AnimationIcon)效果

使用Flutter封装一个双击屏幕显示点赞爱心UI效果,并实现了爱心Icon 透明度、缩放、旋转、渐变等动画效果。

2024-10-24 16:08:33 1181

原创 Flutter 11 Android原生项目集成Flutter Module

本文主要讲解如何在已有的Android原生老项目中集成Flutter模块。

2024-10-21 11:39:01 860

原创 Jetpack Compose 02 Compose + ViewModel UI和数据逻辑分离

当我们在项目中使用Jetpack Compose进行页面编写的时候,页面涉及到数据刷新,该如何实现UI和数据逻辑分离?本文通过使用Compose + ViewModel ,将在ViewModel中实现数据逻辑,解耦Compose。

2024-10-12 16:18:23 654

原创 Jetpack Compose 页面跳转 - 导航Navigation使用和封装

当我们在项目中使用Jetpack Compose进行页面编写的时候,在进行页面跳转时,官方推荐使用,当然老的多Activity方式仍能正常使用,只是Activity间的跳转消耗资源大,效率没有Compose间页面跳转的效率高,故推荐使用单Activity + 多Compose模式,本文主要介绍单Activity多Compose页面跳转的导航实现。

2024-10-11 15:09:07 951

原创 IOS 26 实现歌单详情(UITableView)列表 ③

将歌单详情分为两组,图1为1组,图2为1组,每组都包含头部View(UITableViewHeaderFooterView);图1不需要头部View,则设置头部View隐藏,图2头部View在滚动歌单列表到顶部时,头部View会固定在顶部不消失。的基础上,实现歌单列表分组头部View。当歌单列表滑动头部View至顶部时,头部View不会因列表滑动而消失,会一直显示在顶部。4)重写cellForRowAt方法,创建对应的Cell,并将分组数据内的列表的Item数据绑定到Cell。

2024-09-19 10:00:00 582

原创 IOS 25 实现歌单详情(UITableView)列表 ②

歌单详情完整效果歌单详情歌单列表头部+图片背景效果本节是在文章IOS 24 实现歌单详情(UITableView)列表的基础上,实现歌单详情里面的歌单列表头部Cell和图片背景效果。歌单列表头部Cell实现实现流程:1.创建Cell,及在使用UITableView的Controller控制器上注册Cell;2.获取data列表数据,并调用UITableView的reloadData(),将数据更新到列表;3.将data的Item数据绑定UITableView的每一个Ce

2024-09-18 11:27:50 518

原创 IOS 24 实现歌单详情(UITableView)列表

歌单详情列表页整体效果稍微有点复杂,我们进行分部实现,先实现歌单详情里面的歌单列表,使用UITableView来实现。SheetDetailController控制器重写父类的扩展 cellForRowAt方法,创建对应的Cell,并将Item数据绑定到Cell。2.获取data列表数据,并调用UITableView的reloadData(),将数据更新到列表;请求歌单详情接口获取歌单详情里的歌曲列表数据,更新tableView.reloadData()至此,实现了歌单详情里面的歌单列表。

2024-09-18 10:33:24 1122

原创 IOS 23 实现通用WebView控制器(WKWebView)

在项目中我们经常会在多个界面使用到WebView,所以本文对WebView进行封装,实现一个通用的WebView控制器。

2024-09-05 11:26:33 851

原创 IOS 22 自定义标题栏(Toolbar)

创建一个自定义控件SuperToolbarView,可以把SuperToolbarView分成左中右三个部分;创建左中右布局,添加到SuperToolbarView中;对外提供相应的方法,将添加到左中右布局的方法暴露出去,最后将SuperToolbarView添加到界面。4)设置SuperToolbarView宽高,并将左中右布局添加到SuperToolbarView中,默认将标题添加到中间布局。封装BaseTitleController,将SuperToolbarView添加到界面。

2024-09-05 09:17:10 499

原创 IOS 21 发现界面(UITableView)单曲列表(UITableView)实现

从效果图上面可以看出,单曲列表Cell由一个title + UITableView来实现的,如果看了前面的文章UITableView应该已经很熟悉了,这里需要注意的是,把UITableView内嵌到UITableView中,且需要显示UITableView的全部Item;SongGroupCell 重写父类的扩展 cellForRowAt方法,创建对应的Cell,并将Item数据绑定到Cell。2.获取data列表数据,并调用UITableView的reloadData(),将数据更新到列表;

2024-09-04 10:34:52 1232

原创 IOS 20 发现界面(UITableView)歌单列表(UICollectionView)实现

需要注意的是,UICollectionView本身也是一个可滑动的控件,把UICollectionView内嵌到UITableView中,且需要显示UICollectionView的全部Item;由于UICollectionView也是一个列表控件,实现UICollectionView的Cell的流程跟 实现UITableView的Cell的流程基本类似。SheetGroupCell 重写父类的扩展 cellForItemAt方法,创建对应的Cell,并将Item数据绑定到Cell。

2024-09-04 09:18:20 1536

原创 IOS 19 发现界面(UITableView)快捷按钮实现

从效果图上面可以看出,快捷按钮Cell由一个水平滑动的View,包含多个Button组成,这里使用UIScrollView包裹水平TGLinearLayout包裹多个ButtonView来实现。DiscoveryController控制器重写父类的扩展 cellForRowAt方法,创建对应的Cell,并将Item数据绑定到Cell。2.获取data列表数据,并调用UITableView的reloadData(),将数据更新到列表;定义按钮数据模型ButtonData,按钮数据是本地写死的按钮列表数据。

2024-09-03 11:26:40 1055

原创 IOS 17 基于UITabBarController实现首页TabBar

创建子控制器 DiscoveryController,VideoController,MeController,FeedController,RoomController,继承自BaseLogicController;创建首页MainController继承自UITabBarController就可以实现Tabbar效果。MainController继承自UITabBarController。其余自控制器实现同DiscoveryController。编译能够正常显示首页Tabbar效果。

2024-08-28 11:05:39 629

原创 IOS 16 封装网络请求和log打印

本文基于对网络请求框架Moya的二次封装,并实现log打印、loading提示等。

2024-08-27 11:56:39 611

原创 IOS 15 实现Toast和小菊花Loading提示

/// 提示/////// 显示提示//背景颜色//标题文字颜色//显示到屏幕顶部//因为显示到中心有点遮挡内容/// 加载提示//菊花颜色//最小尺寸//背景半透明//背景颜色//标题文字颜色//显示对话框//设置对话框文字//详细文字.detailsLabel.text = "请耐心等待"/// 隐藏提示。

2024-08-26 16:40:14 615

原创 IOS 14 封装网络请求框架

本文基于,对网络请求框架Moya的二次封装,并实现JSON对象解析等。

2024-08-26 14:00:09 806

原创 Flutter 10 Flex布局

将 mainAxisAlignment 设置成 spaceBetween,如果 mainAxisSize 设置为 max,则是整个 Row 宽度基础上按照 spaceBetween 的方式进行排列,如果 mainAxisSize 设置为 min,则是三个 Container 宽度之和范围内按照 spaceBetween 的方式进行排列。设置主轴方向,可设置的值为 Axis.horizontal 和 Axis.vertical,交叉轴与主轴方向垂直。Expanded和Flexible。

2024-08-23 14:17:40 1190

原创 IOS 13 网络请求和Moya框架

框架文档推荐使用枚举,本文也使用枚举进行定义。//// 网络API//////导入网络框架// MARK: - 实现TargetType协议/// 返回网址/// 返回每个请求的路径default:/// 请求方式default:/// 请求的参数default://不传递任何参数/// 请求头//// 参数相关工具类/////// 返回URL编码的参数///

2024-08-23 09:24:11 1219

原创 uni-app 手记集。

1、uni-app是一个使用Vue.js开发的前端应用的框架,所以不会Vue.js的小伙伴可以先去看看Vue.js的基础教学。2、.vue文件结构<template> <div class="container"> </div></template><script type="text/ecmascript-6">export default { data(){ return{ ...

2024-08-22 13:54:09 1406 1

原创 IOS 12 自定义用户协议对话框

//////// 主色调,小圆角按钮return r/// 主色调,半圆角按钮return r/// 创建只有标题按钮(类似网页连接)return r。

2024-08-20 11:02:28 867

原创 IOS 11 通用Base控制器封装

BaseLogicController:本项目的通用逻辑,主要是创建界面布局容器,例如:快速初始化一个四边都在安全区的垂直方向布局;快速初始化四边都在安全区的TableView布局等。BaseCommonController:不同项目可以复用的逻辑,例如:设置背景颜色方法等。BaseTitleController:自定义标题相关,例如:快速添加左侧按钮,右侧按钮。BaseController:把viewDidLoad逻辑拆分为三个方法,方便管理。

2024-08-20 09:45:39 625

原创 IOS 10 统一颜色管理和适配深色模式

通过扩展UIColor类来实现//iOS中也提供了命名颜色,例如:.systemBackground,但无法更改他的颜色,Android中就可以根据浅色,深色修改命名的颜色,更方便/// 主色调/// 暗一点 主色调// #pragma mark - 黑色到白色//颜色命名也是很大的问题,关于颜色命名方式讨论:https://www.zhihu.com/question/301985702//以下命名后面的数字,没有实际意思//后面两位是透明度/// 链接颜色/// 主色调,暗一点按钮颜色。

2024-08-18 22:01:10 578

原创 IOS 09 R.swift框架和使用方法

R.swift框架主要是实现通过类字段访问字符串,图片,等资源;类似Android那边通过R类访问,好处是有提示,如果缺少资源,直接就是编译错误;OC类似的功能叫R.objc。

2024-08-18 20:48:01 547

原创 IOS 08 字符串国际化功能实现

选中项目Project-Info,在Localiztion中,点击加号,添加要国际化的语言,例如默认有英语,这里添加一个中文简体,然后会弹出一个界面,选择要国际化的文件,这里都选择,最后点击完成;虽然应用名称也是字符串格式化,但不能写到Localizable.strings,需要写到InfoPlist.strings文件中。然后上面创建Localizable.strings文件,就可以展开,发现有两个文件,一个是中文简体,一个是英文。运行项目后,在回到桌面,可以看到名称实现了国际化。勾选后会生成两个文件。

2024-08-18 19:42:29 406

原创 IOS 07 Swift调用OC源码及OC第三方框架

创建SwiftUseOCTest项目,是一个Swift语言的项目;再创建一个OC类文件,里面有静态方法,实例方法,字段等;然后在Swift项目中调用OC类;像OC类的复杂宏,在Swift类中是无法调用。

2024-08-18 15:03:24 1098

原创 Flutter 09 Future 和 Stream

它可以持续地产生数据,而不是单一的结果。例如,在网络请求中,可以使用 Stream 来处理异步数据的传输和响应。通过监听 Stream,可以实时获取数据并更新应用程序的界面,实现动态数据展示的功能。通过创建一个全局的 Stream,不同部分的应用程序可以监听并发送事件,实现模块之间的通信和交互。Stream 适用于处理持续产生数据的异步操作,而 async/await 适用于一次性获取结果的异步操作。await:用于在异步方法中等待并获取异步表达式的执行结果,只能在被 async 修饰的方法中使用。

2024-08-18 11:21:39 1478

原创 IOS 06 OC调用Swift第三方框架

前面文章05讲的是在OC项目中,调用Swift代码,而在真实开发过程中,在OC项目中调用Swift第三方框架场景用的是非常多的,所以我们也了解在OC项目如何使用Swift写的三方框架。

2024-08-16 09:52:40 849

android studio 4.1免安装版本

android studio 4.1免安装版本,下载打开即可使用,无需安装,随下随用。

2023-07-03

apk签名工具-038230893.exe

window版安卓apk签名工具,给安装包二次签名,不需要使用命令行,操作简单方便。

2020-06-12

kotlin 中文版API

kotlin 中文版API

2017-07-28

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

TA关注的人

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