总结一下android app引导页

来源:互联网 发布:自学电脑办公软件 编辑:程序博客网 时间:2024/06/13 21:52

主页面是一个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;}@Overridepublic int getCount() {    return data.size();}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {    return arg0 == arg1;}@Overridepublic Object instantiateItem(ViewGroup container, int position) {    container.addView(data.get(position));    return data.get(position);}@Overridepublic 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) {            }        });    }

从而引导页就完成了

0 0