如何实现Fragment的滑动?

发布于 2020-01-11 22:52:40
关注者
0
被浏览
3947
1 个回答
  • 面试哥
    面试哥 2020-01-11
    为面试而生,有面试问题,就找面试哥。

    将Fragment与viewpager绑定,通过viewpager中的touch事件,会进行move事件的滑动处理。

    Fragment布局

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/holo_red_light">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="Fragment One" />
        </LinearLayout>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/holo_red_light">
        <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="Fragment Two" />
        </LinearLayout>
    Fragment代码:
    
    public class FragmentOne extends Fragment {
            @Nullable
            @Override
            public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
               return inflater.inflate(R.layout.fragment_one, container, false);
    }
    
    }
    public class FragmentTwo extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
       return inflater.inflate(R.layout.fragment_Two, container, false);
    }
    }
    

     

    viewpager布局:

     

    xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.spreadtrumshitaoli.fragmentscroll.MainActivity">
    <android.support.v4.view.ViewPager
        android:id="@+id/view_pager"
        android:layout_height="match_parent"
        android:layout_width="match_parent"/>
    </android.support.constraint.ConstraintLayout>
    

    MainActivity代码:

     

    public class MainActivity extends AppCompatActivity {
    private FragmentOne fragmentOne;
    private FragmentTwo fragmentTwo;
     
    private ViewPager viewPager;
     
    private ArrayList<Fragment> mFragmentList = new ArrayList <Fragment>();
    private FragmentPagerAdapter fragmentPagerAdapter;
     
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
     
        init();
     
    }
     
    private void init() {
     
        viewPager = (ViewPager) findViewById(R.id.view_pager);
        fragmentOne = new FragmentOne();
        fragmentTwo = new FragmentTwo();
     
        mFragmentList.add(fragmentOne);
        mFragmentList.add(fragmentTwo);
        
        //将adapter和fragment绑定在一起。
            fragmentPagerAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) {
                @Override
                public Fragment getItem(int i) {
                    return mFragmentList != null ? mFragmentList.get(i) : null;
                }
                @Override
            public int getCount() {
                return mFragmentList != null ? mFragmentList.size() : 0;
            }
        };
        viewPager.setAdapter(fragmentPagerAdapter);
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int i, float v, int i1) {
     
            }
     
            @Override
            public void onPageSelected(int i) {
                //TODO:
            }
     
            @Override
            public void onPageScrollStateChanged(int i) {
     
            }
        });
     
    }
       } 
    

    在这段代码中,我们

    首先fragment以及viewpager都实例化;

    再将fragment添加到泛型arraylist里;

    最后将带有fragment的arraylist和adapter绑定。

知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看