Android中的viewpage

引导页

int[] images={R.mipmap.xx,....}
List<ImageView> list=new ArrayList<>();
for(int i=0;i<images.length;i++){
      ImageView iv=new ImageView(this);
      iv.setImageResource(images[i]);
      list.add(iv);
}
public class MyPagerAdapter extends PagerAdapter{
    //适配器加载数据总条目
    public int getCount(){
      return list.size();
    }

    public boolean isViewFromObject(View view,Object object){
        return view==object;
    }

    //根据下标实例化
    public Object instantiateItem(ViewGroup container, int position) {
        container.addView(list.get(position));
        return list.get(position);
    }

    //根据下标销毁page页
     public void destroyItem(ViewGroup container, int position, Object object) {
           container.removeView(list.get(position));
     }

}

预知有几个page页:

LinearLayout layout=(LinearLayout)findViewById(R.id.layout);
ImageView[] icons=new ImageView[viewpager数据源的长度];
for(int i=0;i<icons.length;i++){
    icons[i]=(ImageView)layout.getChildAt(i);
    icons[i].setImageResource(R.mipmap.xx);
    icons[i].setTag(i);
    icons[i].setOnClickListener(new onClickListener(){
           public void onClick(View v){
                vp.setCurrentItem((Integer)v.getTag());
           }
        }
    });
  }
   icons[0].setImageResource(R.mipmap.xxx);
}

page页完全动态 网路加载:

LinearLayout layout=(LinearLayout)findViewById(R.id.layout);
ImageView[] icons=new ImageView[viewpager数据源的长度];
for(int i=0;i<icons.length;i++){
    icons[i]=new ImageView(context);
    icons[i].setImageResource(R.mipmap.icon01);
    // android:layout_width=""   android:layout_heigth=""
    icons[i].setLayoutParams(new ViewGroup.LayoutParams(ViewPager.LayoutParams.WRAP_CONTENT,
                                    ViewPager.LayoutParams.WRAP_CONTENT));
    icons[i].setMaxWidth(40);
    icons[i].setAdjustViewBounds(true);
    layout.addView(icons[i]);
    icons[i].setTag(i);
    icons[i].setOnClickListener(new onClickListener(){
               public void onClick(View v){
                    vp.setCurrentItem((Integer)v.getTag());
               }
            }
        });
}
 icons[0].setImageResource(R.mipmap.xxx);

ViewPager中展示Fragment

List list=new ArrayList<>();

每个page页展示不同的fragment界面
Fragment1 f1=new Framgent1();
Fragment2 f2=new Fragment2();
list.add(f1);
list.add(f2);

每个page页中使用同一个Fragment

Bundele bundle=new Bundle();
bundle.putString(key,xxx);
Fragment1 f1=new Framgent1();
f1.setArguments(bundle);
bundle=new Bundle();
bundle.putString(key,xxx);
Fragment2 f2=new Fragment2();
f2.setArguments(bundle);
list.add(f1);
list.add(f2);

public class MyFragmentPagerAdapter extends FragmentPagerAdapter{
    public MyFragmentPagerAdapter(FragmentManger manger){
       super(manger);
    }

    public int getCount(){
        return list.size();
    }

    public Fragment getItem(int position){
       return list.get(position);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ViewPager是Android的一个控件,它可以实现滑动切换多个Fragment或View的功能,常用于实现页面滑动切换、引导页、轮播图等功能。 使用ViewPager需要以下几个步骤: 1.在布局文件添加ViewPager控件,如下: ```xml <androidx.viewpager.widget.ViewPager android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="match_parent"/> ``` 2.创建Adapter,继承自PagerAdapter或FragmentPagerAdapter,实现getItem()和getCount()方法,如下: ```java public class MyPagerAdapter extends PagerAdapter { private List<View> mViewList; public MyPagerAdapter(List<View> viewList) { mViewList = viewList; } @Override public int getCount() { return mViewList.size(); } @Override public boolean isViewFromObject(@NonNull View view, @NonNull Object object) { return view == object; } @NonNull @Override public Object instantiateItem(@NonNull ViewGroup container, int position) { View view = mViewList.get(position); container.addView(view); return view; } @Override public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { container.removeView(mViewList.get(position)); } } ``` 3.将Adapter设置给ViewPager,如下: ```java ViewPager viewPager = findViewById(R.id.view_pager); MyPagerAdapter adapter = new MyPagerAdapter(mViewList); viewPager.setAdapter(adapter); ``` 4.(可选)设置ViewPager的滑动监听: ```java 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) { // 页面滑动状态变化时的回调 } }); ``` 以上就是使用ViewPager的基本步骤。需要注意的是,ViewPager默认只会加载当前页和左右两侧的页,如果需要预加载更多页,可以使用setOffscreenPageLimit()方法设置预加载页数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值