viewpager+Fragment实现简单滑动切换效果

来源:互联网 发布:淘宝山寨手机店铺 编辑:程序博客网 时间:2024/05/18 02:10

实现的是最简单的viewpager+fragment进行的操作,当然你也可以实现像百度新闻那种联动的的效果,加上一个展示分类的控件,叫什么我忘了。。。。
先来看看效果
这里写图片描述

就是一个最基础的形式。

下面是代码:
首先在布局中进行viewpager控件的引入:

<android.support.v4.view.ViewPager        android:layout_width="match_parent"        android:layout_height="match_parent"        android:id="@+id/viewpager">    </android.support.v4.view.ViewPager>

然后创建好你的fragment对象,这里由于是测试,所以简单创建了一个Fragment的样式:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical" android:layout_width="match_parent"    android:layout_height="match_parent">    <ListView        android:layout_width="match_parent"        android:background="#ffee00"        android:id="@+id/listview1"        android:layout_height="match_parent">    </ListView></LinearLayout>

在fragment上加载布局:

package app.frag_viewpagerdemo;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.ListView;/** * Created by Administrator on 2015/8/14 0014. */public class FragmentOne extends Fragment {    private ListView listView;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        View view=inflater.inflate(R.layout.view1,null);       listView= (ListView) view.findViewById(R.id.listview1);        ArrayAdapter<String> arrayAdapter=new ArrayAdapter<String>(getActivity(),android.R.layout.simple_expandable_list_item_1);        for (int i=0;i<30;i++)        {            arrayAdapter.add("Fragment1"+i);        }        listView.setAdapter(arrayAdapter);        return  view;    }}

然后进行viewpager的pageadapter的适配

注意:这里继承FragmentPageAdapter进行配置,比较方便,当然你也可以继承PageAdapter写。

package app.frag_viewpagerdemo;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.view.View;import java.util.List;/** * Created by Administrator on 2015/8/14 0014. */public class MyPageAdapter extends FragmentPagerAdapter {    private List<Fragment> fragmentList;    public MyPageAdapter(FragmentManager fm,List<Fragment> fragmentList) {        super(fm);        this.fragmentList=fragmentList;    }    //得到Item,即所对应的fragment    @Override    public Fragment getItem(int position) {        return fragmentList.get(position);    }    @Override    public int getCount() {        return fragmentList.size();    }}

Activity代码:

public class MainActivity extends AppCompatActivity {    private ViewPager viewPager;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        viewPager= (ViewPager) findViewById(R.id.viewpager);        FragmentManager fm=getSupportFragmentManager();        initData();        MyPageAdapter myPageAdapter=new MyPageAdapter(fm,fragments);        viewPager.setAdapter(myPageAdapter);        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {            @Override            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {            }            @Override            public void onPageSelected(int position) {            }            @Override            public void onPageScrollStateChanged(int state) {            }        });    }    private List<Fragment> fragments;    private void initData() {        fragments=new ArrayList<>();        fragments.add(new FragmentOne());        fragments.add(new FragmentTwo());    }}

你可以在

 @Override            public void onPageSelected(int position) {            }

中进行当viewpager滑动变化时进行相关的操作,比如标题的变化等。

0 0