最近在写一个基础框架,介绍一下最简单的实现引导界面的功能,引导界面包括三个部分,一个Viewpager,一个个圆点指示器,一个Button,用来进入主界面,也可以不需要按钮,到最后一样再向右划动一下在进入。
在写引导界面的时候我们还需要先在启动界面添加一个判断方法,判断是否是第一次进入软件,这个可以用简单的配置文件就饿能搞定
private static final String ISFIRSTIN_FILE="firstinfile";
/*记录的配置值名*/
private static final String ISFIRSTIN="isFirstIn";
/*记录是不是第一次进入的配置文件值*/
private boolean isFirstIn=true;
private Context mcontext;
private SharedPreferences first_index;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splach_main);
first_index=getSharedPreferences(ISFIRSTIN_FILE,MODE_PRIVATE);
isFirstIn=first_index.getBoolean(ISFIRSTIN, true);
mcontext=this;
new Handler().postDelayed(new Runnable() {
public void run() {
/* Create an Intent that will start the Main WordPress Activity. */
if (isFirstIn) {
Intent intent=new Intent(mcontext,Wizard_UI_Avtivity.class);
startActivity(intent);
first_index.edit().putBoolean(ISFIRSTIN,false).commit();
finish();
}
else{
Intent intent=new Intent(mcontext, MainActivity.class);
startActivity(intent);
finish();
}
}
}, 1500);
}
}
第一步,初始化viewpger ,我们可以自定义一个ViewPager,或者默认的也可以,初始化里面包括初始化view的数量和装在资源。代码如下
/**
* 初始化引导界面的paper
*/
private void initeGuidePaper() {
List<View> list1=new ArrayList<View>();
LayoutInflater mLayoutflaer=LayoutInflater.from(this);
for(int index:guide_picture){
item=mLayoutflaer.inflate(R.layout.page_guide,null);
item.setBackgroundResource(index);
list1.add(item);
}
Button btn= (Button) item.findViewById(R.id.wizard_btn_enter);
btn.setVisibility(View.VISIBLE);
btn.setOnClickListener(this);
//ViewPager最重要的设置Adapter,这和ListView一样的原理
MViewPageAdapter adapter = new MViewPageAdapter(list1);
mViewPager.setAdapter(adapter);
mViewPager.setOnPageChangeListener(adapter);
mViewPager.setCurrentItem(0);
}
第二步便是初始化圆点指示器了,注意我这个实现的方法是用pager装载了一个布局文件,而不是简单地view,所以要注意findview的对象,别发生为空的错误。实现方法如下:
/**
* 初始化引导界面的圆点指示器
* @param count 圆点数量
*/
private void initDots(int count){
for (int j = 0; j < count; j++) {
dot_guide.addView(initDot());
}
dot_guide.getChildAt(0).setSelected(true);
}
private View initDot(){
return LayoutInflater.from(getApplicationContext()).inflate(R.layout.layout_dot, null);
}
最后就是只要在pager的点击事件里,添加对圆点指示器的处理就行了。
/**
* 控制页面华东。当滑动时候。设置圆点指示器的同步滑动
*
* @param position
*/
public void onPageSelected(int position) {
if (position == 0) {
mViewPager.setCurrentItem(0);
} else if (position == mViewList.size()) {
mViewPager.setCurrentItem(position);
//startActivity(intent);
}
for (int i = 0; i < dot_guide.getChildCount(); i++) {
if (i == position) {
dot_guide.getChildAt(i).setSelected(true);
} else {
dot_guide.getChildAt(i).setSelected(false);
}
}
}