Обнаружение жестов горизонтального смахивания Android

Я уже создал приложение с одним действием, в котором много фрагментов реализовано с помощью 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);
}

‹------------------Вкладка 1 Фрагмент---------------->

public class Tab1Fragment extends Fragment {

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

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

person user2229747    schedule 05.03.2014    source источник


Ответы (2)


Определите класс 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>

А затем добавьте это в onCreate() для ExampleFragmentActivity.

ExampleFragment fragment = (ExampleFragment) getSupportFragmentManager().findFragmentById(R.id.main_fragment);
mViewPager = fragment.returnViewPager();

fragmentManager = getSupportFragmentManager();
person VikramV    schedule 05.03.2014

Правильный способ сделать это — использовать FragmentPagerAdapter. Вы можете найти документы с примерами здесь: http://developer.android.com/reference/android/support/v4/app/FragmentPagerAdapter.html

person Ripityom    schedule 05.03.2014