我的問題:有沒有在FragmentActivity中使用onTouchEvent的解決方法?如何使用FragmentActivity實現onTouchEvent
我的情況:我正在寫一個簡單的手電筒應用程序,我有一個FragmentActivity,用戶可以在顏色之間刷卡(整個屏幕只有一個顏色這個程序是個人進步)。我想能夠做一個onLongPress
事件的選項,一個onDoubleTap
事件隱藏導航欄,最重要的是觸摸事件來控制應用程序的亮度(我想讓用戶上下滾動亮度變化!,這裏的任何想法,歡迎對這個onFling
事件好)
我已經試過:我有一個GestureDetector
我的執行的SimpleOnGestureListener
的。我忽略了FragmentActivity
中的onTouchEvent
,但我剛剛發現這種方法從來沒有在FragmentActivity
中被調用過(我也在方法中測試了這個方法,並且它從未被調用過)。有沒有解決辦法?謝謝!
凸代碼:
MainActivity:
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>
我不要以爲你需要其他任何東西來回答這個問題,但是如果你願意的話,讓我知道。
能否請你分享代碼和該項目的佈局? – Soham
@Soham,查看更新。 – kentcdodds
由於'ViewPager'和/或'ViewPager'中的片段,活動中丟失的觸摸事件很可能發生。 Activity的'onTouchEvent'方法只有在其中的視圖沒有處理觸摸事件時纔會被調用。另外,如果我沒有弄錯,你也應該在'SimpleGestureListener'中實現'onDown'來返回'true'。 – Luksprog