Masonry在视图相对关系处理中的各种“offset”
如果我们需要设置一个view在另一个view的右边缘距离一定距离的地方,利用Masonry这么写: offset可以让我们在设置视图之间相对位置时起到很大作用,但是也有很多情况下用不到,比如size、center等等,而调查Maronry的底层方法,可以看到和offset类似的方法还有很多: off ...阅读全文
如果我们需要设置一个view在另一个view的右边缘距离一定距离的地方,利用Masonry这么写: offset可以让我们在设置视图之间相对位置时起到很大作用,但是也有很多情况下用不到,比如size、center等等,而调查Maronry的底层方法,可以看到和offset类似的方法还有很多: off ...阅读全文
现在的SIM卡通常具备基站定位、语音通话、短信消息、网络流量这四大功能,而在移动端是无法对SIM卡使用基站定位功能的,所以这里只介绍移动端如何使用SIM卡实现语音通话、短信消息、数据流量三个功能。 ##语音通话 Android系统中提供了通话服务,同时自带系统级应用可以通过该通话服务使用SIM卡的通 ...阅读全文
Thread 线程状态:新建(new),就绪(start),运行(run),阻塞,死亡 start 方法内部调用了 run 方法,start 会开启线程,run 只是内部方法; sleep 会占用锁,休眠时间到在重新运行; stop 停止线程比较暴力,对锁的对象进行强制解锁,线程资源因此得不到正常释 ...阅读全文
登陆界面、登陆跳转和进度条功能实现 首先打开Android studio新建一个空项目,打开layout文件夹下的activity_main.xml文件,来设置登陆界面的布局。登陆界面需要两个输入框,一个用来输入账号,一个用来输入密码,一个登录按钮和一个进度条。具体布局代码实现如下: 1 <?xml ...阅读全文
原文通过对Objective-C发展史、Objective-C中Runtime的动态派发,C语言的直接派发进行铺垫介绍,引出了direct methods这个“新特性”(文章写于2019年)。 定义 看起来是个OC的方法,却和C方法一样,当被调用时,他是会直接使用而不是通过objc_msgSend。 ...阅读全文
系统键盘在密码框输入时,如果用户开启录屏,键盘在录屏得到的视频里会不可见,但是用户在录屏时却能看到。 为了实现这个效果,利用UItextfield在录屏下视频不可见的特性,将实现这一效果的私有UIview,也就是_UITextLayoutCanvasView提取出来,作为背景,其他组件在这个背景上显 ...阅读全文
Android系统的移动设备大多支持无线WLAN技术。利用该技术,不仅能实现互联网通信,还能实现无线定位,热点共享等远程通信功能。针对使用WLAN的不同功能,可能需要分别申请不同的权限声明,同时调用不同的系统框架API,下文将按照不同的使用功能分别介绍。 ##扫描无线设备 该功能通常只允许在系统自带 ...阅读全文
环境配置 Flutter SDK 安装 https://docs.flutter.dev/development/tools/sdk/releases?tab=macos 下载完成后解压将其SDK flutter文件夹放入系统根目录,例如: /Users/k/flutter_sdk/flutter ...阅读全文
一个新的测试机在自动下载升级安装更新版本APP时,报出“解析程序包时出现问题”错误。原因众说纷纭, 一番搜索,下面的回答比较全面: https://stackoverflow.com/questions/39147608/android-install-apk-with-intent-view-ac ...阅读全文
Android 的APP 需要集成一个蓝牙扫码器, 特别的是,需要扫码的地方是没有输入框的(EditText),不能通过直觉上理解的通过对EditText输入事件进行监听处理,取得扫码结果。并且设备也没有提供SDK。 细想了一下, 蓝牙扫码器本质应该是个HID设备,相当于蓝牙键盘。而后豁然开朗。 每 ...阅读全文
集成了一个蓝牙的扫码枪,发现每次连接时,应用的当前Activity会销毁再次创建。调试了下, 没有监听到任何的事件,非常困惑。搜了一阵了解到是Android的一个机制。 某些设备配置可能会在运行时发生变化(例如屏幕方向、键盘可用性,以及当用户启用多窗口模式时)。发生这种变化时,Android 会重启 ...阅读全文
【Kotlin】初识Kotlin(二) 1、Kotlin的流程控制 流程控制是一门语言中最重要的部分之一,从最经典的if...else...,到之后的switch,再到循环控制的for循环和while循环,都是在开发中离不开的。 之前在第一篇博文中提到了Kotlin中的for循环和foreach循环 ...阅读全文
Android意图是一个要执行的操作的抽象描述。它可以通过 startActivity 来启动一个活动,broadcastIntent 来发送广播到任何对它感兴趣的广播接受器组件,startService(Intent) 或者bindService(Intent, ServiceConnection ...阅读全文
standard(标准模式) 默认启动模式,每次将创建一个新的实例。 singleTop(栈顶复用) 如果该活动处于栈顶部,则不会新建实例,否则新建实例; 复用时会触发 onNewIntent 方法。 singleTask(栈内复用) 栈内唯一,只要栈中存在该实例,将被复用;并且位于该复用活动顶部的 ...阅读全文
【解决方式】 命令行1(编译): sudo arch -x86_64 gem install ffi 命令行2(安装): arch -x86_64 pod install 原出处:https://github.com/CocoaPods/CocoaPods/issues/10220#issuecom ...阅读全文
项目代码可以从Github下载:https://github.com/zhenl/ZL.Shudu 。代码随项目进度更新。 现在我们增加添加新游戏的功能,创建一个页面,编辑初始局面,并保存到数据库。 我们首先了解一下Xamarin中页面如何跳转。首先,需要为跳转的页面增加路由,这需要在AppShel ...阅读全文
项目代码可以从Github下载:https://github.com/zhenl/ZL.Shudu 。代码随项目进度更新。 现在我们希望为应用增加更多的功能,比如记录每个完成的游戏,可以让用户自己添加新的数独游戏等等,这些功能需要数据库的支持。我们使用Sqlite数据库保存游戏的数据。Sqlite是 ...阅读全文
通信硬件NFC的文章,虽然可以在Android系统中通过非直接接触的形式与支持NFC硬件的设备通信,但是也只能交互一些简短的标签内容,对大量的持续性数据,却并不能很好的支持。因此针对这个弊端,可以考虑使用支持Bluetooth技术的硬件。 Android系统支持传统的Bluetooth技术,其实现功 ...阅读全文
在上篇文章介绍了接入式USB硬件的简单使用,接下来将介绍不依赖物理连接的硬件通信了。本文的重点是近距离通信的硬件NFC。 ###NFC硬件 应用程序中可以通过NFC硬件读取或发送指定协议的技术实现,在Android10.0之前甚至可以封装大段的NDEF数据。另外,Android系统基于NFC的特性, ...阅读全文
在硬件交互的首篇对设备硬件的分类中,互联通信系列硬件主要用来与其他设备进行数据交互。从本文开始,将重点介绍该系列相关硬件。 ##互联通信系列硬件 根据硬件的可通信距离,由近及远分为USB、NFC、蓝牙、WLAN,SIM卡槽,这些硬件之间的功能原理及关系可以查找其他资料详细学习。总之,他们为当前设备与 ...阅读全文