手机app用户首次进入广告界面,非首次进入主界面 判断用户是否是首次进入 使用SharedPreferences存储了一个boolean类型的数据, SharedPreferences是使用键值对的方式存储数据的...代码如下:
这是广告界面中:
SharedPreferences sp=
getSharedPreferences("appInfo",MODE_PRIVATE);
//保存状态,flag表示用户是否第一次进入界面
Editor editor=sp.edit();
editor.putBoolean("isFirst",false);
editor.commit();
其中getSharedPreferences()方法中的第一个参数就是一个键,然后第二个参数用于指定操作模式,他是默认的操作模式,表示只有当前的应用程序才可以对当前的SharedPreferences文件进行读写. 然后调用SharedPreferences对象的edit方法来获取一个SharedPreferences.Editor对象.然后使用putBoolean方法将数据添加到SharedPreferences.Editor对象中,最后提交.
然后在第一次进入的首界面中得到SharedPreferences中存储的boolean数据:
这是首界面:
sp=getSharedPreferences("appInfo",MODE_PRIVATE);
//如果是首次使用--->进入导航界面
//否则---->进入主界面
boolean isFirst = sp.getBoolean("isFirst", true);
if(isFirst){//第一次
startActivity(new Intent(StartActivity.this,TwoActivity.class));
}else{//不是第一次
startActivity(new Intent(StartActivity.this,MainActivity.class));
}
StartActivity.this.finish();
得到在广告界面中存入SharedPreferences的boolean数据,将得到的数据设置为true, 得到一个布尔型的值,判断,如果是这个boolean型的值,那么一定是首次进入,因为广告界面已经将这个值变为false,如果你进过广告界面,那么这次就不符合这个判断了,接下来如果不是首次进入就直接跳到主界面. 然后finish();
广告界面还有一个ViewPager和小圆点联动,我自己是这么写的:小圆点的俩种不同颜色的图片,放在mipmap中,使用RadioGroup 中的RadioButton 单选按钮 来实现小圆点随着Viewpager的滑动切换,给小圆点的background 在drawable下面写一个selector,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:drawable="@mipmap/dian2"/>
<item android:state_checked="false" android:drawable="@mipmap/dian1"/>
</selector>
选中的话和未选中的话分别给小圆点俩张图片 然后给Viewpager设置监听让小圆点随着切换
整体代码如下:
这是首界面:
public class StartActivity extends AppCompatActivity {
private SharedPreferences sp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
initThread();
}
private void initThread() {
sp=getSharedPreferences("appInfo",MODE_PRIVATE);
//开启一个线程 让它睡三秒跳转别的页面
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//如果是首次使用--->进入导航界面
//否则---->进入主界面
boolean isFirst = sp.getBoolean("isFirst", true);
if(isFirst){//第一次
startActivity(new Intent(StartActivity.this,TwoActivity.class));
}else{//不是第一次
startActivity(new Intent(StartActivity.this,MainActivity.class));
}
StartActivity.this.finish();
}
}).start();
}
}
布局:只有一个TextView
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.subang.myapppage.StartActivity">
<TextView
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始界面"/>
</RelativeLayout>
广告界面:
package com.example.subang.myapppage;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import java.util.ArrayList;
import java.util.List;
public class TwoActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener {
private ViewPager viewPager;
private RadioGroup radiogroup;
private Button btn;
private RadioButton icon_btn;
//声明一个图片集合
private List<ImageView> mData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
//Android系统状态栏消失 (就是上面的电池电量 信号部位)
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
//控件的初始化
initView();
//广告界面的背景图片
initData();
//适配器
initAdapter();
}
private void initView() {
viewPager = (ViewPager) findViewById(R.id.viewpager);
btn = (Button) findViewById(R.id.text_btn);
radiogroup = (RadioGroup) findViewById(R.id.radiogroup);
//小圆点默认选中第一个
radiogroup.check(R.id.icon_btn1);
//ViewPager的滑动监听
viewPager.addOnPageChangeListener(this);
}
private void initData() {
mData = new ArrayList<>();
for (int i = 0; i < 3; i++) {
//new 一个ImageView
ImageView image = new ImageView(this);
//将mipmap中的图片用代码找出来 参数一就是图片的名字"guide_bg1","guide_bg2"等...
//参数二 就是mipmap 参数三 就是需要当前包名 然后get一下就好了
int mipmap = getResources().getIdentifier("guide_bg" + (i + 1), "mipmap", getPackageName());
image.setImageResource(mipmap);
image.setScaleType(ImageView.ScaleType.FIT_XY);
mData.add(image);
}
}
private void initAdapter() {
MyViewPagerAdapter adapter = new MyViewPagerAdapter(this, mData);
viewPager.setAdapter(adapter);
}
public void start(View v) {
SharedPreferences sp =
getSharedPreferences("appInfo", MODE_PRIVATE);
//保存状态,flag表示用户是否第一次进入界面
Editor editor = sp.edit();
editor.putBoolean("isFirst", false);
editor.commit();
startActivity(new Intent(this, MainActivity.class));
this.finish();
}
//ViewPager滑动监听的三个方法
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
//当前选中的页面 选中哪个页面 就让下面的小圆点跟着联动 只需要一行代码
@Override
public void onPageSelected(int position) {
//这里判断一下ViewPager是否是滑动到最后一页,如果是最后一页,就让Button按钮显示,否则隐藏
if (position == 2) {
btn.setVisibility(View.VISIBLE);
} else {
btn.setVisibility(View.GONE);
}
radiogroup.check(radiogroup.getChildAt(position).getId());
}
@Override
public void onPageScrollStateChanged(int state) {
}
}
广告界面布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.subang.myapppage.TwoActivity">
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<RadioGroup
android:id="@+id/radiogroup"
android:gravity="center"
android:layout_marginBottom="20dp"
android:layout_alignParentBottom="true"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/icon_btn1"
android:layout_width="30dp"
android:layout_height="30dp"
android:background="@drawable/select_iamge"
android:button="@null"/>
<RadioButton
android:id="@+id/icon_btn2"
android:layout_width="30dp"
android:layout_height="30dp"
android:background="@drawable/select_iamge"
android:button="@null"/>
<RadioButton
android:id="@+id/icon_btn3"
android:layout_width="30dp"
android:layout_height="30dp"
android:background="@drawable/select_iamge"
android:button="@null"/>
</RadioGroup>
<Button
android:layout_marginBottom="40dp"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text_btn"
android:text="开始体验"
android:visibility="gone"
android:onClick="start"/>
</RelativeLayout>
主界面基本没写什么,只有布局里面的一个TextView "这里是主界面"
还有一点需要注意的 清单文件中主入口需要改成首界面的
代码:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.subang.myapppage">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
</activity>
<activity android:name=".TwoActivity" />
<activity android:name=".StartActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
好了,到这里一个手机app首界面到广告界面再到主界面就写完了....嘻嘻!!