ViewPager引导页面制作
1、首先需要在layout布局文件中声明ViewPager,V4包是兼容以前版本的。
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/blue_200">
</android.support.v4.view.ViewPager>
2、建立适配器的类,继承自V4包下的PagerAdapter。
声明布局填充器
LayoutInflater mInflater;
将调用此构造函数的布局加载到mInflater中
public PagerAdapter(Context context){
mInflater=LayoutInflater.from(context);
}
声明一系列的数组,数据类型是View
private List<View> views;
覆写一系列的函数
@Override
public int getCount() {
return views.size();
}
判断某个对象是否是View
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
//调用父类函数,自动根据位置,调用相关函数,实现了接口的函数,实际上在原函数处执行。
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view=pagercache.get(position);
//一个private SparseArray<View> pagercache=new SparseArray<View>();全局的数组,保存视图
if(view==null){
view=mInflater.inflate(R.layout.fragment_food,container,false);
TextView textView= (TextView) view.findViewById(R.id.foodtext);
ImageView icons= (ImageView) view.findViewById(R.id.foodview);
ImageView backgrounds=(ImageView)view.findViewById(R.id.background);
switch (position){
case 0:
textView.setText(R.string.welcome_small_social);
icons.setImageResource(R.drawable.dreamingbear);
backgrounds.setImageResource(R.drawable.first);break;
case 1:
textView.setText(R.string.welcome_food);
icons.setImageResource(R.drawable.ic_food);
backgrounds.setImageResource(R.drawable.food);
break;
case 2:
textView.setText(R.string.welcome_wisdom);
icons.setImageResource(R.drawable.ic_wisdom);
backgrounds.setImageResource(R.drawable.wisdom);
break;
case 3:
textView.setText(R.string.welcome_change);
icons.setImageResource(R.drawable.ic_talk);
backgrounds.setImageResource(R.drawable.opp);
break;
default:break;
}
pagercache.append(position,view);
}
container.addView(view);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeViewAt(position);
}
}
3、在主函数中继承View的点击监听器
//声明ViewPager对象
private ViewPager vp;
private PagerAdapter pagerAdapter=new PagerAdapter(this);
private ImageView banner;
private SparseArray<View> pagercache=new SparseArray<View>();
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_info);
init();
}
//在init函数中初始化对象
private void init() {
banner = (ImageView) findViewById(R.id.banner);
vp= (ViewPager) findViewById(R.id.vp);
vp.setAdapter(pagerAdapter);
vp.addOnPageChangeListener(new OnPagerChangeListener());
button= (Button) findViewById(R.id.enter);
}
@Override
public void onClick(View view) {
if(view.getId()==R.id.enter){
Intent intent=new Intent(InfoActivity.this, LaunchActivity.class);
startActivity(intent);
}
}
注册一个监听器,实现ViewPager.OnPageChangeListener
private class OnPagerChangeListener implements ViewPager.OnPageChangeListener{
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
switch (position){
case 0:
banner.setImageResource(R.drawable.bannerone);
case 1:
banner.setImageResource(R.drawable.bannertwo);
break;
case 2:
banner.setImageResource(R.drawable.bannerthree);
break;
case 3:
banner.setVisibility(View.INVISIBLE);
button.setVisibility(View.VISIBLE);
break;
default:break;
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
总结:实现引导页如果使用ViewPager方法,首先我们需要继承PagerAdapter,实现里面的构造函数,及覆写方法。其次,需要实现Listener,添加监听。再将监听器注册到组件上。