实现思路:打开app第一次进入的是logo界面,这个界面只有一个背景图片,进入界面之后发送一个延时1秒的消息,1秒后执行handler。
在sp中保存一个boolean类型的isFirst来标志是否是第一次进入到欢迎向导界面,默认是ture,意思就是是第一次进入;
如果是第一次进入直接进入欢迎向导界面(WelcomeActivity),否则进入主页面;
从图中可以看出WelcomeActivity的布局是一个VIewPager,当欢动到最后一个pager的时候布局中显示一个进入主页面的Button。
当点击这个Button的时候进入主页面并且把sp中boolean类型的isFirst设置为false;作用就是下一次打开app的时候直接进入主页面;
主页面和Logo的布局就不在粘贴了,只有一个textview和ImageView
我们看下欢迎向导页面的代码吧:
public class WelcomeActivity extends Activity{
private ViewPager mViewPager;
private int[] imageIds={R.drawable.guide_1,R.drawable.guide_6,R.drawable.guide_8};
private List<ImageView> imageViewList;
private Button mButton;
private SharedPreferences sp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
sp=getSharedPreferences("config",MODE_PRIVATE);
mViewPager= (ViewPager) findViewById(R.id.viewpager);
mButton= (Button) findViewById(R.id.button);
//设置点击事件,当点击进入主页面时跳转到主页面,并且把sp中的isFirst设置为false,下次进入直接跳过欢迎向导界面进入主页面
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(WelcomeActivity.this,MainActivity.class);
startActivity(intent);
finish();
sp.edit().putBoolean("isFirst",false).commit();
}
});
imageViewList=new ArrayList<ImageView>();
for (int x=0 ;x<imageIds.length;x++){
ImageView iv=new ImageView(this);
iv.setBackgroundResource(imageIds[x]);
imageViewList.add(iv);
}
adapter=new MyViewPagerAdapter();
mViewPager.setAdapter(adapter);
//设置页面改变监听
mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
//当页面选择发生改变的时候
//如果是最后一个页面,显示进入主页面的button
if(position==adapter.getCount()-1){
mButton.setVisibility(View.VISIBLE);
}else {
mButton.setVisibility(View.GONE);
}
}
@Override
public void onPageSelected(int position) {
//当页面滑动的时候
}
@Override
public void onPageScrollStateChanged(int state) {
//当页面滑动状态发生改变的时候
}
});
}
private MyViewPagerAdapter adapter;
class MyViewPagerAdapter extends PagerAdapter{
@Override
public int getCount() {
return imageViewList.size();
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView view=imageViewList.get(position);
container.addView(view);
return view;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
}
}