ブートページの実装
7969 ワード
練習中の小さな項目で、フラッシュページが終わった後、プログラムを紹介してユーザーを導くために左右にスライドできるガイドページを実現したいと思っています.
private ViewPager mViewPager;
// ,
private List mList = new ArrayList<>();
//
private View view1, view2, view3;
//
private ImageView point1, point2, point3;
//
private ImageView iv_back;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_guide);
initview();
}
// view
private void initview() {
mViewPager = (ViewPager) findViewById(R.id.mViewPager);
iv_back = (ImageView) findViewById(R.id.iv_back);
iv_back.setOnClickListener(this);
point1 = (ImageView) findViewById(R.id.point1);
point2 = (ImageView) findViewById(R.id.point2);
point3 = (ImageView) findViewById(R.id.point3);
// viewpager
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
//pager
@Override
public void onPageSelected(int position) {
// , ( )
switch (position) {
case 0:
setPointImg(true, false, false);
iv_back.setVisibility(View.VISIBLE);
break;
case 1:
setPointImg(false, true, false);
iv_back.setVisibility(View.VISIBLE);
break;
case 2:
setPointImg(false, false, true);
iv_back.setVisibility(View.GONE);
break;
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
view1 = View.inflate(this, R.layout.pager_item_one, null);
view2 = View.inflate(this, R.layout.pager_item_two, null);
view3 = View.inflate(this, R.layout.pager_item_three, null);
view3.findViewById(R.id.btn_start).setOnClickListener(this);
//
mList.add(view1);
mList.add(view2);
mList.add(view3);
//
mViewPager.setAdapter(new GuideAdapter());
}
//
private void setPointImg(boolean isCheck1, boolean isCheck2, boolean isCheck3) {
if (isCheck1) {
point1.setBackgroundResource(R.drawable.point_on);
} else {
point1.setBackgroundResource(R.drawable.point_off);
}
if (isCheck2) {
point2.setBackgroundResource(R.drawable.point_on);
} else {
point2.setBackgroundResource(R.drawable.point_off);
}
if (isCheck3) {
point1.setBackgroundResource(R.drawable.point_on);
} else {
point3.setBackgroundResource(R.drawable.point_off);
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_start:
case R.id.iv_back:
startActivity(new Intent(this, MainActivity.class));
finish();
break;
}
}
class GuideAdapter extends PagerAdapter {
// , 。
@Override
public int getCount() {
return mList.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
((ViewPager) container).addView(mList.get(position));
return mList.get(position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView(mList.get(position));
}
}