首先一个android app,大多数app首先呈现给用户的基本都是欢迎界面。欢迎界面可以做一些动画效果,提高用户的体验度。
判断用户是否是第一次安装,如果是第一次安装,则进入wizard导航界面,通常导航界面是对业务功能的推广,使用户更加了解该软件 。
欢迎界面可以利用计时器来设定欢迎界面的时间。如果有动画的话设定动画播放完成后再执行判断是否是第一次安装,欢迎界面就不多说了
下面是利用SharedPreferences实现第一次安装时进入wizardactivity否则进入mainactivity:
// TODO Auto-generated method stub
Intent intent = new Intent();
// mSp = getSharedPreferences("config", 0);
String dd = mSp.getString("abc", "no");
if (dd.equals("value")) {
intent.setClass(this, MainActivity.class);
} else {
mSp.edit().putString("abc", "value").commit();
SharedPreferences.Editor sharedata = getSharedPreferences("data",
MODE_PRIVATE).edit();
sharedata.putString("login_state", "false");
sharedata.commit();
intent.setClass(this, WizardActivity.class);
}
startActivity(intent);
finish();
然后看wizard如何实现的:
首先是布局文件(设置radiobutton的button=“@null”目的是为了使radiobutton的每个小圆点隐藏不显示):用相对布局,viewpager+radiogroup。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<android.support.v4.view.ViewPager
android:id="@+id/vp_wizard"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</android.support.v4.view.ViewPager>
<RadioGroup
android:id="@+id/rg_wizard"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="310dp"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/radio0"
android:layout_width="70dp"
android:layout_height="wrap_content"
android:button="@null"
android:checked="true" />
<RadioButton
android:id="@+id/radio1"
android:layout_width="70dp"
android:button="@null"
android:layout_height="wrap_content" />
<RadioButton
android:id="@+id/radio2"
android:button="@null"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RadioGroup>
</RelativeLayout>
fragemnt每一个fragment加载一个布局。
public class Fragment1 extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreateView(inflater, container, savedInstanceState);
View view=inflater.inflate(R.layout.wizard_frag1,container,false);
return view;
}
}
三个fragment表示导航引导界面有3个。
每个fragment加载一个布局。
适配器继承自FragmentPagerAdapter。
public class wizard_viewpager_adapter extends FragmentPagerAdapter {
private ArrayList<Fragment> list_fragments;
public wizard_viewpager_adapter(FragmentManager fm,
ArrayList<Fragment> fragments) {
super(fm);
this.list_fragments = fragments;
// TODO Auto-generated constructor stub
}
@Override
public Fragment getItem(int arg0) {
if (list_fragments != null) {
return list_fragments.get(arg0);
}
return null;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
if (list_fragments != null) {
return list_fragments.size();
}
return 0;
}
}
WizardActivity继承自FragmentActivity代码如下:
public class WizardActivity extends FragmentActivity implements
OnPageChangeListener, OnCheckedChangeListener {
private ViewPager vp_wizard;
private RadioGroup rg_wizard;
private ArrayList<android.support.v4.app.Fragment> list_frag;
private wizard_viewpager_adapter viewpagerAdapter;
private Fragment frag1, frag2, frag3;
@Override
protected void onCreate(Bundle arg0) {
// TODO Auto-generated method stub
super.onCreate(arg0);
setContentView(R.layout.activity_wizard);
initDatas();
initViews();
}
private void initDatas() {
// TODO Auto-generated method stub
list_frag = new ArrayList<Fragment>();
frag1 = new Fragment1();
frag2 = new Fragment2();
frag3 = new Fragment3();
list_frag.add(frag1);
list_frag.add(frag2);
list_frag.add(frag3);
}
private void initViews() {
// TODO Auto-generated method stub
vp_wizard = (ViewPager) findViewById(R.id.vp_wizard);
rg_wizard = (RadioGroup) findViewById(R.id.rg_wizard);
vp_wizard.setCurrentItem(0);
rg_wizard.check(R.id.radio0);
viewpagerAdapter = new wizard_viewpager_adapter(getSupportFragmentManager(), list_frag);
vp_wizard.setAdapter(viewpagerAdapter);
vp_wizard.setOnPageChangeListener(this);
rg_wizard.setOnCheckedChangeListener(this);
}
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// TODO Auto-generated method stub
switch (checkedId) {
case R.id.radio0:
vp_wizard.setCurrentItem(0);
break;
case R.id.radio1:
vp_wizard.setCurrentItem(1);
break;
case R.id.radio2:
vp_wizard.setCurrentItem(2);
break;
}
}
@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
switch (arg0) {
case 0:
rg_wizard.check(R.id.radio0);
break;
case 1:
rg_wizard.check(R.id.radio1);
break;
case 2:
rg_wizard.check(R.id.radio2);
break;
}
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
}
不要导错包,fragment可能会容易导错包。