packagecom.study.tracy.activity;importandroid.content.Intent;importandroid.support.v4.view.ViewPager;importandroid.support.v4.view.ViewPager.OnPageChangeListener;importandroid.util.Log;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.view.ViewTreeObserver.OnGlobalLayoutListener;importandroid.widget.Button;importandroid.widget.ImageView;importandroid.widget.LinearLayout;importandroid.widget.LinearLayout.LayoutParams;importandroid.widget.RelativeLayout;importcom.study.tracy.R;importcom.study.tracy.adapter.GuideAdapter;importcom.study.tracy.base.BaseActivity;importcom.study.tracy.constants.FlagConstants;importcom.study.tracy.utils.DensityUtils;importcom.study.tracy.utils.SharedPrefUtils;importjava.util.ArrayList;public class GuideActivity extendsBaseActivity {privateViewPager vpGuide;private LinearLayout llPointGroup; //引导圆点的父控件
private View guidePoint; //选中的圆点
private Button startBtn; //开始体验按钮
private Button skipBtn; //跳过按钮//引导页背景图片的id数组
private static final int[] mImageIds = new int[] {R.mipmap.user_guide01,
R.mipmap.user_guide02, R.mipmap.user_guide03 , R.mipmap.user_guide04, R.mipmap.user_guide05};private int mPointWidth = 0;//圆点间的距离
private ArrayListmImageViewList;privateString from;
@Overridepublic voidinitViews() {this.setContentView(R.layout.guide_layout);//获取从哪里进来的入口
from = getIntent().getStringExtra("from");
vpGuide=(ViewPager) findViewById(R.id.vp_guide);
llPointGroup=(LinearLayout) findViewById(R.id.ll_point_group);
guidePoint=findViewById(R.id.view_guide_point);
startBtn=(Button) findViewById(R.id.btn_start);
skipBtn=(Button) findViewById(R.id.btn_skip);
}
@Overridepublic voidinitDatas() {
BaseActivity.isOpenDistanceBack= false;
mImageViewList= new ArrayList();//初始化引导页的三个页面
ImageView imageView = null;for (int i = 0; i < mImageIds.length; i++) {
imageView= new ImageView(this);
imageView.setBackgroundResource(mImageIds[i]);//设置引导页的背景图片
mImageViewList.add(imageView);
}for (int i = 0; i < mImageIds.length; i++) {
Log.d("Point View", "第" + i + "个圆点");
View point= new View(this);//设置引导页默认圆点背景
point.setBackgroundResource(R.drawable.shape_point_gray);
LayoutParams params= new LayoutParams(DensityUtils.dp2px(this, 12), DensityUtils.dp2px(this, 12));if(i > 0){
params.leftMargin= DensityUtils.dp2px(this, 10); //从第二个圆点开始设置左间距
}
point.setLayoutParams(params);
llPointGroup.addView(point);//将圆点添加到线性布局中
}//获取视图树, 对layout绘制结束事件进行监听
llPointGroup.getViewTreeObserver().addOnGlobalLayoutListener(newOnGlobalLayoutListener() {public voidonGlobalLayout() {
Log.d("llPointLayout", "llPointLayout绘制结束!");
llPointGroup.getViewTreeObserver().removeGlobalOnLayoutListener(this);if(mPointWidth == 0){
mPointWidth= llPointGroup.getChildAt(1).getLeft()- llPointGroup.getChildAt(0).getLeft();
Log.d("圆点需要移动的距离:", mPointWidth + "");
}
}
});
}
@Overridepublic voidinitListeners() {
vpGuide.setAdapter(newGuideAdapter(mImageViewList));
vpGuide.setOnPageChangeListener(newGuidePageListener());
startBtn.setOnClickListener(newOnClickListener() {public voidonClick(View v) {
skipToActivity();
}
});
skipBtn.setOnClickListener(newOnClickListener() {public voidonClick(View v) {
skipToActivity();
}
});
}private voidskipToActivity() {//更新引导页是否显示为true,下次进入就不显示
SharedPrefUtils.getInstance().setBoolean(FlagConstants.USER_GUIDE, true);//跳转到登录的Activity中
Intent intent = null;//if("setting".equals(from)){//intent = new Intent(GuideActivity.this, SettingActivity.class);//}else {
intent = new Intent(GuideActivity.this, LoginActivity.class);//}
startActivity(intent);
finish();
}class GuidePageListener implementsOnPageChangeListener {//滑动状态发生变化
public void onPageScrollStateChanged(intarg0) {}/*** position : 当前的位置
* positionOffset : 位置移动的百分比
* positionOffsetPixels: 位置移动的px像素点*/
public void onPageScrolled(int position, float positionOffset, intpositionOffsetPixels) {int len = (int) (mPointWidth * positionOffset + position *mPointWidth);
RelativeLayout.LayoutParams params=(RelativeLayout.LayoutParams) guidePoint.getLayoutParams();
params.leftMargin= len; //设置选中圆点在父控件中的左间距
guidePoint.setLayoutParams(params);//重新给选中圆点设置布局参数
}public void onPageSelected(intposition) {if(position == mImageIds.length - 1){//最后一个页面,设置开始体验按钮显示
startBtn.setVisibility(View.VISIBLE);
}else{
startBtn.setVisibility(View.INVISIBLE);
}
}
}
}