- 博客(115)
- 资源 (2)
- 收藏
- 关注
原创 从零开始写一个Android待办事项ToDoListApp
记录下待办事项,时不时的去看一下,勾选掉已经完成,未完成暴露在面前就能分清轻重缓急而不至于漏掉。本着借鉴和越简单越好的精神,直接使用RecyclerView列表控件来完成待办事项的展示和记录。有时一个问题的处理可能需要的周期比较长,需要分步进行,再加上个子项目的功能。已经完成的事情可能还需要回查,那就除了待办列表外,再加上个已完成的列表在需要的时候可以展示。
2022-03-25 15:13:25 4979 1
原创 Android图表HelloCharts的简单实例
效果图,数据可平移查看历史。直接在布局中加入相应的图表控件。图表上每一点的数据 PointValue(float x, float y) 第一个参数表示点的位置,第二个参数表示点上的数据。如果是多条折线,则需相同位置定义不同的PointValue。Line定义线条上的数据和颜色等,构造函数传入包含PointValue的列表,多条折线分别绑定不同的点数据列表。Axis定义X轴和Y轴的显示。包含了点数据列表的折线添加到 LineChartData 中并绑定给图表控件。实现平移必须设置视图Viewport大小。
2022-01-04 14:24:09 3715 5
原创 RecyclerView实现Item点击事件
RecyclerView本身没有实现点击事件,需要自定义接口进行实现。此处我在pub中实现这个共用接口,当然你写可以在当前package下随便什么类中进行实现或者单独一个文件,接下来就要改造这个Adapter了,只是设定监听事件了,但没有指定监听事件给谁,那点击之后是不会有反应的,还需要在 onCreateViewHolder 中绑定监听事件,接下来和正常ListView绑定监听事件的操作差不多。
2020-10-29 11:23:38 10695 14
原创 C#实现电脑桌面端的本地txt电子书阅读器
写在前面的话手机阅读是为了利用更多的碎片时间,但有时候桌面端阅读更方便,有需求就去找大牛的作品,试了几个,不是自己想要的,那就动手自己写一个了,满足基本功能的同时,也是一种自我学习和提高,分享出来给需要的朋友参考和下载使用。开源地址:https://github.com/zqunyan/DesktopReader常用功能目前已基本实现功能:电子书的打开,保存,删除关闭窗口记录当前阅...
2020-04-30 16:23:57 2923
原创 Github搭建个人云笔记
云笔记软件也用了好几个,总是这问题,那问题的没能一直使用。Github可以免费创建私有仓库,可以说对开发者来说就是一个最大的福音呀。今天就利用Github的私有仓库来搭建一个个人的云笔记。Github 登录Github,没有账号的赶紧去注册啦! 进入Setting 找到 SSH Keys 获取本地电脑的 SSH Key 绑定到 Github 账号上,怎么获取,下面Win...
2020-03-25 15:43:58 4213
原创 Python爬取小说电子书全文并保存到本地
借助python的模块大全和便捷的网络访问,爬虫的不二选择呀,1 设定章节列表所在页面url2 检查列表所在的元素id或类名3 取得所有列表a链接并写入列表中带有分页的章节列表 - 有规律可循时根据章节链接的规律来自定义列表,就不再解析列表页的请求了。
2023-08-09 08:18:37 509
原创 Android数据库操作Greendao主键设置
在使用Greendao操作数据库时,对于主键的定义不是很明确,正常我们在使用数据库时会有大概三种情况下的主键定义。ID主键,唯一值主键,复合主键。第一种greendao就有,特别强调一个坑就是Long类型,第二种和第三种则可借助`indexes`的`unique`唯一索引来当作主键。
2022-11-18 16:55:26 2066 1
原创 Android自定义公共引入库(多个项目引入同一自定义框架类库)
Android开发快捷的一个地方就是可以引入别人写好的类库模块,供我们高效开发和使用。有时候我们自已开发的项目多了,也会有自己的一些类库包,但毕竟还在开发期,需要经常变更,所以还没办法直接上传到Maven中进行简单的参考引用。这时候就要用一些小技巧,把我们自己的公共类库引入到不同的专案中,需要修改时,只要修改公共类库一份代码,其他专案重新编译即可生效。
2022-11-10 15:15:59 867
原创 Android列表GridView定制长按弹出选择模式
在使用列表显示数据时,特别如GridView显示表格式数据时,经常需要多选文件进行操作,移动端一般为长按弹出选择模式并调出操作栏,然后多选后执行操作栏的相关功能。首先,改写数据类,在数据类中增加以上两个字段,用来控制列表项是否显示选择框,以及是否选中的状态,方便后续操作。然后,Item中增加选择框的图片。然后,Adapter增加选择模式的判断。最后,Activity中代码控制。最最后编写相应的控制按钮的事件功能即可,记得点击完按钮,退出选择模式。
2022-09-26 15:27:30 1315
原创 Android10剪贴板Clipboard的适配和解决方案
Android10(Q)开始对剪贴板增加了限制,当应用没有获取到焦点的时候,无法获取剪贴板内容。对于以上限制来说,于普通用户是百利而无一害的,毕竟我们在用手机的时候,复制个东西都可能被别人知道,想想还是挺可怕的。对于开发人员来说,想要再监听剪贴板的变化就要做出一些牺牲和适配了。方案一:在onResume中,通过post延时到界面拥有焦点时读取剪切板。方案二:借助悬浮窗开启前台服务监听。
2022-09-22 17:00:32 4120 1
原创 Android全屏显示和屏幕旋转的处理
全屏隐藏状态栏设置FLAG_FULLSCREEN或者调用全屏样式,设置windowNoTitle和android:windowFullscreen。默认当用户手机重力感应器打开后屏幕旋转时Activity的生命周期会重新加载,添加属性android:configChanges,有些应用需要固定屏幕方向可通过AndroidManifest属性控制,也可代码中强制设置为横竖屏。如果手机关闭了重力感应器依然希望`Activity`响应屏幕旋转则设置SCREEN_ORIENTATION_FULL_SENSOR。
2022-09-15 16:21:00 1496
原创 Android分区存储解决方案
Android 10增加了文件分区的功能,文件的访问特别是根目录下的访问受限,Android10不再允许直接读取文件根目录,即使动态申请也无效。但为了过度,可以使用临时的方案,即在`application`节点下增加`android:requestLegacyExternalStorage="true"`可关闭文件分区功能,但可能后期被取消(Android11强制开启分区存储,File操作方式将无效)。最好迁移到比较稳妥的 MdeiaStore 或者 SAF 方式中。
2022-09-08 11:36:43 1402
原创 Java Socket 循环接收数据readLine()阻塞问题解决办法
解决方案一 加换行符。上面提到的`readLine()`要换行符才知道传送完成,所以这个只能是服务器端发送数据给客户端时,结尾一定要加个`\r`或`\n`又或者使用 `println()` 发送数据,如果服务器客户端都是你维护,那这个解决方案最简单高效。解决方案二 使用Read() 方法。解决方案三 DataInputStream 这种方法好是好,但没有阻塞等待,会一直循环。(突然发现阻塞也是好东西呀)。...
2022-08-16 15:59:44 3566
原创 PythonGui之PyQt5的简单运用
PythonGui模块有很多,但论功能强大还是少不了Qt的支持。在VSCode中借助插件PYQT Integration可以方便的将UI画面转换成Python可识别的Qt语法。QApplication提供了整个图形界面程序的底层管理功能,比如初始化、程序入口参数的处理,用户事件(对界面的点击、输入、拖拽)分发给各个对应的控件,等等,所以必须在任何界面控件对象创建前,先创建它。进入QApplication的事件处理循环,接收用户的输入事件,并且分配给相应的对象去处理。控件要能全部显示在界面上,必须调用show
2022-08-02 15:42:51 263
原创 .NET Compact Framework 2.0
默认WINCE的PDA中会自带此组件,如果提示找不到,可自行安装 NETCFv2.wce5.armv4i.cab 连接数据库需要添加 dbnetlib 包 sql.wce5.armv4i.CAB
2022-07-01 14:32:33 395
原创 Xamarin利用VisualStudio开发Android项目
正常开发Android项目首选的是google自家的Android Studio,但有时候我们需要本地连接SqlServer等C#便捷功能时,Xamarin或许可以帮个忙,让用C#的你不用再重新学个新东西。有利有弊,没有好坏,只看需求和当下情况。重点是配置好Android SDK 还有 Emulator模拟器,至于具体项目开发时,业务逻辑还是C#来写的,用户界面上还是Android的那一套,两者的结合或许能碰撞出火花。...
2022-06-20 16:33:06 1342
原创 Android正则表达式匹配替换提取
正则基本语法在这里就不提了,一搜一堆,这里主要提下在Android中的具体应用。主要也就两个类,一个是 Pattern 类, 一个是 Matcher 类。Pattern类用于正则表达式的规则解析, Matcher 类用于处理匹配结果。
2022-04-25 16:31:44 3038
原创 AutoHotkey模拟创建Gui工具栏
在操作某些软件的时候,如Markdown神器Typora,在实际编写时,通过快捷键可以快速实现自己想要的效果,但有时候快捷键太多,也不是很方便,有个工具栏辅助快捷键会好很多。重点是要画出界面,然后界面上有按钮可以点击,最主要的是自定义工具栏不能把焦点从软件身上拿走,不然无法定位到需要的位置上。NoActivate 让当前活动窗口继续保持活动状态。
2022-01-14 16:13:29 1069
原创 Android列表拖动排序侧滑删除
列表数据显示越来越多的使用RecyclerView来实现,借助ItemTouchHelper实现长按拖动,滑动删除也更加方便,自定义Callback,定义一个接口来回调Adapter中绑定的具体事件,重点重写几个方法getMovementFlags ,onMove ,onSwiped ,isItemViewSwipeEnabled ,在Callback中构造函数中传入继承了上面接口的Adapter以取得具体回调事件。Adapter中继承接口并实现具体方法内容。
2021-12-30 16:37:31 2177
原创 Java简单聊天室Socket服务器客户程序
要创建Socket连接,必须知道服务器在哪里以及用哪个端口来收发数据,也就是IP地址和端口号。使用 BufferedReader 从 Socket 上读取数据,用 PrintWriter 写数据到 Socket 上。服务端有一对Socket,服务器应用程序对特定端口创建出ServerSocket等待用户请求,服务器创建出与客户端通信的新的Socket。取得所有连线,群发消息,利用多线程循环监听客户端发来的消息,如果获取到消息就发送给所有用户。客户端开启新线程循环接收服务器消息。
2021-12-27 15:46:53 1009
原创 C#操作xml配置档案
我们可以使用系统默认的 `Properties.Settings` 配置档案,但可控制性不高,还是自己写比较方便。定义xml路径和文档树,加载xml档案,加载之前记得检查文件是否存在,创建xml档案及节点属性,如果文件不存在则创建档案,档案存在则直接加载。取得节点及获取节点属性和内容。
2021-12-22 16:08:52 414
原创 Activity活动页面跳转与Android页面传值
Android开发少不了的就是页面之间的跳转,或者想要呼叫打开其他应用等。Intent是Android程序中各组件之间进行交互的一种重要方式,不仅可以指明当前组件想要执行的运作,还可以在不同组件之间传递数据。显示Intent启动和隐式Intent启动,根据 action 和 category 来启动。使用隐式 Intent,我们不仅可以启动自己程序内的活动,还可以启动其他程序的活动,如网页浏览等。根据包名打开软件,根据类名打开界面。跳转界面传回返回值。Intent.putExtra 传值,Bundle 传值
2021-12-08 13:33:21 2338
原创 代码控制约束布局ConstraintLayout
实例化布局,同其他布局一样,new 一个根布局出来用来放置控件。控件的定位和约束控制需要借助 `ConstraintLayout.LayoutParams` 来设置,在设置约束时,要知道所参考的控件的 ID 值,如果是自定义的控件,记得给控件加上 `setId()` 。定位参考父布局,首先要拿到根布局的ID值,在xml中我们直接使用 parent 在代码里,也有相对应的ID值`ConstraintLayout.LayoutParams.PARENT_ID`。
2021-12-02 14:55:49 4738
原创 Android通过代码添加和调整布局控件
在实际开发中,有时候布局控件的添加和修改是需要动态调整的,参数的设置和方法的调用显得非常重要,可能xml布局文件中一个小功能,通过代码需要绕一圈来实现,如:margin 边距。动态添加布局。动态添加控件,重点在于控件的定位需要根据id值来控制其他的控件的参数设置根据需要来设定即可,基本上同xml布局控件时差不多。有时我们需要通过代码来调整控件的大小,需要借助其 LayoutParams 来实现动态调整其 width 和 height 的值。动态变更控件的位置,同样需要借助其 LayoutParams 来实现
2021-11-25 16:38:48 3764
原创 Android图片切片热点区域点击
Web的图片热点区域点击有时在Android某些界面也需要,可目前还没发现有好的控件可以实现这个功能,能想到的有两个方案:一个是图片当背景,然后画透明控件,然后通过布局控制来放到相应的位置上然后绑定控件的点击监听事件。有个问题就是有时位置会跑掉。另一个方案就是图片切片,然后组合,只要给需要的切片图片绑定点击监听事件即可。这种方案可行性较高。根据图片的具体尺寸来调整控件的大小使图片填充整个控件,通过控件链来达到图片的组合。
2021-11-24 17:01:28 1652
原创 Android弹窗ListPopupWindow的简单应用
常用的弹窗有菜单,或者Dialog,但更加人性化和可自定义的还是PopupWindow。如果只是展示列表数据或者弹窗列表选择,直接使用ListPopupWindow即可,因为里面已经有一个列表控件了,所以,不用再绑定布局,与普通的弹窗不一样的地方在于这里面是一个列表,所以要绑定Adapter进行展示。如果想要更加多样化的那就自定义一个布局,使用PopupWindow即可,也不复杂。继承BaseAdapter自定义Adapter丰富布局样式
2021-11-22 15:29:21 2580
原创 Android下选择文字自定义颜色切换样式 - RadioButton
在使用RadioButton作tab切换时,需要设置文本颜色切换,不然都不知道当前点击的是哪个,通过代码等引入样式时需要先自定义好颜色选择样式文件。res 目录下建立 color 目录, Resource type选择 Color 类型,上面的名称输入Color,也可以自定义,color 目录下建立 selector 样式文件,Activity引用通过 setTextColor() 方法引入,要使用 getColorStateList() 而不能用 getColor() 否则文本颜色不会切换
2021-11-10 15:17:07 2636
原创 AutoHotkey设置窗口透明度
为方便程式开发时比对代码或者参考写作,需要将参考的窗口设置一定的透明度以不影响下面的窗口查看。当然,你也可用来摸鱼。WinGet取得目标窗口的标识A及透明度T,透明度为空或者透明度减少到100时重新设置透明度,每次透明度减少50,WinSet设置窗口透明度。为了不占用太多热键,这里借用F11循环更改透明度。
2021-11-09 15:23:28 618
原创 ViewModel和MVP中的Presenter结合使用
ViewModel的简单使用,前面文章已经有提过,这里结合MVP一起使用,达到更高的解耦效果。定义ViewModel,Presenter中进行Model数据的访问,这里借助GreenDao对Sqlite进行数据库操作,如果是本地数据,直接写一个方法获取本地数据即可,Activity中实现数据的绑定和观察,借助LiveData变量的 setValue() 方法将 Presenter中获取到的Model数据赋值给ViewModel中的LiveData变量
2021-11-05 15:53:46 445
原创 ViewModel的简单实例
ViewModel类是被设计用来以可感知生命周期的方式存储和管理 UI 相关数据,数据持久,生命周期贯穿整个Activity,解耦合,可以Activity和其下Fragment之间数据共享。
2021-11-05 15:45:45 2324
原创 Markdown常用语法标记
为什么使用Markdown呢?取代记事本进行笔记的写作,样式太单一。读书笔记之类我还喜欢用脑图来记录,但脑图用来分析会比较好,很多文字的写作还是要用笔记的形式比较好。同时,Markdown的[toc]目录生成大纲的功能也很实用。至少现我更喜欢写笔记了……
2021-10-27 15:06:53 559
原创 Android代码架构模式MVP的一点总结
最近想给之前写的一个app增加功能,翻开代码发现很多地方写了注释也要研究半天才能回想起当初为什么要这么设计。最初写的时候想的更多是怎么把功能实现了,至于代码结构倒没考虑太多,反正也要改,干脆把代码理一理吧,就想到应用比较成熟的代码架构会合理一些。对比了下MVC,MVP,MVVM等最后还是决定用MVP来改写,后期可扩展和学习的地方也多些。
2021-10-25 17:01:39 113
原创 C#Winform开发中给控件添加提示文字
为了更好的方便用户使用软件,当用户鼠标移动到相应按钮可文本框时,需要提示用户一些注意事项或操作说明,这时就需要用到提示文字的功能。默认控件本身的属性中没有提示文字功能,需要借助ToolTip控件来给窗体控件添加提示说明文字。控件列表中找到ToolTip控件拖动到Form中。它会同MenuStrip一样显示在下面以便全局使用,可修改其名称方便代码中调用。选中控件切换到属性窗口,在下方即可找到ToolTip属性,在后面的文本框中输入想要提示的文字内容,如果需要多选显示点击向下按钮展开文本框。
2021-08-27 16:00:09 4198 2
原创 Android图片压缩
Android应用选择图库图片后直接保存数据库,原图太大数据库很快会变肥。图片压缩之后再保存成了必经之中,加之很多时候我们只需要一个缩略图知道大概内容而已。首先打开图片库获取选择的图片,然后执行压缩算法,首先是尺寸压缩,再进行一次质量压缩。
2021-08-25 16:38:00 98
原创 Tampermonkey油猴脚本的简单实现教程
这里假装你已经在浏览器上安装好了油猴插件,并且点击了 + 号进入了新增脚本页面,先把上面的描述信息修改成自己的,我的习惯是给每个模块增加一个开关,后续可根据一个变量值进行开关,定义Helper变量控制加载,添加页面需要的标签的样式,添加页面分析的具体功能,绑定点击事件。完整代码-京东页面添加历史价格查询的小实例。
2021-06-03 15:01:32 3483
原创 Python文件读写
open() 为python自带方法,无需import命名空间,写内容到本地文件以 w 写模式打开文件,为了安全性或者操作文件之后资源的释放,建议使用 with 关键字。追加内容到本地文件a追加模式,已存在则追加至结尾。读取文件内容转成列表list(set(file.readlines()))
2021-05-28 15:14:04 58
原创 Android图片ImageView双击缩放并拖动移动位置
借助 Matrix 的缩放功能来达到图片缩放的目的,第一个参数为横向缩放值,第二个参数为纵向缩放值,第三个第四个参数为参考坐标。同上使用 Matrix 来实现图片移动。控件双击功能的实现,按下时的距离和抬起时的距离很小时,视作点击动作,如果两次点击动作的时间间隔很小时,视作双击动作。切换图片后恢复初始状态。
2021-05-19 15:13:34 1601 10
原创 Sql取得两表关联数据
Sql取得两表关联数据的常见情况。LEFT JOIN从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。RIGHT JOIN 是 LEFT JOIN 的反操作。INNER JOIN至少存在一个匹配时才返回行,inner join 与 join 相同,称为内连接。FULL JOIN只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。UNION 操作符用于合并两个或多个 SELECT 语句的结果集。必须拥有相同数量的列拥有相似的数据类型。
2021-05-18 14:01:58 2950
原创 C#调用ffmpeg录屏
C#通过调用cmd来执行ffmpeg命令。为了方便,只放了一个按钮来控制开始/结束,开始录制,为了防止掉帧,ffmpeg参数里最好加上缓存,实际使用时发现无论缓存设置成多大,还是会出现掉帧,但如果我把音频拿掉,反而不掉帧了,大多时候是为了录教程,不要声音,就拿掉了,如果有人知道更好的参数设置,麻烦告知一声。结束录制,释放进程。
2021-04-29 15:45:04 1159 2
原创 ffmpeg视频转动图gif和Webp
ffmpeg -i sour.mp4 -y des.gif 转出来噪点有些重,如果需要高质量动图,考虑增加过滤器palettegen生成色板再用过滤器paletteuse引用色板,有点耗时,但是转出来的动图质量高,噪点不明显。如果自己弄这个觉得麻烦,推荐一个小巧的软件 Screen To Gif ,小巧但功能绝对强大。Webp动图也可直接由ffmpeg转换。
2021-04-15 16:08:41 1986
.NET Compact Framework 2.0.zip
2022-07-01
C# VisualStudio相关Git忽略文件 .gitignore
2020-04-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人