我们在浏览网页时,通常会出现按到不同按钮划出不同的页面,或者滑动不同的页面,对应的的按钮会出现不同的效果。这里页面的滑动就用到了ViewPager。
首先在主xml文件里定义一个viewPager标签,我们把滑动的页面的内容就放在这个标签里面。
android.support.v4.view.ViewPager
android:id="@+id/main_viewpager"
style="@style/main_viewpager_style"
android:layout_below="@id/category_line" >
</android.support.v4.view.ViewPager>
然后自定义一个Adapter,把要显示在viewPager里的东西设置好,在前台调用Adapter即可。
package com.example.jrnews;
import java.util.ArrayList;
import com.example.jrnews.R;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
public class ViewPagerAdapter extends PagerAdapter {
private ArrayList<View> nList;
private int len;
private Context nContext;
private int[] imgs=new int[] {
R.drawable.help_detail1,
R.drawable.help_detail2,
R.drawable.help_detail3,
R.drawable.help_detail4,
R.drawable.help_detail5
};
public ViewPagerAdapter(int len, Context nContext) {
super();
this.len=len;
this.nContext = nContext;
//调用函数
initViewPagerData();
}
//设置每次滑动的图片
public void initViewPagerData(){
this.nList=new ArrayList<View>();
for(int i=0;i<len;i++){
ImageView imgView=new ImageView(nContext);
imgView.setScaleType(ScaleType.FIT_XY);
imgView.setImageResource(imgs[i%imgs.length]);
nList.add(imgView);
}
}
@Override
public int getCount() {
return this.nList==null?0:this.nList.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0==arg1;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(this.nList.get(position));
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(this.nList.get(position));
return this.nList.get(position);
}
}
然后在主Activity里面非onCreate方法里面,调用Adapter,
viewAdapter=new ViewPagerAdapter(channelList.size(), this);
viewPager.setAdapter(viewAdapter);
最后一步,也是最重要的一步,是实现按钮和页面的同步滑动,那么就要为按钮设置监听,为页面设置监听。
//当点击滚动栏的数据,viewpager滑动出不同的页面
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
viewPager.setCurrentItem(checkedId);
}
});
//当viewpager滑动出不同的页面,上面的滚动栏选中对应的数据
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
RadioButton rb=(RadioButton) findViewById(position);
rb.setChecked(true);
//设置被选中的滚动栏数据每次都能显示在固定的位置
int x=rb.getLeft()+rb.getWidth()/2-2*dm.widthPixels/3;
scrollView.smoothScrollTo(x, 0);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});