移动开发

端到端同屏的方案

场景:桌面端应用(electron开发)同屏到pad端(uni-app开发)。 方案一:socket指令发送操作步骤。 思路:前提是桌面端与pad端显示的前端页面一样,即桌面端执行一个操作后,立即把该操作发送到pad端,pad接收到后执行该操作。 痛点:工作量大,要把服务端即桌面端的代码在pad上重新开发一遍。 方案二:electron推流,uni-app拉流。 思路:electron中用ffmp

Dialog窗口机制

Dialog创建 如下是Dialog类的构造函数,代码有缺省: Dialog(@UiContext @NonNull Context context, @StyleRes int themeResId, boolean createContextThemeWrapper) { //获取WindowManager mW

Android用户新手引导层

在用户第一次使用某些功能的时候,需要引导用户点击某些新功能,需要做一个新用户引导层,这里 我做了一个demo来实现该功能。 效果如下: 核心思路就是,获取需要引导的view,获取在屏幕中的位置,然后传给一个主题透明的activity,在这个activity中绘制一个透明的矩形框,用来展示下层view。 MainActivity跳转代码: class MainActivity : Ap

Android:exported 属性知识

1、android:exported 是 Android中的四大组件 Activity,Service,Provider,Receiver 四大组件中都会有的一个属性。 2、android:exported 代表是否能被其他应用隐式调用。 3、true允许被启动,false不允许被启动。 4、android:exported 默认值是由有无intent-filter决定的,如果有intent-fi

微信小程序引导用户添加小程序动画页

1、实现效果 guideFollow.gif 2.实现原理 2.1 动画效果 css动画:animation animation: name duration timing-function delay iteration-count direction fill-mode play-state; 设置上面三段内容不同的动画时长,最后一段文字动画时长最长。 .show_box .

List并发线程安全问题

一、发现并发问题 1.1 测试代码 public class Client { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); new Thread(() -> { for (int i =

Android10.0 锁屏分析——KeyguardPINView PIN锁分析

学习笔记: PIN 解锁流程跟Android10.0 锁屏分析——KeyguardPatternView图案锁分析一样,这里就不过多讲解了。 在这里主要分析下 PIN 键盘的按钮事件。 1. 确认按钮 // KeyguardPinBasedInputView.java @Override protected void onFinishInflate() { // 省略部分

ES6+ 数组方法

1 、concat() 数组、字符串合并。 let a = [1,2,3] let b = [4,5,6] a.concat(b) // [1, 2, 3, 4, 5, 6] let c = 'hello ' let d = 'world' c.concat(d) // 'hello world' 2、 at() 数组、字符串、类数组中添加.at()方法at()支持正索引和负索引,获取其指定位

对象及日期

Date日期 日期对象的定义(使用new关键词) 1、获取当前的时间(本地的时间) var date=new Date()//不传参 获取当前的时间 2、获取指定的时间 var date=new Date(123456)//一个参数毫秒值 将这个毫秒值加上对应的1970.1.1 0:0:0 var date=new Date('2000/1/1 00:00:00')//指定一个字符串 来指定对

iOS Runtime之KVC

Runtime系列导读 iOS Runtime之方法查找 iOS Runtime之方法替换 iOS Runtime之KVO iOS Runtime之KVC iOS Runtime之反射调用 简介 KVC是Key Value Coding的缩写,意思是键值编码。 在iOS中,提供了一种方法通过使用属性的名称(也就是Key)来间接访问对象属性的方法,这个方法可以不通过getter/setter方法