水平滑动手势检测Android

时间:2014-03-05 17:11:29

标签: android fragment gesture swipe-gesture android-gesture

我已经创建了一个应用程序,其中有一个活动,其中包含使用tablistener实现的许多片段。

我现在想在片段之间添加水平滑动手势,但证明非常困难。

我的第一个问题是,有没有办法只检测基本活动中的滑动(即使叠加了片段)?

或者用简单的滑动手势来复制应用程序的最简单方法是什么?

下面的骨架代码:

< ------------------主要活动--------------->

public class MainActivity extends FragmentActivity implements TabListener {

ActionBar bar = getActionBar();
        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        Tab tab = bar.newTab();
        tab.setText("TAB1");
        tab.setTabListener(this);
        bar.addTab(tab);

        tab = bar.newTab();
        tab.setText("TAB2");
        tab.setTabListener(this);
        bar.addTab(tab);


}

public void onTabSelected(Tab tab, FragmentTransaction ft) {

        if (tab.getPosition() == 0) {

            Fragment newFragment = new Tab1Fragment();
            FragmentTransaction transaction = getFragmentManager().beginTransaction();
            transaction.replace(android.R.id.content, newFragment);
            transaction.addToBackStack(null);
            transaction.commit();
            vb.vibrate(50);
}

< ------------------ Tab 1 Fragment --------------->

public class Tab1Fragment extends Fragment {

public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        v = inflater.inflate(R.layout.tab1_fragment, null);
}
}

2 个答案:

答案 0 :(得分:0)

定义 ExampleFragment 类,扩展 Fragment 。如下所示的东西

public class ExampleFragment extends Fragment {

    private View categoryView;
    private ViewPager mViewPager;

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        categoryView = inflater.inflate(R.layout.viewpager, container, false);
        mViewPager = (ViewPager) categoryView.findViewById(R.id.pager);
        return categoryView;
    }

    public ViewPager returnViewPager() {
        return mViewPager;
    }
}

<强> main_fragment.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    tools:context=".ExampleFragmentActivity" >

    <fragment
        android:id="@+id/main_fragment"
        android:name="somepackage.ExampleFragment"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

</RelativeLayout>

然后在 ExampleFragmentActivity

的onCreate()中添加它
ExampleFragment fragment = (ExampleFragment) getSupportFragmentManager().findFragmentById(R.id.main_fragment);
mViewPager = fragment.returnViewPager();

fragmentManager = getSupportFragmentManager();

答案 1 :(得分:0)

正确的方法是使用FragmentPagerAdapter。您可以在此处找到包含示例的文档:http://developer.android.com/reference/android/support/v4/app/FragmentPagerAdapter.html