我想检测屏幕块中的投掷动作.我正在使用以下代码.
public class MyinfoActivity extends Activity implements OnGestureListener {
@Override
public void onCreate(Bundle savedInstanceState) {
..........
..........
gestureScanner = new GestureDetector(this);
resBlock = (TableRow) findViewById(R.id.ResBlock);
gestureScanner = new GestureDetector(this);
}
@Override
public boolean onTouchEvent(MotionEvent me){
Log.d(null,"Touch");
if (gestureScanner.onTouchEvent(me))
return gestureScanner.onTouchEvent(me);
else
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2,
float velocityX, float velocityY) {
Log.d(null,"Fling");
............
............
}
@Override
public boolean onDown(MotionEvent arg0) {
return false;
}
@Override
public void onLongPress(MotionEvent e) {}
@Override
public boolean onScroll(MotionEvent e1, …
Run Code Online (Sandbox Code Playgroud) 我搜索了如何在点击地图时获取位置的坐标.但是,大多数(如果不是全部)示例都需要MapView
作为参数.例如:
public boolean onTap(GeoPoint p, MapView map){
if ( isPinch ){
return false;
}else{
Log.i(TAG,"TAP!");
if ( p!=null ){
handleGeoPoint(p);
return true; // We handled the tap
}else{
return false; // Null GeoPoint
}
}
}
@Override
public boolean onTouchEvent(MotionEvent e, MapView mapView)
{
int fingers = e.getPointerCount();
if( e.getAction()==MotionEvent.ACTION_DOWN ){
isPinch=false; // Touch DOWN, don't know if it's a pinch yet
}
if( e.getAction()==MotionEvent.ACTION_MOVE && fingers==2 ){
isPinch=true; // Two fingers, def a pinch
}
return super.onTouchEvent(e,mapView); …
Run Code Online (Sandbox Code Playgroud) android location touch-event mapfragment google-maps-android-api-2
在我正在设计的应用程序中,我有一个MKMapView
覆盖它(自定义MKPolylines
btw),我希望能够检测这些覆盖上的触摸事件,并为每个覆盖分配特定的操作.有人可以帮我这个吗?谢谢 !
贝尼亚
我的应用程序的上半部分VideoView
有一个MediaController
下面的.下半部分是带有一些按钮的图像.虽然MediaController
可见,但下面的按钮不可点击.它就像是MediaController
可见的,它会拦截所有其他触摸事件,即使它们不在范围内MediaController
.
有什么想法吗?
我有一个子类UIView
上的顶部UITableView
.我正在使用它UITableView
来显示一些数据,同时,我想覆盖手指后面的动画(例如,留下一条线索).
如果我是正确的,我需要的触摸事件要处理两个由UIView
子和UITableView
.我怎样才能做到这一点?是否可以touchesMoved
在UIView子类上触发,然后再触发UITableView
?
非常感谢你的帮助.
我读了很多关于缩放WebViews主题的门票,并没有找到我的案例的答案.
这是我的设置:
我通常使用这些设置的自定义webview:
getSettings().setBuiltInZoomControls(false);
getSettings().setSupportZoom(false);
getSettings().setUseWideViewPort(true);
getSettings().setLoadWithOverviewMode(true);
Run Code Online (Sandbox Code Playgroud)
让我在这里注意,我依赖于OverviewMode以及WideViewPort来扩展我的WebView.
我还覆盖我的OnTouchEvent,并将所有合适的事件委托给Gesture检测器:
@Override
public boolean onTouchEvent(MotionEvent event) {
if (gestureDetector.onTouchEvent(event)) return true;
return super.onTouchEvent(event);
}
Run Code Online (Sandbox Code Playgroud)
以下是其侦听器实现,它拦截所有doubleTap事件:
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
// Do nothing!
return true;
}
@Override
public boolean onDoubleTap(MotionEvent e) {
// Do nothing!
return true;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
// Do nothing!
return true;
}
Run Code Online (Sandbox Code Playgroud)
另外我覆盖了与zoom有关的这两个WebView方法:
@Override
public boolean zoomIn() {
return true;
}
@Override
public boolean zoomOut() {
return true;
}
Run Code Online (Sandbox Code Playgroud)
除了所有这些选项之外,某个抽头频率将导致我的webview放大/缩小.我没有找到一个禁用这种缩放的选项,此Zoom的MotionEvent似乎不适用于GestureDetector,并且覆盖zoomIn()zoomOut()方法也没有效果.
任何人都可以帮助我避免这种双击缩放WebView的行为吗?
我正在构建一些主要用于平板电脑的东西,用户可以点击屏幕上的项目并应用它.这是我到目前为止:
问题:
我尝试过很多东西,但都没有.我尝试过的最简单的(失败的)是这样的:
var dragging = false;
$(".items").on("touchmove", function(){
dragging = true;
});
$('.items').on("click touchend", function(event){
if (dragging = true){
}
else{
$('.items').removeClass('selected');
$(this).addClass('selected');
}
});
Run Code Online (Sandbox Code Playgroud) 我的应用程序,我有一个元素,要求用户在屏幕上移动它,为此我使用RelativeLayout和onTouchListener.
那我遇到的问题是,我的脑海中onTouchListener
,我得到一些奇怪的结果getX()
和getY()
.
我将以下代码行添加到我的onTouch()
- > ACTION_MOVE
块中:
Log.v("example", "Touch: {x:" + event.getX() + " } {y:" + event.getY() + "}");
以下是我的LogCat结果.
04-29 03:16:11.000:V/myApp(24188):触摸!
04-29 03:16:11.057:V/myApp(24188):触摸:{x:69.78699} {y:107.774216} 04-29
03:16:11.103:V/myApp(24188):触摸:{x:77.86926 } {y:173.37648} 04-29
03:16:11.158:V/myApp(24188):触摸:{x:69.78699} {y:108.781845} 04-29
03:16:11.205:V/myApp(24188):触摸:{x:77.86926} {y:174.38597} 04-29
03:16:11.463:V/myApp(24188):触摸:{x:69.78699} {y:109.64778} 04-29
03:16:11.502:V/myApp(24188):触摸:{x:77.86926} {y:175.62172} 04-29
03:16:11.596:V/myApp(24188):触摸:{x:69.23099} {y:109.40666} 04-29
03 :16:11.654:V/myApp(24188):Touch Up!
如你所见,我的手指在一条直线上非常缓慢地移动,我得到一个跳跃的结果,其中正确的坐标实际上是每隔一行.
当我将其拖过屏幕时,这导致我的视图在所需位置和偏移位置之间跳回和第四.
我已经添加了检查以确保我只创建一个单独的元素,并且不会从除此单个视图之外的任何位置调用此侦听器.
有没有其他人之前看过这个问题,并且对我能做些什么来解决它有任何见解?
编辑
View.OnTouchListener onTouch = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: …
Run Code Online (Sandbox Code Playgroud) 几年来我一直在假设如果超视图及其子视图都具有手势识别器,子视图将首先接收触摸并取消超视图的手势.直到iOS 7,这个假设从未让我失望,允许我向子视图添加手势,确信superview的手势不会干扰.但是在iOS 7中,超级视图将首先随机接收触摸并取消子视图的手势.这种情况很少发生,这使问题难以发现.
我第一次经历这个问题,因为按钮无法UITapGestureRecognizer
再次使用...,很少.通常按钮会工作,直到它们没有.让你有点质疑你的理智.所以我自己动手TapGestureRecognizer
,发现superview水龙头有时会取消他们的子视频水龙头.它在任何以前版本的iOS中都没有这样做,但我想知道这种行为是否从未被承诺过.
我认为子视图的手势应该取消它的superview的手势(除非委托另有指定).这是错的还是这个错误?
请注意:我不是问如何处理这种情况.我问是否有人知道我的假设是否不正确.我已经重新安排视图,动态添加/删除手势,并创建相当复杂的实现gestureRecognizer:shouldReceiveTouch:
来纠正这种情况.这不好玩,但我可以解决这个问题.
我正在使用特定的中间件(不重要)在Android中开发一个电视远程模拟器应用程序.
在音量按钮(音量+和音量 - )的情况下,我要做的是在按下按钮时重复发送"音量调高"信号.
这就是我最后尝试的(其中一个按钮的代码,另一个必须相同,除了名称):
声明了一个布尔变量
boolean pressedUp = false;
Run Code Online (Sandbox Code Playgroud)使用以下AsyncTask声明了一个内部类:
class SendVolumeUpTask extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... arg0) {
while(pressedUp) {
SendVolumeUpSignal();
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
}
将侦听器添加到按钮:
final Button buttonVolumeUp = (Button) findViewById(R.id.volup);
buttonVolumeUp.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if(pressedUp == false){
pressedUp = true;
new SendVolumeUpTask().execute();
}
case MotionEvent.ACTION_UP:
pressedUp = false;
}
return true;
}
});
Run Code Online (Sandbox Code Playgroud)我也尝试使用简单的线程,如在Increment-Decrement计数器中按下按钮但不起作用.该应用程序可以很好地用于其余按钮(通道等),但完全忽略了音量变化.
touch-event ×10
android ×6
ios ×2
touch ×2
button ×1
click ×1
gesture ×1
ios7 ×1
java ×1
javascript ×1
jquery ×1
location ×1
mapfragment ×1
mkmapview ×1
mkpolyline ×1
motionevent ×1
onfling ×1
overlay ×1
touchesmoved ×1
touchmove ×1
uievent ×1
webview ×1
zoom ×1