Android中的viewpage

本文介绍如何使用ViewPager结合自定义适配器展示不同Fragment页面,包括页面的动态加载及通过指示器实现页面间的跳转。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引导页

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);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值