onFling()
Gestureのイベントをオンに設定しましScrollView
たが、ScrollViewでは機能しません。
package com.doubletap;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.GestureDetector.OnDoubleTapListener;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
import android.widget.TextView;
public class DoubleTapActivity extends Activity implements OnGestureListener
{
private GestureDetector gd;
private TextView tvTap;
String TAG = getClass().getSimpleName();
private static final int SWIPE_MIN_DISTANCE = 120;
private static final int SWIPE_MAX_OFF_PATH = 250;
private static final int SWIPE_THRESHOLD_VELOCITY = 200;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tvTap = (TextView)findViewById(R.id.tvTap);
gd = new GestureDetector(this);
gd.setOnDoubleTapListener(new OnDoubleTapListener()
{
@Override
public boolean onDoubleTap(MotionEvent e)
{
return false;
}
@Override
public boolean onDoubleTapEvent(MotionEvent e)
{
return false;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e)
{
return false;
}
});
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
return gd.onTouchEvent(event);//return the double tap events
}
@Override
public boolean onDown(MotionEvent e)
{
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
{
try {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
{
return false;
}
if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
tvTap.setText("Flip Right to Left");
Log.v(TAG, "Right to Left");
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
tvTap.setText("Flip Left to Right");
Log.v(TAG, "Left to Right");
}
} catch (Exception e)
{
}
return false;
}
@Override
public void onLongPress(MotionEvent e)
{
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
{
return false;
}
@Override
public void onShowPress(MotionEvent e)
{
}
@Override
public boolean onSingleTapUp(MotionEvent e)
{
return false;
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="@string/hello" android:textStyle="bold" /> <TextView android:id="@+id/tvTap" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dip" > </TextView> <TextView android:id="@+id/tvTapEvent" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dip" > </TextView> <ScrollView android:id="@+id/scroll" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Button1" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Button2" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Button3" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Button4" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Button5" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Button6" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Button7" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Button8" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Button9" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Button10" /> </LinearLayout> </ScrollView>
ScrollviewにonFling()イベントを実装する方法を知っている人はいますか?