总结一下android app引导页

主页面是一个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) {
            }
        });
    }

从而引导页就完成了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值