【问题标题】:Horizontal swipe gesture detection Android水平滑动手势检测Android
【发布时间】:2014-03-06 01:23:59
【问题描述】:

我已经创建了一个应用程序,该应用程序具有一个 Activity,该 Activity 具有许多使用 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);
}

public class Tab1Fragment extends Fragment {

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

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

【问题讨论】:

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


    【解决方案1】:

    定义了一个扩展 Fragment 的 ExampleFragment 类。如下图所示

    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;
        }
    }
    

    ma​​in_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();
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-24
        • 2018-01-14
        • 2011-07-23
        • 2012-08-28
        • 2021-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多