App引导页面代码示例

来源:互联网 发布:天天回程车软件 编辑:程序博客网 时间:2024/06/05 14:44
public class GuideUI extends Activity implements OnClickListener{public static final StringTAG= "GuideUI";private int[]IMAGES= new int[] {R.drawable.guide_1,R.drawable.guide_2,R.drawable.guide_3};private ViewPagermViewPager;private LinearLayoutmPonintContainer;// 装静态点的容器private ImageViewmIvPointFocus;// 动态的点private ButtonmBtnStart;private List<ImageView>mImageDatas;// ViewPager对应的数据private intmPointSpace;// 两个点的距离@Overrideprotected void onCreate(Bundle savedInstanceState){// 去掉标题requestWindowFeature(Window.FEATURE_NO_TITLE);super.onCreate(savedInstanceState);setContentView(R.layout.ui_guide);// 加载xml布局--->异步加载// 初始化viewinitView();// 初始化数据initData();}private void initView(){mViewPager = (ViewPager) findViewById(R.id.guide_viewpager);mPonintContainer = (LinearLayout) findViewById(R.id.guide_point_container);mIvPointFocus = (ImageView) findViewById(R.id.guide_iv_pointfocus);mBtnStart = (Button) findViewById(R.id.guide_btn_start);mIvPointFocus.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {@Overridepublic void onGlobalLayout(){// 布局发生改变时的回调mPointSpace = mPonintContainer.getChildAt(1).getLeft() - mPonintContainer.getChildAt(0).getLeft();mIvPointFocus.getViewTreeObserver().removeGlobalOnLayoutListener(this);}});// 设置button点击事件mBtnStart.setOnClickListener(this);}private void initData(){// 初始化数据mImageDatas = new ArrayList<ImageView>();for (int i = 0; i < IMAGES.length; i++){ImageView iv = new ImageView(this);// 设置显示iv.setImageResource(IMAGES[i]);iv.setScaleType(ScaleType.FIT_XY);mImageDatas.add(iv);ImageView point = new ImageView(this);point.setImageResource(R.drawable.point_normal);LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);if (i != 0){params.leftMargin = 10;}// 动态加载点mPonintContainer.addView(point, params);}// 设置adaptermViewPager.setAdapter(new GuideAdapter());// apdater ---> List// 给viewpager设置监听mViewPager.setOnPageChangeListener(new GuidePagerListener());}private class GuideAdapter extends PagerAdapter{@Overridepublic int getCount(){if (mImageDatas != null) { return mImageDatas.size(); }return 0;}@Overridepublic boolean isViewFromObject(View view, Object object){return view == object;}@Overridepublic Object instantiateItem(ViewGroup container, int position){// 初始化viewImageView iv = mImageDatas.get(position);// 添加到containercontainer.addView(iv);return iv;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object){container.removeView((View) object);}}private class GuidePagerListener implements OnPageChangeListener{@Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels){// 1.position: 在那个页面滑动// 2.positionOffset: 滑动的像素值/页面的宽度 滑动的百分比// 3.positionOffsetPixels: 滑动的像素值// 当页面滚动时的回调// Log.d(TAG, "onPageScrolled : " + position + "  " + positionOffset// + "  " + positionOffsetPixels);// 两个点间的距离--->// 两个点间的距离 * 滑动的比值positionOffsetint marginLeft = (int) (mPointSpace * positionOffset + position * mPointSpace + 0.5f);// 动态去设置 点的marginLeftRelativeLayout.LayoutParams params = (android.widget.RelativeLayout.LayoutParams) mIvPointFocus.getLayoutParams();params.leftMargin = marginLeft;mIvPointFocus.setLayoutParams(params);}@Overridepublic void onPageSelected(int position){// 当页面选中时的回调// Log.d(TAG, "onPageSelected:" + position);// if (position == mImageDatas.size() - 1)// {// mBtnStart.setVisibility(View.VISIBLE);// }// else// {// mBtnStart.setVisibility(View.GONE);// }mBtnStart.setVisibility((position == mImageDatas.size() - 1) ? View.VISIBLE : View.GONE);}@Overridepublic void onPageScrollStateChanged(int state){// 页面滑动状态改变时的回调// * @param state The new scroll state.// * @see ViewPager#SCROLL_STATE_IDLE : 闲置// * @see ViewPager#SCROLL_STATE_DRAGGING : 拖拽状态// * @see ViewPager#SCROLL_STATE_SETTLING: 固定选中状态// 由一种状态变为另外一种状态Log.d(TAG, "onPageScrollStateChanged:" + state);}}@Overridepublic void onClick(View v){if (v == mBtnStart){// 记录已经打开过PreferenceUtils.setBoolean(this, WelcomeUI.KEY_FIRST_LOAD, false);// 页面跳转Intent intent = new Intent(this, HomeUI.class);startActivity(intent);finish();}}}

0 0
原创粉丝点击