我试图在我的应用程序中实现多点触控时,我以某种方式得到意想不到的结果.我永远不会获得多个指针的数据.我的手机上的多点触控确实有效,因为我可以使用GestureDetector捏缩放浏览器并检测捏合手势,但action=0 pointers=1无论我用多少手指触摸屏幕,下面的样本都会打印出来.
我需要在配置/ AndroidManifest或Activity创建中有什么东西
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.ll1).setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.d("TAG","onTouch action="+event.getAction()+" pointers="+event.getPointerCount());
return false;
}
});
}
Run Code Online (Sandbox Code Playgroud)
布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ll1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
</LinearLayout>
Run Code Online (Sandbox Code Playgroud) 请考虑以下代码:
canvas.addEventListener('touchstart', function(event) {
console.log('start');
});
Run Code Online (Sandbox Code Playgroud)
当我同时用两根手指敲击时,我有以下输出(因为打印两次很酷):
I/SnapScrollController(26508): setSnapScrollingMode case-default no-op
I/chromium(26508): [INFO:CONSOLE(69)] "start", source: file:///android_asset/index.html (69)
I/chromium(26508): [INFO:CONSOLE(69)] "start", source: file:///android_asset/index.html (69)
Run Code Online (Sandbox Code Playgroud)
但是当我同时使用两个以上的手指时,我的结果相同,我做错了什么?我被期待的日志"开始"与我使用的手指一样多次.
在另一边touchmove,touchend效果很好.
我在这里上传了代码
我想知道.Net 3.5上的WPF是否支持笔记本电脑的触控或多点触控?感谢是否有一些很酷的演示来显示效果.
我正在使用VSTS2008 + C#.
乔治,提前谢谢
我有一个应用程序,我需要测试3个手指触摸和2个手指触摸,是否有一个免费的应用程序,允许我使用3个手指而不是仅限于使用2个手指,如在模拟器?
我只是想知道是否有某种类使用android 2.1的多点触控功能.具体来说,我正在尝试实现双指缩放,并想知道我是否总是要测量两个触摸事件之间的距离并自己计算缩放级别?
谢谢,克里斯
我现在不得不放弃这个纯粹的学术问题,但我非常希望能在近期看到解决方案.
由于Android处理多点触控的方式,你可以(我认为)只在一个视图中捕获事件.我已经尝试了一个hack来解决这个容器布局,拦截事件通过查看coords并更改动作本身来查看它所属的View,这样组件看起来就是单个触摸事件.我撰写此类事件然后将其路由到视图.
有没有人有更好的想法这样做?
如果有人想要我上面描述的代码只是问我发布它!
玩得开心,祝你好运:D JQCorreia
public class Container extends LinearLayout
{
LinkedHashMap<Integer,View> pointers = new LinkedHashMap<Integer,View>();
ArrayList<View> views = new ArrayList<View>();
public Container(Context context) {
super(context);
initialize(context);
}
public Container(Context context, AttributeSet attrs) {
super(context, attrs);
initialize(context);
}
private void initialize(Context context)
{
}
@Override
public void onLayout(boolean changed, int l, int t, int r, int b)
{
super.onLayout(changed, l, t, r, b);
views = LayoutUtil.flattenLayout(this,false);
for(View foo : views)
{
Rect rect = new Rect();
foo.getGlobalVisibleRect(rect);
}
} …Run Code Online (Sandbox Code Playgroud) 我可以获得其他指针的MotionEvent.getRawX()/ getRawY()的值吗?
api说使用getRawX/getRawY来获取原始的原始X/Y坐标,但它仅用于1个指针(最后一个触摸指针),是否可以获得其他指针的原始X/Y坐标?
我试图在系统覆盖视图上获得多个触摸事件,但我只接收 MotionEvent.ACTION_OUTSIDE事件.
是否有任何可能的方法在系统覆盖上获得多个触摸事件?
任何示例或链接都会非常有用.
据我所知,从版本3.4开始,GTK +增加了多点触控支持.我不清楚的是这是否仅适用于手机/平板电脑等触摸屏,还是适用于Apple风格的触控板(Ubuntu/Unity和OS X在触控板上使用多点触控手势的方式).
我也很难找到如何实现手势以及如何跟踪多点触控事件的示例.
有没有关于如何使用GTK(或类似Clutter之类的东西)实现多点触控的好例子?
我正在尝试编写一个多点触控桌面应用程序.我有一个基于QML的应用程序,现在我尝试同时拖动多个QML元素.
我尝试使用MultiPointTouchArea,但这不起作用.所以我有2个元素.例如,2张图片,应该由两个不同的人同时拖动.
如果我定义包含MultiPointTouchArea和touchPoint每个图片链接一个的矩形,则第一个触摸事件移动第一个图片,第二个触摸事件移动第二个图片.
就像在这个示例代码中:
Rectangle {
width: 400; height: 400
MultiPointTouchArea {
anchors.fill: parent
touchPoints: [
TouchPoint { id: point1 },
TouchPoint { id: point2 }
]
}
Rectangle {
width: 30; height: 30
color: "green"
x: point1.x
y: point1.y
}
Rectangle {
width: 30; height: 30
color: "yellow"
x: point2.x
y: point2.y
}
}
Run Code Online (Sandbox Code Playgroud)
这不是我想要的.如果他们同时被触摸和拖动,我希望他们移动,而不会互相干扰,也没有触摸事件的顺序.这可能在qml中吗?或者我必须编写C++函数代码?
我希望你理解我的问题.