关于SharePreferences的原理我在此不做赘述(有道云笔记里有写),这里重点分析如果实现首次进入app和之后进入app的页面不同的效果
一.代码
public class WeocomActivity extends AppCompatActivity {
TextView tv;
int count=5;
Handler handler=new Handler(){
@SuppressLint("HandlerLeak")
@Override
public void handleMessage(@NonNull Message msg) {
if(msg.what==1)
{
count--;
if(count==0){
//判断是否是第一次进入此应用,如果是第一次进入此应用,跳到引导界面
boolean isfirst=first_pref.getBoolean("isfirst",true);
Intent intent=new Intent();
if(isfirst){
intent.setClass(WeocomActivity.this, GuideActivity.class);
//为了下一次不跳转更改值
SharedPreferences.Editor editor=first_pref.edit();
editor.putBoolean("isfirst",false);
editor.commit();
}else{
intent.setClass(WeocomActivity.this,MainActivity.class);
}
startActivity(intent);
finish();
}else {
tv.setText(String.valueOf(count));
handler.sendEmptyMessageDelayed(1,800);
}
}
}
};
private SharedPreferences first_pref;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_weocom);
tv=findViewById(R.id.welcome_tv);
first_pref = getSharedPreferences("first_pref", MODE_PRIVATE);
handler.sendEmptyMessageDelayed(1,800);
}}
二.分析
1.利用getSharepreference 创建对象,然后第一个参数是一个标指key,第二个参数的模式,MODE_PRIVATE表示被本应用读写
2.在HandleMessage用getXXX来给isfirst进行赋值
boolean isfirst=first_pref.getBoolean("isfirst",true);
然后写一个判断,创建一个editor对象来更改数据源
SharedPreferences.Editor editor=first_pref.edit();
editor.putBoolean("isfirst",false);
editor.commit();
三.后续
利用ViewPager写第一次进入的跳转页面(略)