Articles of ontouchevent

Android onTouchEvent坐标跳过

我的应用程序,我有一个要求用户在屏幕上移动它的元素,并执行此操作我使用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):Touch:{x:69.78699} {y:107.774216} 04-29 03:16:11.103:V / myApp(24188):Touch:{x:77.86926} {y:173.37648} 04-29 03:16:11.158:V / myApp(24188):Touch:{x:69.78699} {y:108.781845} 04-29 03:16:11.205:V / myApp(24188):Touch:{x:77.86926} {y:174.38597} 04-29 03:16:11.463:V / myApp(24188):Touch:{x:69.78699} {y:109.64778} 04-29 03:16:11.502:V / myApp(24188):Touch:{x:77.86926} {y:175.62172} […]

MyGestureDetector扩展了SimpleOnGestureListener

我正在实现一个扩展SimpleOnGestureListener的MyGestureDetector。 我从以下地址借用了该课程: http : //www.codeshogun.com/blog/tag/view-flipper/ ,允许在ViewFlipper中进行滑动操作。 我不能如果在模拟器上运行。 有什么build议么? 以下是所有的代码: main.java import android.app.Activity; import android.os.Bundle; import android.view.GestureDetector; import android.view.KeyEvent; import android.view.MotionEvent;import android.view.View; import android.view.GestureDetector.SimpleOnGestureListener; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.webkit.WebView; import android.widget.ViewFlipper; public class main extends Activity { private static final int SWIPE_MIN_DISTANCE = 120; private static final int SWIPE_MAX_OFF_PATH = 250; private static final int […]

Android:似乎无法正确使用MotionEvent.ACTION_MOVE

我对Android编程和Java相当陌生(尽pipe我对C#有一些经验,所以这很有帮助)。 在这个时候,我正在蠢蠢欲动,想知道一切是如何运作的。 我做了一个实现onTouchListener的活动。 我已经覆盖onTouch并在event.getAction()上有一个开关: public boolean onTouch(View v, MotionEvent event) { float x; float y; switch (event.getAction()) { case MotionEvent.ACTION_DOWN: // gets called { x = event.getX(); y = event.getY(); circle c = new circle(this, x, y, 10, 0xFFFFFF); _main.addView(c, tapCount++); break; } case MotionEvent.ACTION_MOVE: // doesnt seem to do anything { x = event.getX(); […]

将Android NestedScrollView水平滑动传递给父视图

我试图做一个左右滑动卡系统(如Tinder),卡上有一个NestedScrollView。 目标是,如果用户只是上下滑动,NestedScrollView将滚动,但如果用户向左或向右滑动,则卡将使用该滑动。 <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="4dp" card_view:cardUseCompatPadding="true"> <android.support.v4.widget.NestedScrollView android:id="@+id/nested_scroll_view" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="4dp"> <TextView android:id="@+id/text_view" android:layout_width="match_parent" android:layout_height="wrap_content" /> <android.support.v7.widget.RecyclerView android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> </android.support.v4.widget.NestedScrollView> </android.support.v7.widget.CardView> (我使用的卡片库是https://github.com/wenchaojiang/AndroidSwipeableCardStack ) compile 'com.github.wenchaojiang:AndroidSwipeableCardStack:0.1.5' 当我在NestedScrollView上放一个margin_top并在这个空白区域内触摸时,CardStack可以正确地抓住我的input,并且卡片向左或向右移动,但是如果我在其他地方触摸并拖动,NestedScrollView会抓住我的input而不pipe方向如何。 我应该扩展/覆盖哪个类/ onTouchEvent来获得这种效果,或者可能会有一个更简单的方法? 谢谢!

WebView摆脱双击缩放。

我读了很多关于放大WebViews的话题,没有find答案。 这是我的设置: 我通常使用这些设置的自定义网页视图: getSettings().setBuiltInZoomControls(false); getSettings().setSupportZoom(false); getSettings().setUseWideViewPort(true); getSettings().setLoadWithOverviewMode(true); 让我在这里注意,我依靠OverviewMode,以及在WideViewPort以扩展我的WebView。 我也覆盖我的OnTouchEvent,并委托所有合适的事件到手势检测器: @Override public boolean onTouchEvent(MotionEvent event) { if (gestureDetector.onTouchEvent(event)) return true; return super.onTouchEvent(event); } 这里是它的侦听器实现拦截所有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 […]

按下button时如何重复执行某些操作?

我正在使用特定的中间件(不重要)在Android上开发电视远程模拟器应用程序。 在音量button(音量+和音量 – )的情况下,我想要做的是发送“音量提高”信号,而其button被按下。 这就是我最后尝试的(代码中的一个button,其他必须是除了名称相同): 声明了一个布尔variables boolean pressedUp = false; 用下面的AsyncTask声明一个内部类: class SendVolumeUpTask extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void… arg0) { while(pressedUp) { SendVolumeUpSignal(); } return null; } } 将侦听器添加到button: 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: […]

处理Recyclerview – android内的项目的触摸事件

我正在构build一个简单的自定义布局(文本视图和开关)和一个自定义适配器recyclerview。 我的问题是我无法处理交换机的点击事件(这使得它切换其状态),我已经build立了一个触摸监听器为recyclerview,它每次点击开关时触发。 经过大量的尝试,开关触摸侦听器也会触发,但是如果点击了开关,我想禁用recyclerView触摸事件。 这是我的布局代码: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="60.0dip" android:layout_weight="1.0" android:orientation="horizontal" android:paddingLeft="16dp"> <TextView android:id="@+id/category_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentStart="false" android:layout_centerVertical="true" android:layout_gravity="center_vertical" android:text="Category Name" android:textAppearance="?android:textAppearanceLarge" /> <android.support.v7.widget.SwitchCompat android:id="@+id/category_switch" android:layout_width="80dp" android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_gravity="center_vertical" android:checked="true" android:clickable="true" android:focusable="false" android:focusableInTouchMode="false" android:paddingRight="16dp" /> </RelativeLayout> 这是我的适配器代码: public CategoryViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View row = layoutInflater.inflate(R.layout.single_row_category, parent, false); CategoryViewHolder holder = […]

为什么我的系统覆盖捕捉所有触摸(不可能与底层视图交互)

我有一个服务启动系统覆盖。 当覆盖层是可见的,我希望它是可触摸/检测触摸,但我想保留与它背后的屏幕(后面我的意思是底层的活动,旁边的覆盖例如)的交互。 我的覆盖是128x128px的位图/ PNG。 它被绘制,当我点击它,我收到触摸! 日志,这是很好的。 但是,当我点击屏幕的任何其他部分(除了覆盖),我得到了触摸! 日志和下面的屏幕没有交互是可能的。 这里是我的代码的一部分: 主要活动来启动服务 buttonStart.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // start Service and return to Homescreen Intent i = new Intent(MainActivity.this, MyService.class); startService(i); Intent newActivity = new Intent(Intent.ACTION_MAIN); newActivity.addCategory(Intent.CATEGORY_HOME); newActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(newActivity); } }); 服务/显示覆盖 @Override public int onStartCommand(Intent intent, int flags, int startId) { myOverlay […]

Android OnGestureListener Fling未检测到

我想在屏幕上的一个块中检测到反弹动作。 我正在使用下面的代码。 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 […]

如何使用MapFragment(而不是MapView)获取地图的坐标?

我已经search了如何在地图点击时获取位置的坐标。 但是,大多数(如果不是全部)例子都需要一个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; // […]