现在很多的app在第一次登录的时候会进入引导界面,退出app后再登录会直接进入程序主界面,引导界面不在显示
我建立了3个activity主要是为了展示界面内容
布局activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="主界面" android:textSize="50dp"/> RelativeLayout>
布局activity_guide.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="引导界面" android:textSize="50dp"/> RelativeLayout>
布局activity_splash.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="欢迎界面" android:textSize="50dp"/> RelativeLayout>
主要代码在splashActivity中进行 下面run(){....}方法中的代码实现了第一次登录进入引导界面,第二次进入主界面.要是想重复运行看效果,别忘了清数据(最简单的就卸载,重装)
public class SplashActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash); new Handler().postDelayed(new Runnable() { @Override public void run() { Boolean isFirst = SharePreUtil.getBoolean(getApplicationContext(), ConstantValue.ISFIRST, true); if(isFirst){ //进入包含了viewpager那个导航界面 Intent intent = new Intent(getApplicationContext(), GuideActivity.class); startActivity(intent); //将isFirst改为false,并且在本地持久化 SharePreUtil.saveBoolean(getApplicationContext(), ConstantValue.ISFIRST, false); }else{ //进入应用程序主界面 Intent intent = new Intent(getApplicationContext(), MainActivity.class); startActivity(intent); } finish(); } }, 2000); } }
另外还有2个util
public class SharePreUtil { private static SharedPreferences sp; /** 保存数据 **/ public static void saveBoolean(Context ctx, String key, boolean value) { if (sp == null) { sp = ctx.getSharedPreferences("config", Context.MODE_PRIVATE); } sp.edit().putBoolean(key, value).commit(); } /** 取出数据 **/ public static Boolean getBoolean(Context ctx, String key, boolean defValue) { if (sp == null) { sp = ctx.getSharedPreferences("config", Context.MODE_PRIVATE); } return sp.getBoolean(key, defValue); } }
public interface ConstantValue { public static String ISFIRST = "isFirst";//全局静态变量 }