主页面是一个viewPager加是否同意公司协议的checkBox,立即体验的imageView,一个装载dots的linearLayout,checkBox,imageView,linearLayout一开始设置为gone
布局文件activity_guide.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white">
<android.support.v4.view.ViewPager
android:id="@+id/guide_viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<CheckBox
android:id="@+id/cbs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="@dimen/dp_100"
android:button="@drawable/checkbox_selector"
android:paddingLeft="@dimen/GuideCheckBox"
android:text="@string/Agree_with_privacy_agreement"
android:textColor="#da837f"
android:textSize="@dimen/sp12"
android:visibility="gone" />
<ImageView
android:id="@+id/guide_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="@dimen/dp_50"
android:src="@mipmap/guide_btn"
android:visibility="visible" />
<LinearLayout
android:id="@+id/guide_dots"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="@dimen/dp_20"
android:gravity="center_horizontal"
android:orientation="horizontal"
android:visibility="gone" />
</RelativeLayout>
引导页activity中oncreate中实现 initPager()方法;
int[] images;
//初始化ViewPager
private void initPager(){
viewList = new ArrayList<View>();
images = new int[] { R.mipmap.guide1,R.mipmap.guide2,R.mipmap.guide3};
for (int i = 0; i < images.length; i++) {
viewList.add(initView(images[i]));
}
initDots(images.length);
}
里面有一个initView将图片的地址转化为View方法,参数为image的地址,
private View initView(int res){
View view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.item_guide, null);
ImageView imageView = (ImageView)view.findViewById(R.id.iguide_img);
imageView.setImageBitmap(readBitMap(res));
return view;
}
其中item_guide就是一个imageView布局,readBitMap(res)是一个Bitmap值
public Bitmap readBitMap(int resId){
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inPreferredConfig = Bitmap.Config.RGB_565;
opt.inPurgeable = true;
opt.inInputShareable = true;
//获取资源图片
InputStream is = this.getResources().openRawResource(resId);
return BitmapFactory.decodeStream(is,null,opt);
}
除了对viewPager进行初始化之外,对linearLayout这个线性布局中装载指示器也要进化初始化initDots();
//根据页面数初始化指示器
private void initDots(int count){
for (int j = 0; j < count; j++) {
guideDots.addView(initDot());//guideDots就是linearlayout,添加view,一个imageButton
}
guideDots.getChildAt(0).setSelected(true);
}
private View initDot(){
return LayoutInflater.from(getApplicationContext()).inflate(R.layout.layout_dot, null);
}
之后进行的是viewPager的适配数据:适配器
guideViewpager.setAdapter(new GuideAdapter(GuideActivity.this,viewList));
public class GuideAdapter extends PagerAdapter {
private List<View> data;
private Context mContext;
public GuideAdapter(Context mContext, List<View> data)
{
super();
this.data = data;
this.mContext=mContext;
}
@Override
public int getCount() {
return data.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(data.get(position));
return data.get(position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(data.get(position));
}
}
对viewPager中图片是否是最后一个从而来判断是否显示checkBox跟imageview:
guideViewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
for (int i = 0 ;i < guideDots.getChildCount() ; i++ ){
if (i == position){
guideDots.getChildAt(position).setSelected(true);
guideBtn.setVisibility(View.VISIBLE);
cbs.setVisibility(View.VISIBLE);
}else {
guideDots.getChildAt(i).setSelected(false);
guideBtn.setVisibility(View.GONE);
cbs.setVisibility(View.GONE);
}
}
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
从而引导页就完成了