- 博客(26)
- 资源 (1)
- 收藏
- 关注
原创 大家都在用的 Kotlin Flow 操作符,你掌握了几个?
Kotlin Flow 是基于协程的异步数据流处理库,它提供了一种响应式编程的方式来处理异步数据流。类似于 RxJava、Reactor 等响应式编程框架,Kotlin Flow 也可以帮助我们解决异步回调嵌套、线程切换等问题,使代码更加清晰、简洁、易于维护。在 Kotlin 中,Flow 是一个泛型接口,它定义了一种可以发射多个异步值的数据流。Flow 可以通过 flow {} 或 asFlow() 函数创建,并可以使用各种操作符进行过滤、变换、合并等操作。
2023-04-13 15:27:56
582
原创 超详细Android自定义View开发指南:打造可定制轴线颜色、标签字体大小的垂直轴线视图,让你的应用不落俗套!
自定义View是Android开发中比较常见的需求之一,在实现时需要注意计算位置和属性变更后的重绘等问题。本文主要介绍了如何创建一个垂直轴线视图,并提供了设置刻度数量、最大值和最小值、轴线颜色以及标签字体大小等相关属性的方法,希望对大家学习自定义View有所帮助。
2023-04-11 16:19:50
397
原创 android数据库升级方法及注意事项
● 升级数据库版本号要比老的版本大,但是跨版本升级时需要判断好中间版本号,依次升级,跳版本升级会导致缺少中间版本的字段。● 修改数据库后,一定要记得增加数据库版本号 +1 . 否则不会走onUpgrade方法.● 对于不重要的表,如果没有必要保留数据,则可以选择直接删除表后在创建表。● 数据库已经存在,而且版本升高的时候,这个方法才会调用。● 在清除数据之后再次运行–>打开数据库,这个方法会走。● 第一次创建数据库的时候,这个方法不会走。● 没有清除数据,不会走这个方法。● 删旧表迁移数据到新表。
2023-04-11 16:08:54
981
原创 android单个 TextView 中突出显示文本并改变其字体颜色
第一个参数是 ForegroundColorSpan 对象,第二个和第三个参数是要设置的子串的起始和结束位置。要在单个 TextView 中突出显示文本并改变其字体颜色,可以使用 SpannableString 和 ForegroundColorSpan 类来实现。然后,我们可以使用 ForegroundColorSpan 来设置某个范围内的文本颜色。接着,我们可以使用 SpannableString 类来创建一个可变的 SpannableString 对象,并将原始文本传递给它。
2023-04-11 16:02:57
1263
原创 swiftUI之如何进行sha256加密
swiftUI之如何进行sha256加密方法方法扩展data支持将字符串进行sha256加密import Foundationimport CommonCryptoimport CryptoKitfunc hexString(_ iterator:Array<UInt8>.Iterator) -> String{ return iterator.map{ String(format: "%02x", $0) }.joined()}exten
2021-08-12 17:10:21
729
原创 swiftUI之如何进行Base64编码和解码
swiftUI之如何进行Base64编码和解码实现方式实现方式只需扩展String,实现编码和解码的功能,即可方便的将字符串进行编码和解码。extension String { ///Base64编码 func encodBase64() -> String? { if let data = self.data(using: .utf8) { return data.base64EncodedString() }
2021-08-12 17:07:23
576
原创 swiftUI之获取当前时间的毫秒数
swiftUI之获取当前时间的毫秒数方法方法获取时间的毫秒数之需要扩展Date就行了extension Date{ /// 扩展date,获取当前时间的毫秒数 static var currentTimeStamp: String{ return String(Int64(Date().timeIntervalSince1970 * 1000)) }}很简单,做个备忘。...
2021-08-12 17:03:18
957
原创 SwiftUI之macOS如何读取移动储存设备中的文件
macOS如何读取移动储存设备中的文件概述方法概述在Mac中,所有应用都是跑在沙盒中,如果想访问沙盒以外的文件,则需要用户授权,授权方式则是需要用户选择对应的存储路径,确认后方可访问对应的文件目录。方法首先需要在沙盒选项中添加用户选择文件的读写权限:然后需要用到NSOpenPanel去打开路径选择的界面。 let open = NSOpenPanel() open.prompt = "描述" open.title = "选择路径"
2021-08-12 16:54:06
717
原创 macOS之如何删除插入u盘后会生成的._开头的隐藏文件
macOS之如何删除插入u盘后会生成的._开头的隐藏文件概述删除方法概述当你的移动存储设备插入Mac电脑中时,修改里面的文件就会在生成的文件里多增加了一个._开头的隐藏文件,当在window下显示隐藏文件就可以查看到,虽然没啥影响,但是如果有特殊开发需求的项目来说,这多余的文件将会造成很大的困扰。目前网上找的方法关闭生成都没啥用,唯一的办法就是将生成的文件全部删除。删除方法首先需要遍历所有的文件,拿到所有文件的路径/// 获取文件路径/// - Parameter dirPath: 根目录//
2021-08-12 16:35:07
7043
原创 swiftUI之macOS 打印功能解决文本被截断的问题
swiftUI之macOS 打印功能解决文本被截断的问题概述解决方案概述在之前的文章中介绍了macOS中如何调用打印功能,用那种方式如果只打印一页的内容,则无妨,如果是多页,则会出现文本前后被截断的问题如下图的效果:出现这样的问题,最大的原因就是打印view的时候没有处理分页,而是让系统自动分页,导致一个view绘制下来边界会被截断,所以,解决的这个问题的关键在于,如何在每一页只绘制一页所能展示的内容,数据上要做切割,然后还有一点是如何将切割好的数据,转移到对应的页面上去,关于这个问题我研究了好几天
2021-08-09 10:21:35
578
原创 android带边框的RelativeLayout
android带边框的RelativeLayout概述代码实现概述这个是小众需求,主要用于某些需要手动控制边框线是否显示的场景,例如底层通过数据参数的形式,配置边框显示的形式。多用于基于c语言实现功能android端展示的场景。代码实现public class BorderRelativeLayout extends RelativeLayout { //画笔 private Paint mPain; //边框颜色 private int mPaintColor;
2021-08-02 15:30:27
827
原创 android端大数字转换为(k,m)为单位显示
android端解决前端数字太大显示不全的问题概述代码实现概述在前端有些数字太大,有限的空间显示不了那么长的文本,则需要将数字转化为以k,m为单位显示,这需要做特殊处理。代码实现直接上代码实现:public class NumberUtils { private static final Double THOUSAND = 1000.0; private static final Double MILLIONS = 1000000.0; private static fi
2021-08-02 14:12:33
1352
原创 android使用Itext库生成PDF文件
android生成PDF文件之itext7概述导包使用介绍初始化基础控件使用Text使用方式Table的使用经验总结概述关于android端动态生成PDF文档的方案我也找了很多第三方的库,其中很多库对于安卓的支持都不是很好,最后还是只能选择Java中牛逼的itext库,这个库是开源免费,商业收费的,意思是你要使用开源版本则需要将你的源代码也开源,如果不开源,则需要购买商业版本,具体费用则需要跟对方联系。这是家外国企业,国内有代理商,很多大厂都是用的他们的解决方案,可谓是行业顶流解决方案了。导包ite
2021-08-02 12:00:37
3322
原创 android NDK交互多语言编码对照问题
android多语言编码问题概述解决方案概述在做多语言的时候,会存在有些语言是不同的编码比如windows-1250,windows-1251等,如果编码格式不对会导致有些字符没法显示,如果想要正常显示,则需要对照相应的语言的语言编码,看属于哪一类,系统提供了方法进行转化。解决方案这个方法接收的是字节数组,需要将原有的文本转化为字节数组byte[]String textString = new String(texts, "windows-1250");通过转化,就能将原本显示不了的文本通过对
2021-08-02 10:28:49
188
原创 android设置布局从右至左显示导致文本也颠倒的问题
android设置布局从右至左显示导致文本也颠倒的问题概述解决办法概述安卓中布局默认是从左至右绘制的,比如要动态在LinearLayout中添加button,默认都是从左往右排列的。如果要将动态生成的按钮往右边开始绘制,则需要设置他的绘制方向:rl_bottom_btn_layout.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);这样设置之后button将会从右往左绘制,但是这样会导致textView或者button中我文本的某些字符会颠倒,例如-,+
2021-08-02 10:02:08
1310
原创 swiftUI之macOS下如何调用系统打印功能
swiftUI之macOS下如何调用系统打印功能概述实现方式效果概述在macOS开发中,我们可能有需求是要打印我们编辑框输入的文本,或者保存文本为PDF文档,这个功能只需要调用系统的打印功能就可以实现了,不需要特殊的实现方式。实现方式首先需要定义一下NSPrintInfo,它可以控制页面的大小,边距等一些属性,然后我们需要将我们swiftUI上的view转化为NSView,这里就用到了NSHostingView。下面直接上代码: let printInfo: NSPrintInfo = NSPri
2021-07-31 15:29:39
885
原创 swiftUI基础之自定义ButtonStyle
自定义ButtonStyle概述实现概述按钮如果是纯色的话,可以不使用背景图片的方式,而使用自定义按钮样式的方式来实现,实现方式很简单,名称自己随意。实现很简单直接上代码,用了RoundedRectangle作为背景。可以自由发挥你的想象力去创作样式。struct PrintReportBtnStyle: ButtonStyle{ func makeBody(configuration: Configuration) -> some View { configurat
2021-07-31 15:01:42
633
原创 swiftUI1.0之macOS长文本编辑框自定义实现
swiftUI1.0之macOS长文本编辑框自定义实现概述具体代码实现效果概述长文本编辑框也是macOS中常用的控件之一,在macOS11.0之后系统已经提供了相关的控件,但是在这之前,自能通过自定义来实现,我们可以通过NSTextView配合NSScrollView来组合实现在swiftUI下的长文本编辑框。具体代码实现具体就直接上代码了,可以直接使用做个备忘import Combineimport SwiftUIstruct MacEditorTextView: NSViewRepres
2021-07-31 13:59:11
291
原创 swiftUI 1.0版本之macOS端树状结构列表自定义视图
swiftUI 1.0版本之macOS端树状结构列表自定义视图欢迎入坑swiftUI1.0具体实现欢迎入坑swiftUI1.0由于苹果推出了新的UI框架,swiftUI作为新时代的新框架,也大大推进了苹果开发的效率,当然由于是新的UI框架,现在还有很多不如意的东方,首先就是国内的相关资源太少了,还有就是针对macOS的支持控件也是少的可怜,苹果直到macOS11.0版本才推出官方可支持的树形结构控件outline Group,真是悲哀,对于想兼容10.15版本的开发者来说简直是痛苦万分,只能走自定义之路
2021-07-31 11:12:54
701
原创 swiftUI列表item点击空白地方点击功能失效的问题备忘
通过button包裹整个item的布局的形式去设置item的点击功能的时候,在item布局存在空白用spacer()撑开的时候,点击空白的地方点击的action会失效,解决这个问题的办法是在item的布局中添加一个背景,这样才能使点击的空白的地方也能触发点击事件。...
2021-05-12 16:26:21
787
原创 SwiftUI list执行操作再跳转
在swiftUI 中,我们知道可以通过navigationView来管理页面,通过NavigationLink跳转界面,如果想在跳转界面之前做相应的操作的话,可以用如下方法:struct OneView: View{@State var tag: Int? = nilvar body: some View{ NavigationView{ VStack{ NavigationLink(destination: TestView(),tag: 1,se
2021-04-02 10:11:30
751
原创 swiftUI从TabView跳转到子页面不通过返回键返回的方法
由于项目中常用到从首页点击一个按钮进入到子view,然后子view不通过点击返回按钮返回首页,常见的业务包含由个人中心点击登录按钮进入登录页面,登录完之后自动进入首页。在首页是TabView的情况下,通过子view修改navigationLink的isActive属性是无法返回到tabView首页的,这种返回方式只适合在非TabView页面跳转情况下有效,isActive的方式就不多介绍了。只需要在SeceneDelegate中写一个方法 func reloadMain(){ i
2020-12-25 17:42:55
719
原创 swift获取Mac插入U盘的可用容量
由于项目中要用到读取插入U盘的可用容量,并往里面写数据,所以记录一下获取可用容量的方法。 var filesystemFreeSize: Int64? { return try? FileManager.default.attributesOfFileSystem(forPath: path)[.systemFreeSize] as? Int64 }path为用户点击授权之后的路径。m...
2020-12-01 18:09:08
294
原创 Android一个底部带刻度的进度条
由于公司需要一个带刻度的进度条样式,网上找了一圈,有些是加个刻度的背景图片,这样对于我的项目来说,不合适,因为刻度需要动态去改变,所以换背景图片的方案肯定是不行的,唯一的办法就是自己绘制一个进度条,进度条的绘制相对来说是比较简单的。我自己对自定义控件这一块也不是很了解,全当学习一下吧,写这篇博客也是记录一下,如果有人也有这样样式的进度条需求,也可以直接拿过去用,比较自己也用过很多大...
2019-10-14 15:21:37
1902
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人