ViewPager:Fragment的转换

    xiaoxiao2024-05-07  9

    ViewPager是一个可以实现多个图片、Fragment手指滑动,自动轮播的类。

    1.首先要找到ViewPager的类名在Android Private Libraries里找到View包里找到ViewPager.class,复制限定名

    2.之后再布局写入ViewPager

    <android.support.v4.view.ViewPager         android:layout_width="wrap_content"         android:layout_height="0dp"         android:layout_weight="1"         android:id="@+id/vp"/>

    3.准备好几个图片和Fragment

    图片比较简单,直接加入一个int[]钟;

    Fragment比较复杂把几个写好的Fragment加入ArrayList集合里,写好FragmentStatePagerAdapter适配器类:

    public class fragment extends FragmentStatePagerAdapter { ArrayList<Fragment>list; public fragment(FragmentManager fm,ArrayList<Fragment>list) { super(fm); this.list=list; } @Override public Fragment getItem(int arg0) { // TODO 自动生成的方法存根 return list.get(arg0); } @Override public int getCount() { // TODO 自动生成的方法存根 return list.size(); } }

    4.调用适配器类  简单的Fragment切换就完成了

    fragment fragment = new fragment(getSupportFragmentManager(), list); vpPager.setAdapter(fragment);

    ***********************以下是完整代码**************************fragment的切换和底部按键文字图片的变化

    public class MainActivity extends FragmentActivity { int[] ii={R.id.b1,R.id.b2,R.id.b3}; RadioButton [] groupButtons=new RadioButton [ii.length]; ArrayList<Fragment>list=new ArrayList<Fragment>(); private fragment1 fragment1; private fragment2 fragment2; private fragment3 fragment3; private ViewPager vpPager;     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         vpPager = (ViewPager) findViewById(R.id.vp);         initList();         initView();

    //2.把fragment适配器类调用         fragment fragment = new fragment(getSupportFragmentManager(), list);         vpPager.setAdapter(fragment);

    //4.切换界面的设置         vpPager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { // TODO 自动生成的方法存根 for (int i = 0; i< groupButtons.length; i++) { if (arg0==i) { groupButtons[arg0].setTextColor(Color.RED); groupButtons[arg0].setChecked(true); }else { groupButtons[i].setTextColor(Color.BLACK); groupButtons[i].setChecked(false); } } } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { // TODO 自动生成的方法存根 } @Override public void onPageScrollStateChanged(int arg0) { // TODO 自动生成的方法存根 } });     } //3.设置布局底部按键点击事件的方法 private void initView() { // TODO 自动生成的方法存根 for (int i = 0; i < ii.length; i++) { final RadioButton  rr=(RadioButton ) findViewById(ii[i]); rr.setTag(i); rr.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO 自动生成的方法存根 vpPager.setCurrentItem((Integer) rr.getTag()); } }); groupButtons[i]=rr; }

    //改变按键文字的颜色 groupButtons[0].setTextColor(Color.RED);

    //是否是点击状态 groupButtons[0].setChecked(true); } //1.Fragment加入集合 private void initList() { fragment1 = new fragment1(); fragment2 = new fragment2(); fragment3 = new fragment3(); list.add(fragment1); list.add(fragment2); list.add(fragment3); }  }

    //按键图片的是否点击状态的变化

    <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" >     <item android:drawable="@drawable/icon01" android:state_checked="true"></item>     <item android:drawable="@drawable/icon02" android:state_checked="false"></item> <item android:drawable="@drawable/icon01"></item> </selector>

    转载请注明原文地址: https://ju.6miu.com/read-1288331.html
    最新回复(0)