继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

给你们一个蛮实用的ViewPage框架(代替TabHost)

小哥歌
关注TA
已关注
手记 6
粉丝 4
获赞 155

createView();​

// 写一个内部类PageAdapter

pagerAdapter = new PagerAdapter() {

// 判断再次添加的view和之前的view 是否是同一个view

// arg0新添加的view,arg1之前的

@Override

public boolean isViewFromObject(View arg0, Object arg1) {

return arg0 == arg1;

}

// 返回数据源长度

@Override

public int getCount() {

return list.size();

}

// 销毁被滑动走的view

/**

  • ViewGroup 代表了我们的ViewPager 相当于ActivityGroup当中的view容器, 添加之前先移除。

  • position 第几条数据 Object 被移出的view

*/

@Override

public void destroyItem(ViewGroup container, int position,

Object object) {

// 移除view

container.removeView(list.get(position));

}

/**

  • instantiateItem ViewPager要现实的view ViewGroup ViewPager position

  • 第几条数据

  • */

@Override

public Object instantiateItem(ViewGroup container, int position) {

// 获取view添加到容器当中,并返回

View v = list.get(position);

container.addView(v);

return v;

}

};

// 设置我们的adapter

mViewPager.setAdapter(pagerAdapter);

MyBtnOnclick mytouchlistener = new MyBtnOnclick();

//这里是几大线性布局板块的单击              

mMyBottemHomeBtn.setOnClickListener(mytouchlistener);

mMyBottemSchooleBtn.setOnClickListener(mytouchlistener);

mMyBottemStudyBtn.setOnClickListener(mytouchlistener);

mMyBottemMytn.setOnClickListener(mytouchlistener);

/**

  • 设置ViewPager界面切换监听,监听ViewPager切换第几个界面以及滑动的

*/

mViewPager.setOnPageChangeListener(new OnPageChangeListener() {

// arg0 获取 ViewPager里面的界面切换到第几个的

@Override

public void onPageSelected(int arg0) {

// 先清除按钮样式

initBottemBtn();

// 按照对应的view的tag来判断到底切换到哪个界面。

// 更改对应的button状态

int flag = (Integer) list.get((arg0)).getTag();

if (flag == 0) {

} else if (flag == 1) {

} else if (flag == 2) {

} else if (flag == 3) {

}

}

/**

  • 监听页面滑动的 arg0 表示当前滑动的view arg1 表示滑动的百分比 arg2 表示滑动的距离

*/

@Override

public void onPageScrolled(int arg0, float arg1, int arg2) {

}

/**

  • 监听滑动状态 arg0 表示我们的滑动状态 0:默认状态 1:滑动状态 2:滑动停止

*/

@Override

public void onPageScrollStateChanged(int arg0) {

}

});

/**

  • 把ViewPager里面要显示的view实例化出来,并且把相关的view添加到一个list当中

*/

private void createView() {

view = this

.getLocalActivityManager()

.startActivity(

"home",

new Intent(MainFragmentActivity.this,

HomeActivity.class)).getDecorView();

// 用来更改下面button的样式的标志

view.setTag(0);

list.add(view);

view1 = MainFragmentActivity.this

.getLocalActivityManager()

.startActivity(

"school",

new Intent(MainFragmentActivity.this,

SchoolActivity.class)).getDecorView();

view1.setTag(1);

list.add(view1);

view3 = MainFragmentActivity.this

.getLocalActivityManager()

.startActivity(

"study",

new Intent(MainFragmentActivity.this,

StudyActivity.class)).getDecorView();

view3.setTag(2);

list.add(view3);

view4 = MainFragmentActivity.this

.getLocalActivityManager()

.startActivity("my",

new Intent(MainFragmentActivity.this, MyActivity.class))

.getDecorView();

view4.setTag(3);

list.add(view4);

}

/**

  • 用LinearLayout作为按钮的监听事件

*/

private class MyBtnOnclick implements OnClickListener {

@Override

public void onClick(View v) {

int mBtnid = v.getId();

switch (mBtnid) {

case R.id.MBottemHomeBtn:

// 设置我们的ViewPager跳转那个界面0这个参数和我们的list相关,相当于list里面的下标

mViewPager.setCurrentItem(0);

initBottemBtn();

break;

case R.id.MBottemSchoolBtn:

mViewPager.setCurrentItem(1);

initBottemBtn();

break;

case R.id.MBottemStudyBtn:

mViewPager.setCurrentItem(2);

initBottemBtn();

break;

case R.id.MBottemMyBtn:

mViewPager.setCurrentItem(3);

initBottemBtn();

break;

}

}

}

/**

  • 初始化控件的颜色

*/

private void initBottemBtn() {

           //这里大家自由发挥

}

打开App,阅读手记
7人推荐
发表评论
随时随地看视频慕课网APP

热门评论

TabHost 应该早就不用了吧~fragment+pageview是一种解决方案


我想问 为什么楼主不能用代码段

查看全部评论