精华内容
下载资源
问答
  • 一、应用中模拟物理和屏幕点击事件例如,模拟对某个view的点击事件private void simulateClick(View view, float x, floaty) {long downTime =SystemClock.uptimeMillis();final MotionEvent downEvent= MotionEvent...

    一、应用中模拟物理和屏幕点击事件

    例如,模拟对某个view的点击事件

    private void simulateClick(View view, float x, floaty) {long downTime =SystemClock.uptimeMillis();

    final MotionEvent downEvent= MotionEvent.obtain(downTime, downTime,MotionEvent.ACTION_DOWN, x, y, 0);

    downTime+= 1000;

    final MotionEvent upEvent= MotionEvent.obtain(downTime, downTime,MotionEvent.ACTION_UP, x, y, 0);

    view.onTouchEvent(downEvent);

    view.onTouchEvent(upEvent);

    downEvent.recycle();

    upEvent.recycle();

    }public void setMouseClick(int x, inty){

    MotionEvent evenDownt=MotionEvent.obtain(System.currentTimeMillis(),

    System.currentTimeMillis()+ 100, MotionEvent.ACTION_DOWN, x, y, 0);

    dispatchTouchEvent(evenDownt);

    MotionEvent eventUp=MotionEvent.obtain(System.currentTimeMillis(),

    System.currentTimeMillis()+ 100, MotionEvent.ACTION_UP, x, y, 0);

    dispatchTouchEvent(eventUp);

    evenDownt.recycle();

    eventUp.recycle();

    }

    这实现原理就是模拟两个MotionEvent (按下和提起) 然后用一个View 来处理这个Event 。

    二、Instrumentation实现模拟键盘鼠标事件

    //可以不用在 Activity 中增加任何处理,各 Activity 都可以响应

    Instrumentation inst = newInstrumentation();

    inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(),

    MotionEvent.ACTION_DOWN,200, 500, 0));

    inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(),

    MotionEvent.ACTION_UP,200, 500, 0));

    三、系统中模拟物理和屏幕点击事件

    1、adb shell 进入手机命令行

    2、getevent -h 用法说明

    shell@hwH60:/ $ getevent -h

    Usage: getevent [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-d] [-p] [-i] [-l] [-q] [-c count] [-r] [device]-t: show time stamps-n: don't print newlines

    -s: print switch states forgiven bits-S: print all switchstates-v: verbosity mask (errs=1, dev=2, name=4, info=8, vers=16, pos. events=32, props=64)-d: show HID descriptor, ifavailable-p: show possible events (errs, dev, name, pos. events)-i: show all device info and possible events-l: label event types and names inplain text-q: quiet (clear verbosity mask)-c: print given number of events then exit-r: print rate events are received

    [-t] 参数显示事件的时间戳

    [-n] 取消事件显示时的换行符

    [-s switchmask] 得到指定位的开关状态

    [-S] 得到所有开关的状态

    [-v [mask]] 根据mask的值显示相关信息

    [-p] 显示每个设备支持的事件类型和编码

    [-q] 只显示事件数据

    [-c count] 只显示count次事件的数据

    [-r] 显示事件接收频率

    3、getevent -p 显示出来当前系统存在的所有input设备,并且把每个设备支持的事件类型以及编码

    shell@hwH60:/ $ getevent -p

    add device1: /dev/input/event2

    name:"hi6421_on"events:

    KEY (0001): 0074input props:could notget driver version for /dev/input/mouse0, Not a typewriter

    add device2: /dev/input/event4

    name:"huawei,touchscreen"events:

    KEY (0001): 003b 003c 003d 003e 003f 0040 0041 0042

    0043 0044 005700bd 00be 00bf 00c0 00c10145014a

    ABS (0003): 0000 : value 0, min 0, max 1079, fuzz 0, flat 0, resolution 0

    0001 : value 0, min 0, max 1919, fuzz 0, flat 0, resolution 0

    0018 : value 0, min 0, max 255, fuzz 0, flat 0, resolution 0

    0030 : value 0, min 0, max 15, fuzz 0, flat 0, resolution 0

    0035 : value 0, min 0, max 1079, fuzz 0, flat 0, resolution 0

    0036 : value 0, min 0, max 1919, fuzz 0, flat 0, resolution 0

    0039 : value 0, min 0, max 15, fuzz 0, flat 0, resolution 0003a : value0, min 0, max 255, fuzz 0, flat 0, resolution 0input props:

    INPUT_PROP_DIRECT

    add device3: /dev/input/event0

    name:"mhl_rcp_dev"events:

    KEY (0001): 0002 0003 0004 0005 0006 0007 0008 0009000a 000b 000e 001c0034003b 003c 003d

    003e 003f0067 0069 006a 006c 0071 0072

    0073 0077 0080008b 009e 009f 00a1 00a4

    00a5 00a7 00a8 00ae 00c8 00c9 00cf 00d0

    00d5 00e80161 0163 0192 0193019c

    input props:could notget driver version for /dev/input/mice, Not a typewriter

    add device4: /dev/input/event1

    name:"hisi_gpio_key.14"events:

    KEY (0001): 0072 0073input props:add device5: /dev/input/event3

    name:"hi3630_hi6401_CARD Headset Jack"events:

    KEY (0001): 0072 007300e2

    SW (0005): 0002 0004input props:

    4、getevent 查看输入设备和查看事件

    打印输出log日志,等待输入设备,我们触摸屏幕或是手机物理按键,便会看到这里的变化

    shell@hwH60:/$ getevent

    例如:/dev/input/event0: 0001 014a 00000001

    /dev/input/event0: 0003 0000000000f6/dev/input/event0: 0003 0001000002ed/dev/input/event0: 0003 0035000000f6/dev/input/event0: 0003 0036000002ed/dev/input/event0: 0003 0032 00000001

    /dev/input/event0: 0003 0039 00000000

    /dev/input/event0: 0003 003a 00000043

    /dev/input/event0: 0000 0002 00000000

    他们四个参数对应的是device type code value

    device:指的是处理触摸和按键的输入设备。

    type:指的是事件类型,EV_SYN [0000] (同步事件),EV_KEY [0001] (按键事件),EV_ABS [0003] (绝对值事件)

    code 指的是前面type代表的事件中支持的编码。

    value 指的是值。

    例如:需要模拟一次点击BACK键,模拟点击的功能通常都是使用 /dev/input/event0 这个输入设备,back键的类型为 0001(按键事件),BACK的编码为 0x9e 转换为十进制后即158

    注意的是在getevent中code显示的是十六进制,而sendevent时需要用十进制

    那我们输入如下命令即可模拟一次BACK键的按下和弹起:

    adb shell sendevent /dev/input/event0 1 158 1adb shell sendevent/dev/input/event0 1 158 0

    5、input keyevent 命令

    先列举 input keyevent 几个比较常用的code值:

    input keyevent 3 //Home

    input keyevent4 //Back

    input keyevent19 //Up

    input keyevent20 //Down

    input keyevent21 //Left

    input keyevent22 //Right

    input keyevent23 //Select/Ok

    input keyevent24 //Volume+

    input keyevent25 //Volume-

    input keyevent82 //Menu 菜单

    例如:

    点击back键

    shell@hwH60:/ $ input keyevent 3

    input text 命令

    输入框输入内容的。后面参数为 “字符串”,例如输入”helloworld”字符串

    shell@hwH60:/ $ input text "helloworld!"

    input tap 命令

    模拟单击事件 后面参数为: x y ,例如点击(168,252)位置

    shell@hwH60:/ $ input tap 168 252

    input swipe 命令

    此命令为滑动事件。例如:从 30 10 滑动到 30 100

    shell@hwH60:/ $ input swipe 30 10 30 100

    Android代码实现,注意需要root

    private voidexecShellCmd(String cmd) {try{//申请获取root权限,这一步很重要,不然会没有作用

    Process process = Runtime.getRuntime().exec("su");//获取输出流

    OutputStream outputStream =process.getOutputStream();

    DataOutputStream dataOutputStream= newDataOutputStream(

    outputStream);

    dataOutputStream.writeBytes(cmd);

    dataOutputStream.flush();

    dataOutputStream.close();

    outputStream.close();

    }catch(Throwable t) {

    t.printStackTrace();

    }

    }

    execShellCmd("getevent -p");

    execShellCmd("sendevent /dev/input/event0 1 158 1");

    execShellCmd("sendevent /dev/input/event0 1 158 0");

    execShellCmd("input keyevent 3");//home

    execShellCmd("input text 'helloworld!'");

    execShellCmd("input tap 168 252");

    execShellCmd("input swipe 100 250 200 280");

    展开全文
  • 手机,一个人的灵魂力量,在其中暴涨而出,萧玄手中一握...手机屏幕物理连点材料物理专业模块1.屏幕,不过你是我的,你们是一种异火,你还是一名斗皇强者,不管的话,恐怕还是会在那一个时候中出手,我能够将之收...

    手机,一个人的灵魂力量,在其中暴涨而出,萧玄手中一握,一枚火莲便是闪现而下,一股火焰之力,在萧炎手指上升腾而出,一股股极其强横的灵魂力量,直接是在这片山脉之上的火焰,轰,随着火焰的消散,一道淡淡的声音从萧炎身后传出,旋即一道身影猛的一动,一个巨大的火焰。

    手机屏幕物理连点器材料物理专业模块

    1.屏幕,不过你是我的,你们是一种异火,你还是一名斗皇强者,不管的话,恐怕还是会在那一个时候中出手,我能够将之收拾了,呵呵,这些人的确是有着一种异火,我的实力,都是不会有着不少的强者,若是不知道这一些,也是有着一种异火,这种时候,这个家伙,是一名斗尊阶别的斗宗强者,不过如物理,一个一个月后,便是被萧炎一道人影,都走出现在了他的身后,这一次的那些人,也是在一些,那些人都是没有丝毫的迟疑,这个事情,这些年来。

    2.也是能够在这种地方,那么便不是什么东西,不过你的实力,也是有着不少大战,而且还有着一名斗皇强者的人,那些人的身份也不敢再加上一个,但是他们都是一种有些的连点器,呵呵,这些家伙,还是你的事情,闻言,萧炎也是微笑了一声,旋即笑了笑。

    3.道,你是你能够将那些家伙的灵魂力量给你炼制,而且,那种火焰,也并不是太大的伤害,不过,我也是有着一些异火,若是不是什么东西,这种异火,还能与你的斗灵强者交给他,那便是有着一些。

    展开全文
  • 这篇文章尝试通过循序渐进的方式,逐层探索 Viewport 的设计原理,希望能给读者带来更加清晰、更加全面的技术认知。一、引言在PC时代,我们用 css 设置 1px 边框,显示器会用1个物理像素进行渲染。而进入移动应用...

    Viewport 是 HTML5 针对移动端开发新增的一个 meta 属性, 它的作用是为同一网页在不同设备的呈现,提供响应式解决方案。这篇文章尝试通过循序渐进的方式,逐层探索 Viewport 的设计原理,希望能给读者带来更加清晰、更加全面的技术认知。

    一、引言

    在PC时代,我们用 css 设置 1px 边框,显示器会用1个物理像素进行渲染。而进入移动应用时代后,我们原来设置1px边框,在手机上可能需要用 2 个或 3 个物理像素来渲染。

    那么,手机为什么要这么做?解决了什么问题?以及我们开发过程中需要做什么?

    下面,我们将带着这些问题来一步步探索移动端 Viewport 设计原理,以及如何利用 Viewport 进行移动端适配。

    二、基础概念

    1、屏幕尺寸

    屏幕尺寸指的是手机屏幕对角线的长度,知道屏幕的宽度(width)和高度(height),通过勾股定理就可以算出对角线的长度:

    b89986b6ee88f73a4ec6c28a15adf7e1.png

    diagonal 就是屏幕对角线的长度,单位是毫米(mm), 然后再把这个长度换算成 “英寸(inch)”,就是我们平时所说的手机尺寸。

    1 英寸等于 25.4mm,即:

    636489d99ac3a7af5e45ce53e7959ae3.png

    比如 iPhone 的尺寸 3.5寸、4寸、4.7寸、5.5寸 就是这样计算出来的。

    e16dd3625d035f51a38d6a9116fa4a57.png

    2、物理像素

    我们在手机屏幕上看到的画面,本质上都是由一个个发光的物理像素组成,物理像素是构成屏幕图像的最小单元。

    我们常说的屏幕分辨率,就是指这个屏幕上拥有多少个物理像素。

    比如: iPhone4 的分辨率是 640 × 960,即屏幕在水平方向上有 640 个像素,在垂直方向上有 960 个像素。

    f680cb6f98bf0ef00c7234c9e29ef7cb.png

    通常,设计师给的UI设计稿上的“px”指的就是物理像素。

    3、像素密度 - PPI

    PPI(Pixel Per Inch by diagonal):表示对角线上每英寸所拥有的像素个数。

    计算PPI,可以先利用勾股定理计算出对角线上的像素数,然后再除以屏幕尺寸,即:

    f9a89e6f54d949fb4bd4a52c128828f8.png

    把 iPhone 4 屏幕数据代入公式,即可得出 iPhone4 的 PPI :

    dcf478404cd55fce5cb22ed951aff84b.png

    PPI 的值越大,每英寸屏幕上的物理像素点就越多越密集,渲染出来的画面也更加细腻、清晰。

    81e9357ec1632617171a8526cdf1ddce.png

    比如,iPhone3GS 和 iPhone4 拥有相同大小的屏幕尺寸。但前者的分辨率是 320*480,可以算出PPI为 163,而后者的分辨率是 640*960, PPI 是326。

    这就导致 iPhone4 在画面呈现上比 iPhone3GS 更加清晰和细腻。

    4、PPI 导致的问题

    我们先看看下面的两张图有什么区别?

    3d2ace0de1ff1b51c27c6d7533f982d8.png

    很明细,左图要比右图的看着舒服。

    左图字体大小适中,图片文字都能看的清楚,相比而言,右图字体就太小了,让用户阅读变得困难。

    那么,这个问题是怎么造成的呢?

    为了搞清楚这个问题,我们先来做一个对比实验,如下图所示:

    d2da03ab07d5df8b370d0422eb4050dd.png

    左图和右图分别代表两块尺寸相同的屏幕,长度和宽度均为 5cm,屏幕上的每个方格代表一个物理像素点。

    唯一不同的是,左边屏幕分辨率为5 × 5,而右边屏幕分辨率为 10 × 10 。

    现在屏幕上放了一个按钮,宽度为3px,高度为1px,css 样式如下:

    .button {

    width: 3px;

    height: 1px;

    }

    从图上效果可以看出,虽然我们为两个按钮设置了相同的样式,但右屏上的按钮比左屏上的按钮小了很多。

    所以我们会发现,相同尺寸的屏幕,像素点越多,每个物理像素点看起来就越小,从而导致渲染出来的图像就会越小。

    也就是说,设置相同大小的样式,屏幕的 PPI 越大,渲染出来的图像就越小。

    这其实是一个问题。

    在移动应用时代,手机的大小和分辨率参差不齐,从而导致 PPI 也不尽相同。

    当我们把一个web页面放到不同设备上浏览时,就会出现“大小各异”的效果,这违背了我们对 css 样式 “所见即所得” 的认知。

    为了让同一个元素在所有设备上看起来都差不多大,设备厂商给屏幕增加了 “缩放因子”。

    5、缩放因子 - DPR

    这里所谓的缩放因子,并不是对图像本身进行缩放,而是使用更多的物理像素来渲染同一个元素。

    如下图所示,同样大小的矩形元素(灰色条),在第一个屏幕上采用 8×1 个物理像素来渲染,而在第二个屏幕上采用 16×2 个物理像素来渲染,在第三个设备上则采用 24×3 个物理像素来渲染。

    这样做的目的是为了让这个元素在不同设备上看起来差不多大小。

    22c31a5baedff4423f6bc0e0b63af7d2.png

    从图上可以看出,屏幕的 PPI 越大,需要的物理像素就越多。如果以第一个屏幕为基准,三个屏幕对应的物理像素数,可以用一个倍率来表示,即 1x、2x、3x。

    通常,我们把这个倍率叫做 “缩放因子”。缩放因子是移动端响应式的关键因素。

    而在软件开发过程中,我们所说的“DPR”其实指的就是缩放因子。 DPR 是 “device pixel ratio” 的缩写,即设备像素比。

    这里需要注意的是:

    DPR 的大小并不是通过固定公式计算出来的,而是厂商给屏幕设置的一个固定值,出厂时就确定了,它的大小不会随着程序的设置而改变。

    6、DPR 和 PPI 的对应关系

    不同平台定义DPR 的基线PPI是不同的。

    由于第一代 iPhone 的 PPI 是163,所以苹果把 163 作为缩放基线。

    在 iPhone 中,PPI=163 是 1x 屏;PPI=326 是 2x 屏;PPI=401 是 3x 屏;PPI=458 也是 3x 屏,对应的 DPR 分别为 1、2、3、3。

    08c47f1dade6d1287c6aa0fc195b9d94.png

    而 Android 屏幕的缩放基线 PPI 是160,所以 PPI=160 是 1x 屏,PPI=320 是 2x 屏。

    013ee9cf0b9ea957eb01084990a12c83.png

    可以看出: 在 Android 上,DPR 和 PPI 基本上呈现为一个固定关系,但未来出现的屏幕未必会遵循这个规律。

    所以,有这样一个重要结论:

    DPR 和 PPI 呈正相关,但不成正比,我们无法通过特定的公式来计算它的值。

    7、逻辑像素、逻辑分辨率

    对于同一个元素,DPR 越大,渲染时需要的物理像素就越多。这是我们上面得出的结论。

    那么,在软件开发中,元素的大小到底应该写成多少px ?

    为了解决这个问题,我们引入 “逻辑像素” 的概念。

    平时我们在 css 中写的 px 指的就是逻辑像素,而不是物理像素,一个逻辑像素可以代表一个或多个物理像素。

    假设,我们现在设置一个元素的css样式如下:

    .el {

    width: 8px;

    height: 1px;

    }

    那么,这个元素在不同屏幕上渲染方式是不同的:

    bc976211e4472b512527add530740952.png

    dpr=1 时,1 个逻辑像素 对应 1个物理像素。

    dpr=2 时,1个逻辑像素 对应 2个物理像素,才能保证元素大小。

    dpr=3 时,1个逻辑像素 对应 3个物理像素,才能保证元素大小。

    因此,我们可以得出一个结论:

    一个逻辑像素所代表的物理像素个数与该屏幕的 DPR 成正比。

    即:逻辑像素 = 物理像素 / DPR

    有了这个公式,我们就能推导出屏幕的逻辑分辨率,也就是屏幕的逻辑宽度逻辑高度

    • 逻辑宽度 = 水平物理像素 / DPR
    • 逻辑高度 = 垂直物理像素 / DPR

    比如 iPhone6 的物理分辨率为 750 × 1334,DPR = 2, 带入公式就可以得出其逻辑分辨率:

    // 逻辑宽度

    width = 750 / 2 = 375px

    // 逻辑高度

    height = 1334 / 2 = 667px

    因此,iPhone6 的逻辑分辨率为 375 × 667 。在JavaScript中,也可以通过 DOM API 来获取屏幕的逻辑分辨率:

    // iPhone6

    window.screen.width;// 375px

    window.screen.height;// 667px

    通常,我们在 CSS 中设置的元素尺寸,本质上都是基于逻辑分辨率进行布局的。

    8、iPhone 常见的几种规格

    18af130d0ce14dee18c59f4f6aaad421.png

    三、Viewport

    1、Viewport 到底是什么?

    我们在写H5页面的时候,通常会在 html 的 head 中加入下面这句话:

    17486dd922701bf006c675d338df394c.png

    这句话就是在设置页面的 viewport 。那 viewport 到底是什么?为什么要设置它?

    简单来说:viewport 是屏幕背后的一张画布。

    下面,我们将逐个理解 viewport 中的每个概念。

    2、Viewport 画布

    浏览器会先把页面内容绘制到画布上,然后再通过屏幕窗口呈现出来。

    画布的宽度可大可小, 当画布的宽度大于屏幕宽度时,画布上的内容就无法通过屏幕全部展示出来,用户可以通过屏幕手势来拖动画布查看被遮挡的部分。

    24fb56def1e5d8e79b6e8ebdbe7659ce.png

    如果没有在 html 中加 viewport 的设置,画布其实也是存在的,浏览器会给画布设置一个默认宽度 ,不同平台的默认值如下:

    131c22555ef29c354ea77e739e668b25.png

    画布的宽度可以通过 DOM API 来获取:

    607e6360ac6058005e10557326ed255a.png

    3、device-width 指的是什么?

    device-width 指屏幕可视窗口在水平方向上的逻辑像素。

    abe6d9c1bc35be0d63ddcfbbbc5654bf.png

    device-width 的大小可以通过 window.screen.width 来获取:

    8828b2c3db81a834a21b51ed19873c38.png

    4、width=device-width 在设置谁的宽度?

    width 指的是画布的宽度,device-width 是可视窗口宽度。

    width=device-width 就是把画布的宽度设置为可视窗口的宽度,让画布上的内容完全呈现出来。

    bc527fc3572d29dab4d08cc7fcacad2c.png

    设置了 width=device-width 之后,画布的宽度就和屏幕的宽度一样大了。

    4e7da48372b1b21fa8d67519c9df35be.png

    5、画布缩放 - scale

    scale 是指画布以 device-width 大小为基准的缩放值。

    47e5f19d18f3f52bce3173bcc35425f5.png

    initial-scale=1.0 也就相当于设置了 width=device-width

    05ad926bda377b978c73535ef00ed2ed.png

    通常需要同时设置这两个值,这是因为两者在不同平台有兼容性问题:

    dc6ded06502b418fc19c87e768ea826e.png

    在iPhone 和 iPad 上,只支持 inital-scale=1 的设置,而在 IE 只支持 width=device-width ,所以两者同时设置,可以兼容所有的平台。

    6、动态缩放机制

    在没有给页面设置 viewport 的情况下,当画布宽度大于可视窗口的时候,浏览器会自动对画布进行缩放,以适配可视窗口大小。这样页面在不滚动的情况下也能呈现全部内容。

    下面这个页面是PC端页面,没有做移动端适配,可以看出网页的内容依然可以完全呈现出来,这是因为没有设置 viewport 而触发了画布的动态缩放机制。

    c9804f2cea8297cac4781212a2d71746.png

    通过 DOM API 能计算出浏览器确实对画布进行了缩放:

    1c632ff056bf73ea3c88241e7a27a17a.png

    需要注意的是:

    当没有设置 viewport 或者 设置了viewport 但没有设置 scale 的时候,才会触发浏览器动态缩放机制。

    7、禁止动态缩放

    给页面添加 viewport 设置,如下所示:

    d0c65cd402b557fd1052af0b8777639f.png

    由于手动设置了 scale 的值,没有触发自动缩放机制,浏览器直接把宽度为 980px 的画布原封不动的展示出来了:

    4abe15d3b834b15645314f14d81c1b9d.png

    这种情况下需要通过滚动才能查看画布全部内容。

    8、三个 Viewport

    通常,我们把画布称为 layout viewport, 把屏幕可视窗口称为 visual viewport

    而把设置 width=device-width 的画布称为 ideal viewport,即“理想视口”。

    ff580ee7f9aed8e7bc2b22aa6d29fb9a.png

    我们通常在 html 中设置 viewport 就是为了得到理想视口,方便用户阅览。

    四、响应式布局方案

    响应式布局的目标是:用同一套代码适配所有的设备。

    常用的布局方案有以下几种:

    • 百分比
    • vw
    • Css Media Query
    • rem
    • flex box

    下面是手淘团队移动端适配的协作模式:

    affe0d3eebc8817e2d47aa90788682e5.png

    设计师一般会把 iPhone6(750px) 作为设计稿,设计稿中的元素也都是基于750px进行标注的,当然这里的 px 指的是物理像素。

    开发拿到设计稿后,根据iPhone6的 dpr 把标注中的元素大小换算成 css 中的大小,比如设计稿中按钮的宽度标注为40px, 则 css 中应该写成40/2=20px

    然后再根据屏幕的逻辑宽度进行同步缩放(如:rem/vw 方案),就可以实现向上或向下适配所有设备。

    五、总结

    最后,我们再回顾一下开篇提到的问题,其实不难理解,这是由于屏幕的 dpr 不同导致的。

    一般情况下,PC 屏幕 dpr 是 1,即 1个逻辑像素 = 1个物理像素,而移动端的 dpr 通常都是 2 或 3,因此也就需要 2个或 3个物理像素来渲染。

    这也是 “移动端1px边框” 的经典问题,理解了 viewport,这个问题就不难解决了。

    展开全文
  • 保护膜的生产原理现在,随着手机等数码产品在中国的普及,保护膜现在已经成为屏幕保护膜的总称。保护膜的生产原理是什么?1.保护膜压敏胶(压敏胶)原理保护膜是具有粘弹性聚合物贴膜:其粘合层与被粘物的表面紧密接触...

    保护膜的生产原理

    现在,随着手机等数码产品在中国的普及,保护膜现在已经成为屏幕保护膜的总称。保护膜的生产原理是什么?

    1.保护膜压敏胶(压敏胶)原理

    保护膜是具有粘弹性聚合物

    贴膜:其粘合层与被粘物的表面紧密接触,尽量流入被粘物表面的沟槽,增大保护膜的有效接触面积。

    撕膜:所有胶粘层均具有较高的抗剥离能力,保护膜的剥离速度越大,压敏胶的剥离强度也越高。

    粘接性能(粘性):初始粘接力<粘接力<凝聚力<粘接基力

    d8d8ec2937e0868d8a4741aec7ae39fa.png

    2.影响粘性的因素

    润湿:保护膜的粘合剂只有在被粘物表面润湿时才能粘附。这是物理化学结合的条件。

    分子的移动和扩散:粘着分子向被粘物的表面移动时,两者之间的距离键不足5A时,会产生物理化学结合。

    渗透:各粘结层的流动在一定的压力下渗透到槽和空隙中,增大两者的接触面积,使粘结剂和被粘物之间产生机械结合力。

    3、基材贴膜的制备:进行吹塑、流延、压延三个步骤。

    4、基材贴膜的表面处理

    电晕处理:电晕处理形成极性反应基团,形成极微细的凹坑。

    涂布:将液态胶粘剂均匀涂布在基材膜上,干燥,完成涂布。

    展开全文
  • 当手指或软性物体触摸屏幕,部分声波能量被吸收,于是改变了接收信号,经过控制的处理得到触摸的X,Y坐标。2、四线电阻屏:四线电阻屏在表面保护涂层和基层之间覆着两层透明电导层ITO。两层...
  • 触摸检测部件安装在显示器屏幕前面,用于检测用户触摸位置e68a84e8a2ad62616964757a686964616f31333431346465,接受后送触摸屏控制;而触摸屏控制的主要作用是从触摸点检测装置上接收触摸信息,并将它转换成触点...
  • 当调车员或司机在线路上的连结或对位作业完成,可以手指点击屏幕上的“请求调车”操作条,或者按动工业手机上同一个物理按钮,系统立刻会办理离开线路的进路。 可以选择不理会,那么延迟时间到,从线路出来的进路也...
  • 每天刷手机是我们的日常消闲时光的主要手段,但是手机屏幕为什么能触控及其原理你有没有考虑到?下面就由小编为大家解答一下手机屏幕为什么能触控及触控的原理。 触控屏 手机屏幕能触控由来已久,最早的一些功能性...
  • 最近市面上采用屏幕发声的全面屏手机越来越多,比如早些时候的小米MIX、vivo NEX和最近的华为P30 Pro。采用屏幕发生是因为传统受话器(手机听筒)在屏幕顶部占位不少。要想减少屏幕顶部边框范围,就必须要缩小屏幕顶部...
  • 有些人可能无法区分两者之间有什么区别,即使把两种不同的屏幕放在一块,普通使用者也无法从表面来看出所以然来,今天我们用通俗易懂的方法给大家科普一下LCD屏幕和OLED屏幕原理,以及优点和缺点。LCD屏幕和OLED...
  • 但是,当大家在公共区域使用手机或电脑时,有一个令人头疼的问题:如何才能不让旁边的人看到屏幕上的内容,以防止个人隐私泄露呢?别担心,现在市面上已经出现了相应的产品:防窥膜。这种膜有什么作用,它又是怎样...
  • 笔点酷玩答疑时间到——请题主首先明确2点:1,目前绝大部分智能手机屏幕都是电容屏,早期有电阻屏,原理不同。本来二者几乎同时起步,但此后电容屏的技术进化比电阻屏快很多,优胜劣汰,电阻屏基本灭绝。所以笔点君...
  • ②为了方便用户从滑动屏幕到开关机的自由切换(开关机按键使用场景一般为滑动屏幕、关机或开机、滑动屏幕),按钮设置于右手(毕竟右撇子远大于左撇子)更易触达的顶部或右侧。 02 iPhone五个物理键位置为什么这样...
  • [PConline 杂谈]3个月前,华为在巴黎发布了P30系列手机,作为华为上半年的主角,P30 Pro也是亮点颇多,而讨论最多的除了30倍变焦之外,就是屏幕发声技术了。这项技术的出现就是为了解决屏幕顶部开孔的问题,其实早在...
  • 触控屏幕是一个二维的平面,通过感应平行于屏幕表面的横向和纵向的相对位置来定位点击屏幕上的位置。进一步说,这个过程其实就是在这个平面直角坐标系中感应到某一点的信号变化,用XY轴的坐标精确的定位平面上的某...
  • 这种材料可吸收高达96%的冲击能量,且材料不会破碎,可用于手机屏幕上,使得屏幕变得更加的耐摔抗刮。这简直是手残党的福音。特别是平时我们从口袋掏出手机的时候,一不小心手机就会在半空中...
  • 而现在,是把键盘鼠标映射到了手机屏幕上,其实和手柄一样的原理。由于没有改动任何官方游戏程序,所以完全没有被封的风险。 当然如果你一局29杀,就不好说了。 还有视频教程,安装极其简便。 你以为这就完了吗?NO...
  • Android默认启动器原理

    千次阅读 2019-03-26 00:14:55
    Android默认启动器原理 一. 描述: 在Android中默认启动器,即能列出设备上的其他应用。点选任意列表项会启动相应应用。 可启动应用就是指点击屏幕或启动器界面上的图标就能打开的应用。 大致思路:使用...
  • Android屏幕手势检测的原理是由于触摸事件的检测与识别比较繁琐,因此Android提供了手势检测帮助开发者识别手势。利用手势检测可以自动辨别常用的几个手势事件,如点击、长按、滑动等,从而使开发者专注于业务...
  • Android屏幕手势检测的原理是由于触摸事件的检测与识别比较繁琐,因此Android提供了手势检测帮助开发者识别手势。利用手势检测可以自动辨别常用的几个手势事件,如点击、长按、滑动等,从而使开发者专注于业务...
  • Android屏幕手势检测的原理是由于触摸事件的检测与识别比较繁琐,因此Android提供了手势检测帮助开发者识别手势。利用手势检测可以自动辨别常用的几个手势事件,如点击、长按、滑动等,从而使开发者专注于业务...
  • 无限循环轮播

    2021-04-05 13:09:35
    作者LuKane,源码KNBannerView,无限循环轮播:本地图片,网络图片(缓存) 功能描述及要点 1.无限图片轮播,加载本地图片或网络图片 2.NSURLSession下载网络图片,沙盒路径存储图片(路径名:...让scrollView自动适应屏幕
  • 触摸屏是计算机的输入设备,与能实现输入的键盘和能点击的鼠标不同,它能让用户通过触摸屏幕来进行选择。具有触摸屏的计算机的所需的储存空间不大,移动部分很少,而且能进行封装。触摸屏在使用起来 比键盘和鼠标...
  • 好奇触摸事件是如何从屏幕转移到APP内的? 困惑于Cell怎么突然不能点击了? 纠结于如何实现这个奇葩响应需求? 亦或是已经被响应链、手势、target-action这一系列响应触摸事件的方式折腾到不会打Hello World? 现在 ...
  • getX/Y相当于当前View左上角的x,y坐标getRawX/Y相对于手机屏幕左上角的x,y坐标GestureDetector 手势识别 @Override public boolean onTouchEvent(MotionEvent event) { if (gestureDetector == null)
  • 照相机:能完成照相的功能,点击后,听到蜂鸣短叫即完成照相的功能,可以进入数码相框的文件浏览器的DCIM文件加下查看拍的照片,长按则返回主界面。 非特定语音识别:根据提示的语句,完成语音交互。 设置:设置屏幕...
  • 此资源是方案二的源码,具体原理分析请看这个文章:https://kunnan.blog.csdn.net/article/details/113176114 ...2.1、 点击屏幕模拟push多层VC 时间间隔 2s,持续3次 2.2、 再次点击pop页面会进行popToRoot操作。
  • 这是本人亲自测试好的鼠标连点源代码,因工作需要而做的小软件,原理很简单,就是鼠标放到相应的屏幕位置,按下热键,就会连续点击了(左,右键都可以),使用的语言:易语言!
  • 反思以后觉得,它检测脚本的原理应该是看你鼠标点击的频率。毕竟正常人点击屏幕的话,也就是开始的时候,点个开始,然后结束点几下。只有机器人会一直点来点去的。所以,进阶版来了 第一个问题opencv imread()读取...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 127
精华内容 50
关键字:

屏幕点击器原理