- 博客(91)
- 资源 (5)
- 收藏
- 关注

原创 Android实现任意多个任意多边形绘制
onTouchEvent拦截会稍微复杂点,首先手指触摸的时候要先判断没有触摸在某个多边形的Point且没有落在多边形内才能新增多边形,并把这个多边形的所有Point放到cPoints 然后加入到allPoints里面。重载onDraw无非就是遍历allPoints,然后根据isComplete 状态来绘制path或者直线和圆,代码我也会在下面一并贴出,相对来说逻辑简单点,关键地方也会做好注释。根据以上分析我们可以先定义辅助类和属性,首先肯定要有一个Point类,用来记录X,Y坐标,还有是否是中间点。
2024-12-07 10:36:35
722

原创 java 中的位运算(“&”、“|”、“~”)详解
有没有小伙伴在看android源码或者一些大牛写的开源框架代码的时候,经常会看到代码中使用了很多位运算(“&”、“|”、“~”等)。看的时候一脸懵逼,也不知道为啥要这样子使用。想着反正不知道这些也不影响自己使用api接口或者开源框架,今天就来详细解读下这些位运算的使用。按位与运算符(&)参加运算的两个数据,按二进制位进行“与”运算。运算规则:0&0=0; 0&...
2018-11-16 16:09:05
4900
原创 uniapp实现中间平滑凸起tabbar
接下来我们利用clip-path来裁剪出一个弧形的path,然后在tabbar中间盖一个你需要的图片,我这里是加号图。在移动端开发中,tabar是一个使用频率很高的组件,几乎是每个APP都会用到。今天给大家分享一个中间平滑凸起的tabbar组件,有需要的可以做下参考。2、再利用clip-path来裁剪出一个平滑凸起的圆弧,通过设置position来盖在步骤1的普通tabbar上面。啊什么,你还想要图片?
2024-10-30 15:00:03
2052
原创 uniapp播放视频截图(APP可以用,小程序勿进)
uniapp播放视频截图前言思路实现尾巴前言最近用uniapp在做一个播放视频截图的功能,第一个当然想到了video组件。可是翻遍这货竟然没有支持截图的API。一番操作下来,用uniapp肯定是无法实现这个功能了,那我们能不能曲线救国方案实现了?当然是可以的,不然就不会有本篇文章出现了,这里以播放uniapp官方的视频为例,先上图镇楼:思路先讲下思路,uniapp没有给我们提供视频截图的api,但是使用浏览器提供的drawImage方法能实现video截图,但是前提是必须使用html中的VIDEO
2021-12-30 15:54:55
5990
17
原创 uniapp自定义modal弹窗,可覆盖标题栏和tabbar
uniapp自定义modal弹窗,可覆盖标题栏和tabbar前言思路实现尾巴前言在开发过程中,我们绝大部分时候会自定义modal弹窗来实现自己的需求,通过组件的方式实现标题栏和tabbar无法被mask覆盖,可能还会存在滚动穿透的问题。今天我们来通过另外一种方式来实现,可以让mask覆盖标题栏和tabbar,而且不会有滚动穿透问题。思路实现思路就是通过新启一个页面,把页面的背景设置为半透明来达到modal的效果,由于是新启页面,所以可以覆盖之前页面的标题栏和tabbar,但是这种方案只在APP上有效
2021-11-02 17:02:39
10535
5
原创 uniapp全局变量和全局函数的实现
uniapp全局变量和全局函数的实现前言通用模块实现使用优缺点原型(prototype)实现使用优缺点globalData实现使用优缺点Vuex实现使用优缺点尾巴前言在开发过程中,为了尽量消除冗余代码我们往往会将一些通用的变量、方法或者函数进行抽象以便进行复用,比如baseurl,通用的工具函数等等。接下来就总结下uniapp中常用的几种实现全局变量和全局函数的方法。通用模块定义一个通用的模块(通常是js文件),然后在这个js文件中配置全局变量和全局函数,需要的地方引入这个文件即可。实现在 un
2021-10-27 16:45:18
12093
6
原创 安卓apk文件使用命令行进行V1和V2签名
安卓apk文件使用命令行进行V1和V2签名前言安装JDK、安卓SDKV1签名V2签名签名验证批处理自动签名批处理文件编写批处理签名使用尾巴前言现在安卓APP要上传应用市场或者基于安全性考虑需要进行加固,而加固完成之后需要重新进行签名。在AS中我们能使用AS自带的打包功能进行签名,而单独的apk文件可以使用基于JDK和SDK的命令进行手动签名,下面我们就来看下怎么实现吧。安装JDK、安卓SDK这步是必须的,因为V1签名是基于JDK,V2签名是基于安卓SDK。V1签名V1签名是基于JDK,所以我们需
2021-09-17 10:42:47
5530
5
原创 前端JS弱密码验证
前端JS弱密码验证前言JS文件使用姿势尾巴前言最近在学习uniapp开发,开发过程中要对用户密码做弱密码校验,然后总结了下常用的弱密码规则和校验方式,通过封装成js文件来提供一系列验证方法,下面就直接看封装后的leak-pwd-check.js文件。JS文件//是否连续3次出现重复字符const regRepeat = /([0-9a-zA-Z])\1{2}///是否包含大写字母const regUpperLetter = /(?=.*[A-Z])///是否包含小写字母const regL
2021-08-30 19:42:17
2333
原创 常用Git命令使用
常用Git命令使用前言暂存区常用命令使用git statusgit addgit commitgit pushgit loggit pull前言最近项目版本控制工具从svn换成了git,所以将常用的git命令使用方式做下记录。暂存区暂存区(可能不同人有不同叫法,这里先这么叫)到底是个什么东西?其实暂存区在我们使用git时是一个很重要的概念,在使用git命令之前,必须要理解。先看下面我画的一张草图大概了解下暂存区:图画的有点潦草,但是意思应该很清楚。工作区:你的本地的工作目录,一般是项目work
2021-05-17 16:58:26
322
原创 微信小程序利用echarts实现中国任意行政区域地图
微信小程序利用echarts实现中国任意行政区域地图前言实现克隆代码集成点击事件点击跳转代码改造尾巴前言最近微信小程序中需要绘制地图,然后点击地图可以跳转到下一层级。研究了一番,选择来百度的开源图标框架echarts-for-weixin,不过最近GitHub可能有时候无法访问,使用csdn加速地址也一样Echarts,接下来就分享下实现过程了。实现我们先给我们的祖国来张画像,实现一张中国地图。克隆代码从上面的地址上面先把代码克隆下来,我们主要使用的就是ec-canvas这个文件夹里面的部分。
2021-05-06 17:07:50
4945
7
原创 微信小程序引入外部字体
微信小程序引入外部字体前言wx.loadFontFaceBase64尾巴前言微信小程序由于打包体积限制,不支持直接引入字体文件。但是如果我们想引入自定义的字体该怎么操作了?接下来我们介绍两种引入自定义字体的方式。wx.loadFontFace第一种方式就是通过官方的wx.loadFontFace(Object object)这个API去加载字体,具体用法请参考官方wx.loadFontFace用法。大概使用方法如下:wx.loadFontFace({ family: 'Bitstream Ve
2021-04-28 16:11:08
8773
10
原创 Kotlin中的空判断
Kotlin中的空判断前言字符串空判断空字符串:""纯空格字符串:" "null字符串:null值为null字符串:"null"集合空判断集合值为null集合size为0尾巴前言Kotlin中一切皆对象,这里我们理解成对象的空判断。由于Kotlin是空安全的,普通可空对象可以通过 ?. 来避免产生空指针异常。...val p: Person? = nullprintln("age is : ${p?.age}")...就算p对象为null,运行的时候也不会产生空指针异常而导致应用退出,打印如
2020-11-26 15:48:23
9743
1
原创 Kotlin学习笔记20——协程(Coroutines)
Kotlin中的Coroutines(协程)什么是协程?为什么要使用协程?协程创建launch方式创建runBlocking方式创建async方式创建withContext方式创建挂起函数取消和超时什么是协程?协程可以看成轻量级线程,通过挂起和恢复的机制进行协程任务调度,本质上是在线程上进行任务调度。而协程和线程的关系大概可以类比成线程和进程的关系。进程可以包含多个线程,而线程也能包含多个协程,但是线程执行的时候是无序的,协程则是按顺序执行。为什么要使用协程?一般需要使用协程的场景都可以使用协程,比
2020-11-04 17:16:30
696
原创 Android Studio配置(Android Studio4.1为例)
Android Studio配置(Android Studio4.1为例)Android Studio下载(下文统称AS)Android SDK下载SDK安装器下载SDK下载JDK配置JDK下载JDK安装JDK环境变量配置SDK路径配置SVN配置SVN下载安装SVNAS关联SVN配置忽略文件添加资源库清除SVN信息的脚本AS缓存目录配置.AndroidStudiox.x缓存目录更改.gradle缓存目录更改AS自定义头部注释尾巴Android Studio下载(下文统称AS)AS最新版下载请戳:AS下载
2020-10-16 14:28:00
10049
17
原创 Kotlin学习笔记19——内置函数之 let 、also、apply、run、with
Kotlin内置函数之 let 、also、apply、run、with前言内联函数之with使用姿势应用场景内联扩展函数之 let 和 also使用姿势应用场景内联扩展函数之apply和 run使用姿势使用场景let,with,run,apply,also函数区别尾巴前言在Kotlin中的源码标准库(Standard.kt)中提供了一些Kotlin扩展的内置函数可以优化kotlin的编码。Standard.kt是Kotlin库的一部分,它定义了一些基本inline函数。这些内置函数可以优化kotlin
2020-10-14 16:41:07
903
原创 微信小程序自定义picker
微信小程序自定义picker前言实现蒙层底部内容内容顶部picker布局实现js实现样式使用姿势代码获取尾巴前言之前UI丢了一张类似这样的效果图(当然这个是本文的效果图,不是原图,不过差不多)给我:当时看到图就想这个还不简单,直接使用picker就行了。然后就是一顿操作,选择mode为date,最终出现了效果图:正当我沉浸在完成功能的喜悦中的时候,心里有个声音一直在提醒我:你没有达到UI需求效果,你没有达到UI需求效果,你没有达到UI需求效果…定睛一看果然和UI效果图有些许区别,UI左上角显示
2020-08-04 16:01:48
7173
7
原创 Kotlin学习笔记18——list,map,set相关操作
Kotlin学习笔记18——list,map,set相关操作前言List按索引取元素取列表的一部分查找元素位置线性查找在有序列表中二分查找Comparator 二分搜索比较函数二分搜索List 写操作添加更新删除Map取键与值过滤plus 与 minus 操作Map 写操作添加与更新条目删除条目Set尾巴前言上一篇我们学习了Kotlin中集合公共操作,今天继续来学习Kotlin中的集合。集合的内容包含的比较多,分为三篇来学习,今天是第三篇我们学习list,map,set相关特定API操作,算是对上篇公共
2020-07-16 17:34:03
1124
原创 Kotlin学习笔记17——集合公共操作
Kotlin学习笔记17——集合操作前言集合操作概述公共操作集合转换映射双路合并关联打平字符串表示过滤按条件过滤划分检验加减操作符分组取集合部分SliceTake 与 dropChunkedWindowed取单个元素按位置取按条件取随机取检测存在与否排序自然顺序(字典排序,或者数值大小排序)倒序随机顺序自定义排序聚合操作Fold 与 reduce集合写操作添加元素删除元素更新元素尾巴前言上一篇我们学习了Kotlin中的集合的概述,今天继续来学习Kotlin中的集合。集合的内容包含的比较多,分为三篇来学习
2020-07-14 18:25:12
821
原创 Kotlin学习笔记16——集合概述
Kotlin学习笔记16——集合概述前言基本集合类型CollectionListMutableListSetMutableSetMapMutableMap空集合复制迭代器List 迭代器可变迭代器区间和数列区间数列实用函数序列构造序列使用尾巴前言上一篇我们学习了Kotlin中的委托,今天继续来学习Kotlin中的集合。集合的内容包含的比较多,分为两篇来学习,今天是学习的集合概述,包括集合分类,定义,以及简单使用。基本集合类型Kotlin 标准库提供了基本集合类型的实现: set、list 以及 ma
2020-07-10 17:31:35
588
原创 Kotlin学习笔记15——委托
Kotlin学习笔记15——委托前言kotlin 委托类委托覆盖由委托实现的接口成员属性委托标准委托可观察属性 Observable把属性储存在映射中Not Null属性委托要求翻译规则提供委托尾巴前言上一篇,我们学习了Kotlin中的object关键字,今天继续来学习Kotlin中的委托。kotlin 委托委托模式是软件设计模式中的一项基本技巧。在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。Kotlin 直接支持委托模式,更加优雅,简洁。Kotlin 通
2020-07-09 14:11:31
554
原创 Kotlin学习笔记14——object关键字
Kotlin学习笔记14——object关键字前言对象表达式对象声明伴生对象对象表达式和对象声明之间的语义差异尾巴前言上一篇,我们学习了Kotlin中的泛型,今天继续来学习Kotlin中的object关键字用法。对象表达式要创建一个继承自某个(或某些)类型的匿名类的对象,我们会这么写:editText.addTextChangedListener(object : TextWatcher{ override fun afterTextChanged(s: Editable?) {
2020-07-07 17:39:45
318
原创 Kotlin学习笔记13——泛型
Kotlin学习笔记13——泛型前言Kotlin 泛型泛型类泛型接口泛型方法泛型约束类型擦除型变声明处型变使用处型变星号投射尾巴前言上一篇,我们学习了Kotlin中的数据类和密封类,今天继续来学习Kotlin中的泛型。Kotlin 泛型泛型,即 “参数化类型”,将类型参数化,可以用在类,接口,方法上。与 Java 一样,Kotlin 也提供泛型,为类型安全提供保证,消除类型强转的烦恼。泛型类class Box<T>(t: T) { var value = t}泛型接口
2020-07-02 17:13:44
452
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人