1.利用Preference存储数据,来记录是否是第一次打开软件(这个方法不适用于那种更新软件引导页面的实现,如果要实现这种业务,可以使用sqlite数据库版本的方式来实现)
2.利用ViewPager实现几个图片之间的切换
3.在最后一张图片,添加button点击事件,进入正式界面。
下面是activity_slide.xml布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/page3" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<ImageButton
android:id="@+id/ib_start"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/transparent"
android:visibility="gone"
android:onClick="start" />
</RelativeLayout>
</LinearLayout>
就是一个viewpager和一个按钮
默认情况下,按钮是不可见的,只有当用户滑动到最后一个页面的时候,按钮才可以被点击
这里使用懒办法,最后一个页面直接被按钮整个覆盖(按钮背景透明)这样用户在最后一个界面无论点击那个地方,都会直接进入主界面
下面是判断应用是否是第一次启动
private SharedPreferences sp;//配置记录文件
sp=getSharedPreferences("config", MODE_PRIVATE);
/**
* 载入主页面,如果是第一次安装程序,则先加载欢迎界面
*/
private void loadMainUI() {
//判断是否是第一次进入程序
if(!sp.getBoolean("isOne", false)){
Intent intent = new Intent(this, SlideActivity.class);
startActivity(intent);
Editor ed=sp.edit();
ed.putBoolean("isOne", true);
ed.commit();
// 启动完成后,释放当前页面
finish();
}else{
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
// 启动完成后,释放当前页面
finish();
}
}
主要功能都是在SlideActivity里,我的代码里写了详细的注释的
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.ImageView;
public class SlideActivity extends Activity {
private ViewPager page;
private List<ImageView> lists;
private ImageButton ib_start;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initView();
}
private void initView() {
setContentView(R.layout.activity_slide);
findView();
fillData();
setListener();
}
private void setListener() {
page.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
if(arg0==2){
ib_start.setVisibility(View.VISIBLE);
}else{
ib_start.setVisibility(View.GONE);
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
}
/**
*查找控件
*/
private void findView() {
ib_start=(ImageButton) findViewById(R.id.ib_start);
page = (ViewPager) findViewById(R.id.viewpager);
}
/**
* 填充数据
*/
private void fillData() {
lists=new ArrayList<ImageView>();
page.setAdapter(new MyPageAdapter());
}
/**
* 最后一个界面按钮所对应的点击事件
* 用于启动应用的主界面
* @param view
*/
public void start(View view) {
finish();
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
}
class MyPageAdapter extends PagerAdapter {
/**
* 这里因为演示,直接写死数据
*/
@Override
public int getCount() {
return 3;
}
/**
* 官方推荐写法
* 判断obj是否是view
*/
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
/**
* 移除一个item
*/
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView(lists.get(position));
}
/**
* 返回一个添加到viewpager的item
*/
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView iv1 = null;
if (position == 0) {
iv1 = new ImageView(SlideActivity.this);
iv1.setBackgroundResource(R.drawable.page1);
} else if(position==1){
iv1 = new ImageView(SlideActivity.this);
iv1.setBackgroundResource(R.drawable.page2);
}else {
iv1 = new ImageView(SlideActivity.this);
iv1.setBackgroundResource(R.drawable.page3);
}
lists.add(iv1);
((ViewPager) container).addView(iv1);
return iv1;
}
}
}