第三章 设置界面的模仿以及使用SharePreference来保存设置 3.1

1. java代码

 1 package com.example.qq_login_demo;
 2 
 3 import android.app.Activity;
 4 import android.content.SharedPreferences;
 5 import android.os.Bundle;
 6 import android.util.Log;
 7 import android.widget.CompoundButton;
 8 import android.widget.Switch;
 9 
10 import androidx.annotation.Nullable;
11 
12 public class PreferenceDemoActivity extends Activity implements CompoundButton.OnCheckedChangeListener {
13 
14     private static final String TAG = "PreferenceDemoActivity";
15     private Switch mIsAllowUnknowScource;
16     private SharedPreferences mSharePreferences;
17 
18     @Override
19     protected void onCreate(@Nullable Bundle savedInstanceState) {
20         super.onCreate(savedInstanceState);
21         setContentView(R.layout.activity_preference_demo);
22 
23         // 找到控件
24         mIsAllowUnknowScource = this.findViewById(R.id.is_allow_unknow_apps_sources_switch);
25         mIsAllowUnknowScource.setOnCheckedChangeListener(this);
26 
27         // 取得SharePreference,设置取得内容的文件名为"settings_info"
28         mSharePreferences = this.getSharedPreferences("settings_info", MODE_PRIVATE);
29 
30         // 取得SharePreference中某个键的值
31         boolean state = mSharePreferences.getBoolean("state", false);
32 
33         // 取出之前的设定,使得即使设置后台退出了,也保持当时设置的状态
34         mIsAllowUnknowScource.setChecked(state);
35 
36     }
37 
38     /**
39      * SharePreference 用于保存偏好设置,比如我们设置里面的条目
40      * 详细教程: https://www.jianshu.com/p/59b266c644f3
41      * 使用步骤:
42      *
43      * 第一步: 拿到这个SharePreference
44      * 代码: mSharePreferences = this.getSharedPreferences("settings_info", MODE_PRIVATE);
45      * 这里面这个this指的是Context, 在视频中我们是在Activity里面所以直接使用this。
46      * 因为这Activity间接的继承了Context(前面的学习中提到过
47      *
48      * 第二步: 进入编辑模式
49      * 代码: SharedPreferences.Editor edit = mSharePreferences.edit();
50      * 拿到编辑器
51      *
52      * 第三步: 保存数据
53      * edit.putBoolean("state", isChecked);
54      * 保存要保存的数据类型,例如Boolean,int,String等等,保存的内容是键值对
55      *
56      * 第四步: 提交编辑器
57      * edit.commit()
58      *
59      * 经过这四个步骤,就可以把数据保存到SharePreference
60      *
61      * SharePreference存储也是属于这个内部存储, 它跟file/cache也是一样的,在/data/data/包名下/share_prefs
62      * 以xml的文件形式保存起来。它有一个特点,内容保存都是以键值对的形式保存
63      */
64 
65     @Override
66     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
67         // 对数据进行保存
68         Log.d(TAG, "current state == " + isChecked);
69 //      // 拿到数据编辑器
70         SharedPreferences.Editor edit = mSharePreferences.edit();
71         // 保存数据(键值对)
72         edit.putBoolean("state", isChecked);
73         edit.commit();
74     }
75 }

 

2. layout定义

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="80dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_centerVertical="true">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="未知来源"
        android:textColor="#FF4081"
        android:padding="10dp"
        android:textSize="20sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="允许安装未知来源的应用"
        android:textSize="18sp"
        android:layout_marginLeft="10dp"/>


    </LinearLayout>

    <Switch
        android:id="@+id/is_allow_unknow_apps_sources_switch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="10dp" />


</RelativeLayout>

 

第三章 设置界面的模仿以及使用SharePreference来保存设置 3.1

上一篇:NSIS插件制作


下一篇:SOA和微服务的区别