为啥我手机屏幕触控失灵多点触控只能触控两个

多点触控_手机多点触控失灵_多点触控什么意思
发布时间: 19:06:32 
来源:网络整理 
多点触摸屏。多点触摸屏。使用两点或两点以上不同态势介质触摸屏幕表面。
可以完美以实现图片缩放。旋转等各种多点触摸应用。并同时具备触点传统单点红外触摸屏的一切功能和优势。
中文名,多点触摸屏。种类,电子产品。
多点触摸屏简介。定义:区别于传统的单点触摸屏 ,多点触摸屏的最大特点在于可以两只手,多个手指,甚至多个人,同时操作屏幕的内容,更加方便与人性化.多点触摸技术也叫技术.。
多点触摸屏分类。投射电容式触摸屏就是基于表面电容改进而来。
从而实现多点触控。投射电容式触摸屏仍是以电容感应为主。但相较于表面电容式触摸屏。投射电容式触摸屏采用多层ITO层。形成矩阵式分布。以X轴。Y轴交叉分布作为电容矩阵。当手指触碰屏幕时。可通过X。Y轴的扫描。检测到触碰位置电容的化。进而计算出手指触点的位置。基于此种架构。投射电容可以做到多点触控操作。投射电容式触摸屏的电容类型有两种:自我电容和交互电容。
1投射自电容触摸屏自我电容又称绝对电容。是广为采用的一种方法。它把被感觉的物体作为电容的另一个极板。该物体在传感电极和被传感电极之间感应出电荷。从而被感觉到。所测量的电荷存储在结果电容藕合中。基于多点触摸技术的人机交互研究自我电容式触摸屏实现的是多点触摸识别手势方向。就是仅侦测。分辨多点触控行为。如缩放。拖拉。旋转等。实现方式为轴交错式技术。它是导电层上进行菱形状感测单元规划。每个轴向需要一层导电层。
以两轴型为例。在侦测触控行为时。感测控制器会分别扫描水平轴和垂直轴。产生电容棍合的水平。垂直感测点会出现上升波峰。这两轴交会处即是触摸点。轴交错式虽然能实现多点触控手势辨识功能。但若要定位多个触点的正确位置仍有困难。因为在进行两个轴向的扫描时。两个触控点分别会在X轴与Y轴上各产生两个波峰。交会起来就是4个触点。其中两个点是假性触控点。这会使系统无法进行正确判读。2投射互电容触摸屏交互电容也叫跨越电容。
它是通过相邻电极的祸合产生的电容。当被感觉物体靠近从一个电极到另一个电极的电场线时。交互电容的改变会被感觉到。从而测算出位置。交互电容式触摸屏实现的是多点触摸识别手指位置基于多点触摸技术的人机交互研究。实现方式为复杂触点可定位式技术。iPhone采用的就是这种触控式技术。它主要架构为两层导电层。其中一层为驱动线。另一层为感测线。两层的线路彼此垂直。运作上会轮流驱动一条驱动线。并测量与这条驱动线交错的感测线是否有某点发生电容藕合现象。
应用应用:多点触控在实际应用中被分为两个层面:其一。是主控芯片能够同时采集多点信号。其二。是能够判断每路手指触摸信号的意义。换句话说就是能够为用户提供手势识别功能。
多点触摸屏的技术难点。1。触摸屏的检测时间。
红外线技术的飞快发展。让红外线检测技术可以做到15ms以下的响应速度。但是消费者还是不满足于这种速度。消费者想检测的时间更短。触摸屏触摸起来更加顺畅。2。环境光的影响。红外线接收管是有最大的光照度和最小的灵敏度的工作方位。但是触摸屏产品室不允许限制使用范围的。因为触摸屏应用的对象大部分都是普通消费者。他们都有可能在各处各地应用到红外线多点触摸屏。例如伸手不见五指的电影院。多点触控
烈日当空的海滩。作为消费者产品。它一定要适应这些环境。所以这要求红外线探测技术在触摸屏的应用上更具备着稳定性。3。红外线探测技术在红外线多点触摸屏的应用上。红外线发射接收管都有一个发射接收的角度范围。所以触摸的手指经常会阻挡到对管之间的信号。
多点触控技术分类。1。“LLP技术”。主要运用红外激光设备把红外线投影到屏幕上。
当屏幕被阻挡时。红外线便会反射。而屏幕下的摄影机则会捕捉反射去向。再经系统分析。便可作出反应。2。“FTIR技术”。会在屏幕的夹层中加入LED光线。当用户按下屏幕时。便会使夹层的光线造成不同的反射效果。感应器接收光线变化而捕捉用户的施力点。从而作出反应。3。“ToughtLight技术”。运用投影的的方法。把红外线投影到屏幕上。
本文来自,转载请注明本文网址:http://www./a/tongxinshuyu/article-46922-1.html
http://www./a/tongxinshuyu/article-46922-1.html
http://www./
http://www./a/tongxinshuyu/article-46922-1.html
多点触控多点触摸屏,使用两点或两点以上不同态势介质触摸屏幕表面,可以完美以实现图片缩放、旋转等各种多点触摸应用。并同时具备触点传统单点红外触摸屏的一切功能和优势。
焦点阅读:
发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论1.android 触摸事件侦听
安卓的用户交互方式包括两种,一种是点击交互,一种是触摸交互。点击交互就是手指按下抬起一个动作组。而触摸交互分为按下(down),移动(move),抬起(up)。
触摸事件侦听代码:输出触摸事件的三个动作:
我们用一个framlayout布局进行操作
import android.support.v7.app.AppCompatA
import android.os.B
import android.view.MotionE
import android.view.V
import android.widget.FrameL
public class MainActivity extends AppCompatActivity {
private FrameL
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
container = (FrameLayout) findViewById(R.id.container);
container.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()){
case MotionEvent.ACTION_DOWN:
System.out.println("action:down");
case MotionEvent.ACTION_MOVE:
System.out.println("action:move");
case MotionEvent.ACTION_UP:
System.out.println("action:up");
return true;
//remember to change this return to ture
注意:记得把onTouch方法的返回值改成true。
运行结果:
07-13 14:35:19.883 11720-.myapplication I/System.out: action:down
07-13 14:35:19.924 11720-.myapplication I/System.out: action:move
07-13 14:35:19.954 11720-.myapplication I/System.out: action:move
07-13 14:35:19.964 11720-.myapplication I/System.out: action:move
07-13 14:35:19.984 11720-.myapplication I/System.out: action:move
07-13 14:35:19.984 11720-.myapplication I/System.out: action:up
2.获取触摸的当前坐标
import android.support.v7.app.AppCompatA
import android.os.B
import android.view.MotionE
import android.view.V
import android.widget.FrameL
public class MainActivity extends AppCompatActivity {
private FrameL
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
container = (FrameLayout) findViewById(R.id.container);
container.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()){
case MotionEvent.ACTION_DOWN:
System.out.println("action:down");
case MotionEvent.ACTION_MOVE:
System.out.println(String.format("(%f,%f)",motionEvent.getX(),motionEvent.getY()));
case MotionEvent.ACTION_UP:
System.out.println("action:up");
return true;
//remember to change this return to ture
输出结果:
07-13 14:39:50.442 11720-.myapplication I/System.out: (366..000000)
07-13 14:39:50.452 11720-.myapplication I/System.out: (367..000000)
07-13 14:39:50.472 11720-.myapplication I/System.out: (367..500000)
07-13 14:39:50.482 11720-.myapplication I/System.out: (368..000000)
07-13 14:39:50.512 11720-.myapplication I/System.out: (369..000000)
07-13 14:39:50.532 11720-.myapplication I/System.out: (370..000000)
07-13 14:39:50.542 11720-.myapplication I/System.out: (371..000000)
07-13 14:39:50.582 11720-.myapplication I/System.out: (373..000000)
07-13 14:39:50.592 11720-.myapplication I/System.out: (374..000000)
07-13 14:39:50.612 11720-.myapplication I/System.out: (376..000000)
3.实现拖动控件
import android.support.v7.app.AppCompatA
import android.os.B
import android.view.MotionE
import android.view.V
import android.widget.FrameL
import android.widget.ImageV
public class MainActivity extends AppCompatActivity {
private FrameL
private ImageV
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
container = (FrameLayout) findViewById(R.id.container);
imv = (ImageView) findViewById(R.id.imv);
container.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()){
case MotionEvent.ACTION_DOWN:
System.out.println("action:down");
case MotionEvent.ACTION_MOVE:
//System.out.println(String.format("(%f,%f)",motionEvent.getX(),motionEvent.getY()));
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) imv.getLayoutParams();
lp.leftMargin = (int) motionEvent.getX();
lp.topMargin = (int) motionEvent.getY();
imv.setLayoutParams(lp);
case MotionEvent.ACTION_UP:
System.out.println("action:up");
return true;
//remember to change this return to ture
运行结果:
该图片无法显示!
4.获取多个触控点的坐标
import android.support.v7.app.AppCompatA
import android.os.B
import android.view.MotionE
import android.view.V
import android.widget.FrameL
import android.widget.ImageV
public class MainActivity extends AppCompatActivity {
private FrameL
private ImageV
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
container = (FrameLayout) findViewById(R.id.container);
imv = (ImageView) findViewById(R.id.imv);
container.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()){
case MotionEvent.ACTION_DOWN:
System.out.println("action:down");
case MotionEvent.ACTION_MOVE:
//System.out.println(String.format("(%f,%f)",motionEvent.getX(),motionEvent.getY()));
System.out.println("pointers count:"+motionEvent.getPointerCount());
//get the number of pointers
System.out.println(String.format("point1:(%f,%f)
point2:(%f,%f)",motionEvent.getX(0),motionEvent.getY(0),motionEvent.getX(1),motionEvent.getY(1)));
//when you put just one finger on the screen,there will be a exception,because there is not a getX(1).
case MotionEvent.ACTION_UP:
System.out.println("action:up");
return true;
//remember to change this return to ture
输出结果:
07-13 14:54:52.855 5804-.myapplication I/System.out: point1:(245..407410)
point2:(456..000000)
07-13 14:54:52.865 5804-.myapplication I/System.out: pointers count:2
07-13 14:54:52.865 5804-.myapplication I/System.out: point1:(244..000000)
point2:(455..000000)
07-13 14:54:52.885 5804-.myapplication I/System.out: pointers count:2
07-13 14:54:52.885 5804-.myapplication I/System.out: point1:(242..612915)
point2:(454..000000)
07-13 14:54:52.895 5804-.myapplication I/System.out: pointers count:2
07-13 14:54:52.905 5804-.myapplication I/System.out: point1:(242..000000)
point2:(453..000000)
07-13 14:54:52.915 5804-.myapplication I/System.out: pointers count:2
07-13 14:54:52.915 5804-.myapplication I/System.out: point1:(241..000000)
point2:(452..000000)
07-13 14:54:52.935 5804-.myapplication I/System.out: pointers count:2
07-13 14:54:52.935 5804-.myapplication I/System.out: point1:(241..000000)
point2:(452..000000)
5.根据手势动作实现图片的缩放(两点触控)&并且可以拖动&
import android.net.U
import android.support.v7.app.AppCompatA
import android.os.B
import android.view.MotionE
import android.view.V
import android.widget.FrameL
import android.widget.ImageV
import com.google.android.gms.appindexing.A
import com.google.android.gms.appindexing.AppI
import com.google.mon.api.GoogleApiC
public class MainActivity extends AppCompatActivity {
private FrameL
private ImageV
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
container = (FrameLayout) findViewById(R.id.container);
imv = (ImageView) findViewById(R.id.imv);
container.setOnTouchListener(new View.OnTouchListener() {
float cureentD
float lastDistance = -1; //the distance of two point can not be a minus,when the distance is -1 ,it means it's a initial value.
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
System.out.println("action:down");
case MotionEvent.ACTION_MOVE:
if (motionEvent.getPointerCount() &= 2) {//there must be two finger on the screen
float offsetX = motionEvent.getX(0) - motionEvent.getX(1);
float offsetY = motionEvent.getY(1) - motionEvent.getY(1);
cureentDistance = (float) Math.sqrt(offsetX * offsetX + offsetY * offsetY);
if (lastDistance & 0) {
lastDistance = cureentD
if (cureentDistance - lastDistance & 5) {
System.out.println("Zoom in");
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) imv.getLayoutParams();
lp.width = (int) (1.1f*imv.getWidth());
lp.height = (int) (1.1f*imv.getHeight());
imv.setLayoutParams(lp);
lastDistance = cureentD
} else if (lastDistance - cureentDistance & 5) {
System.out.println("Zoom out");
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) imv.getLayoutParams();
lp.width = (int) (0.9f*imv.getWidth());
lp.height = (int) (0.9f*imv.getHeight());
imv.setLayoutParams(lp);
lastDistance = cureentD
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) imv.getLayoutParams();
lp.leftMargin = (int) (motionEvent.getX()-(imv.getWidth()/2));
lp.topMargin = (int) (motionEvent.getY()-(imv.getHeight()/2));
imv.setLayoutParams(lp);
case MotionEvent.ACTION_UP:
System.out.println("action:up");
return true;
//remember to change this return to ture
阅读(...) 评论()10-2110-2110-2110-2110-2110-2110-2110-2110-2110-21最新范文01-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-01

我要回帖

更多关于 s7只能两点触控 的文章

 

随机推荐