移动开发

Android graphics(三) surfaceflinger

一、前言 本文主要内容 1、surfaceflinger初始化流程; 2、surfaceflinger消息机制; 3、surfaceflinger绘制流程; 4、VSync分发流程 surfaceFlinger由init进程启动,独立进程运行,它接受来自多个来源的数据缓冲区,对它们进行合成,然后发送到显示设备。 简述显示过程 1>、一个页面,一般分为三个window,状态栏、app和

iOS 设计模式的应用 ⑥ 适配器模式

前言     在面向对象软件设计中,许多时候新功能需要新接口,但是已有的类和新的接口之间不兼容的情况非常普遍。人们为它找到了解决方案,这个方案被称为适配器模式(Adapter Pattern)。 什么是适配器     适配器模式作为两个不兼容的接口之间的桥梁,它将一个类的接口转换成客户端希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。    适配器模式有时也称作为包装

端到端同屏的方案

场景:桌面端应用(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()支持正索引和负索引,获取其指定位