博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第13天ViewPager案例2:Viewpager+Fragment实现微信底部导航(******)
阅读量:3786 次
发布时间:2019-05-22

本文共 3766 字,大约阅读时间需要 12 分钟。

第13天ViewPager案例2:Viewpager+Fragment实现微信底部导航(******)

ViewPager

一.效果

在这里插入图片描述

1.点击底部,Viewpager切换
2.滑动ViewPager,底部也变化
3.Selector选择器的使用

二.思路:1个ViewPager+4个Fragment+1个FragmentPagerAdapter

1.容器:ViewPager

2.数据:ArrayList<Fragment
3.适配器:FragmentPagerAdapter

重写的方法:

(1)getItem() 返回指定下标对于的Fragment
(2)getCount() 得到当前数据源的总数量

四.代码

(1)4个Fragment省略不写

(2)布局activity_main.xml:ViewPager+小圆点+开始体验+右上角倒计时

(3)Java代码:MainActivity.java

/** * 1.viewpager * 2.List
* 3.FragmentPagerAdapter * 4.RadioGroup设置点击事件 * */public class MainActivity extends AppCompatActivity {
//视图 private ViewPager vp; private RadioGroup rg; private RadioButton rb1,rb2,rb3,rb4; //数据 private ArrayList
fragmentArrayList=new ArrayList<>(); //适配器 private MyFragmentPagerAdpater myFragmentPagerAdpater; @Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); //TODO 去除Bar supportRequestWindowFeature(Window.FEATURE_NO_TITLE);//这句话一定要放到中间 setContentView(R.layout.activity_main); initview(); initdata(); initadpater(); initlistener(); } private void initlistener() {
//点击顶部的时候,切换ViewPager rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override public void onCheckedChanged(RadioGroup group, int checkedId) {
//checkedId代表的是选中的rb的id if(rb1.getId()==checkedId){
vp.setCurrentItem(0); }else if(rb2.getId()==checkedId){
vp.setCurrentItem(1); }else if(rb3.getId()==checkedId){
vp.setCurrentItem(2); }else if(rb4.getId()==checkedId){
vp.setCurrentItem(3); } } }); //滑动ViewPager的时候切换底部 vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override public void onPageScrolled(int i, float v, int i1) {
} @Override public void onPageSelected(int i) {
if(i==0){
rb1.setChecked(true); }else if(i==1){
rb2.setChecked(true); }else if(i==2){
rb3.setChecked(true); }else if(i==3){
rb4.setChecked(true); } } @Override public void onPageScrollStateChanged(int i) {
} }); } private void initadpater() {
myFragmentPagerAdpater=new MyFragmentPagerAdpater(getSupportFragmentManager(),fragmentArrayList); vp.setAdapter(myFragmentPagerAdpater); } private void initdata() {
fragmentArrayList.add(new Fragment1()); fragmentArrayList.add(new Fragment2()); fragmentArrayList.add(new Fragment3()); fragmentArrayList.add(new Fragment4()); } private void initview() {
vp=findViewById(R.id.vp); rg=findViewById(R.id.rg); rb1=findViewById(R.id.rb1); rb2=findViewById(R.id.rb2); rb3=findViewById(R.id.rb3); rb4=findViewById(R.id.rb4); }}

(4)适配器代码:

public class MyFragmentPagerAdpater extends FragmentPagerAdapter {
private ArrayList
list; public MyFragmentPagerAdpater(FragmentManager fm, ArrayList
list) {
super(fm); this.list=list; } @Override public Fragment getItem(int i) {
return list.get(i); } @Override public int getCount() {
return list.size(); }}

源代码:

转载地址:http://pwktn.baihongyu.com/

你可能感兴趣的文章
结构型模式——装饰者设计模式
查看>>
线程的同步——Synchronized和ReentrantLock
查看>>
网络编程基础
查看>>
python实现快速排序
查看>>
python实现归并排序
查看>>
ptqt5控件了解(三)
查看>>
自学C++(一)
查看>>
51单片机介绍(二)
查看>>
STM32F103 入门篇-5-初识STM32
查看>>
后台框架的frameset
查看>>
Spring Jdbc
查看>>
Spring 事务管理
查看>>
spring与mybatis的整合
查看>>
json数据交换和RESTful支持
查看>>
spring中的拦截器
查看>>
文件上传和下载
查看>>
Oracle指令,软件架构,
查看>>
oracle5:oracle的图形界面操作,分页查询,练习
查看>>
密码学基础之对称密码体制和公钥密码体制
查看>>
Spark Streaming进阶
查看>>