在做项目时遇到的问题有:
1.Viewpager 如何实现滑屏
2.View滑动后当前页面颜色改变
3.第一个页面点击Item后当滑倒第三个页面再回到第个页面时,第一个页面点击变色消失,显示默认显示,但点击时的数据被记录(即Viewpager页面存储及销毁问题)恶免
4.随着页面的滑动,下面添加图标,并根据页面的多少显示多少图标,且选中页图标颜色改变
下面代码是解决上述问题时写的代码,不过在做项目是被自己挖的坑给坑了,有一个页面显示问题,我添加了三个页面,只显示第一个页面,后面两个页面怎么也不显示,问了很多人,网上看了很多例子,最后发现自己的子页面显示熟悉设置的是GONE,白白花了两天时间!希望以后自己细心点,也希望搜索问题的童鞋们写代码时一定的细心,bie
viewPager=(ViewPager) findViewById(R.id.viewpager); //查找对应xml中的Viewpager
group=(ViewGroup)findViewById(R.id.viewGroup);//添加根据viewpager 页面多少添加多少图标点,final ArrayList<View>views=new ArrayList<View>();
LayoutInflater inflater=getLayoutInflater();
view1=inflater.inflate(R.layout.lay1, null); //View子页面
view2=inflater.inflate(R.layout.lay2, null);
view3=inflater.inflate(R.layout.lay3, null);
views.add(view1);
views.add(view2);
views.add(view3);
imageViews=new ImageView[views.size()];
for (int i = 0; i < views.size(); i++) {
imageView=new ImageView(this);
imageView.setLayoutParams(new LayoutParams(40,40));
imageView.setPadding(40, 0, 40, 0);
imageViews[i] = imageView;
if (i == 0) {
//默认选中第一张图片
imageViews[i].setBackgroundResource(R.drawable.blue05); //设置页面下对应的图标
} else {
imageViews[i].setBackgroundResource(R.drawable.hui06);
}
group.addView(imageViews[i]);
}
viewPager.setAdapter(new MyViewPagerAdapter(views));
isclick=true;
viewPager.setCurrentItem(0);
viewPager.setOffscreenPageLimit(2);//设置记录页面点击数据,即页面可保存三个页面的数据
viewPager.setOnPageChangeListener(new MyOnPageChangeListener());
public class MyViewPagerAdapter extends PagerAdapter{
private List<View> mListViews;
public MyViewPagerAdapter(List<View> mListViews) {
this.mListViews = mListViews;
}
@Override
public int getItemPosition(Object object) {
// TODO Auto-generated method stub
return super.getItemPosition(object);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(mListViews.get(position));
isclick=false;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(mListViews.get(position),0);
return mListViews.get(position);
}
@Override
public int getCount() {
return mListViews.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0==arg1;
}
}
public class MyOnPageChangeListener implements OnPageChangeListener{
//当滑动状态改变时调用
public void onPageScrollStateChanged(int arg0) {
// showView();
// mPagerAdapter.notifyDataSetChanged();
isclick=false;
}
// 当当前页面被滑动时调用
public void onPageScrolled(int arg0, float arg1, int arg2) {
// showView();
// mPagerAdapter.notifyDataSetChanged();
isclick=false;
}
public void onPageSelected(int arg0) { //设置被选中页面的显示问题
// showView();
// mPagerAdapter.notifyDataSetChanged();
for (int i = 0; i < imageViews.length; i++) {
imageViews[arg0].setBackgroundResource(R.drawable.blue05);
if (arg0 != i) {
imageViews[i].setBackgroundResource(R.drawable.hui06);
}
}
switch (arg0) {
case 0:
if (isClick3||isClick4) {
ly_yuyin.setBackgroundResource(R.drawable.xuanzhong_red);
ly_flow.setBackgroundResource(R.drawable.weixuanzhong_red);
ly_yewu.setBackgroundResource(R.drawable.weixuanzhong_red);
}else {
ly_yuyin.setBackgroundResource(R.drawable.xuanzhong_red);
ly_flow.setBackgroundResource(R.drawable.weixuanzhong_red);
ly_yewu.setBackgroundResource(R.drawable.weixuanzhong_hui);
}
break;
case 1:
if (isClick3||isClick4) {
ly_yuyin.setBackgroundResource(R.drawable.weixuanzhong_red);
ly_flow.setBackgroundResource(R.drawable.xuanzhong_red);
ly_yewu.setBackgroundResource(R.drawable.weixuanzhong_red);
}else {
ly_yuyin.setBackgroundResource(R.drawable.weixuanzhong_red);
ly_flow.setBackgroundResource(R.drawable.xuanzhong_red);
ly_yewu.setBackgroundResource(R.drawable.weixuanzhong_hui);
}
break;
case 2:
if (isClick3||isClick4) {
ly_yuyin.setBackgroundResource(R.drawable.weixuanzhong_red);
ly_flow.setBackgroundResource(R.drawable.weixuanzhong_red);
ly_yewu.setBackgroundResource(R.drawable.xuanzhong_red);
}else {
ly_yuyin.setBackgroundResource(R.drawable.weixuanzhong_red);
ly_flow.setBackgroundResource(R.drawable.weixuanzhong_red);
ly_yewu.setBackgroundResource(R.drawable.xuanzhong_hui);
}
break;
default:
break;
}
isclick=false;
}
}