私の質問: FragmentActivity で onTouchEvent を使用するための回避策はありますか?
私の状況:私は単純な懐中電灯アプリを書いており、ユーザーが色をスワイプできる FragmentActivity を持っています (画面全体が 1 つの色です。このアプリは個人的な改善のためです)。onLongPress
オプションのonDoubleTap
イベント、ナビゲーションバーを非表示にするイベント、そして最も重要なのは、アプリの明るさを制御するタッチイベントを実行できるようにしたい (ユーザーが明るさの変更のために上下にスクロールできるようにしたい、ここにアイデアがある場合)大歓迎です!onFling
イベントはこれに適していますか?)
私が試したこと:私は のGestureDetector
実装でを持っていSimpleOnGestureListener
ます。で をオーバーライドしonTouchEvent
ましたFragmentActivity
が、このメソッドが a で呼び出されることはないことがわかりましたFragmentActivity
(メソッドで a を使用してこれもテストしましたLog.print
が、呼び出されることはありません)。回避策はありますか? ありがとう!
顕著なコード:
主な活動:
public class MainActivity extends FragmentActivity {
private GestureDetector gestureDetector;
private FragmentPagerAdapter mAdapter;
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gestureDetector = new GestureDetector(getApplicationContext(), new MyGestureListener(getWindow()));
mAdapter = new ColorFragmentAdapter(getSupportFragmentManager(), getDefaultColorList());
ViewPager pager = (ViewPager) super.findViewById(R.id.viewpager);
pager.setAdapter(mAdapter);
pager.setCurrentItem(Math.round(mAdapter.getCount() / 2)); //Set current fragment to middle fragment
}
@Override
public boolean onTouchEvent(MotionEvent event) {
print("Sending touch event to gestureDetector.");
//This line is never run.
return gestureDetector.onTouchEvent(event);
}
/**
* Prints the given object to the log with the debug priority with the tag FLASHLIGHT
*
* @param object
*/
public static void print(Object object) {
Log.println(Log.DEBUG, "FLASHLIGHT", object.toString());
}
}
MyGestureListener :
public class MyGestureListener extends SimpleOnGestureListener {
private final Window window;
public MyGestureListener(Window window) {
super();
this.window = window;
}
@Override
public void onLongPress(MotionEvent e) {
//onLongPress code
}
@Override
public boolean onDoubleTap(MotionEvent e) {
//onDoubleTap code
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
//onFling cod
}
}
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"
>
<android.support.v4.view.ViewPager
android:id="@+android:id/viewpager"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
質問に答えるのに他に何も必要ないと思いますが、もしあれば教えてください。