25. 设置模块(二)之设置

上一节对“我”模块(二)进行了综述(可参见 “我”模块(二) 进行了解),接下来将从设置模块开始详细介绍:

  • “我”模块(一)之收藏
  • “我”模块(二)之设置
  • “我”模块(三)之修改密码
  • “我”模块(四)之设置密保

知识点

  • 掌握“收藏”界面的开发,能够实现新闻收藏功能。
  • 掌握“设置”界面的开发,能够设置用户的基本信息。
  • 掌握“修改密码”界面的开发,能够实现密码的修改功能。
  • 掌握“设置密保”界面的开发, 能够实现密保的设置功能。

设置

任务综述:
“设置”界面主要包含“修改密码”“设置密保”“退出登录”等功能。当用户点击“修改密码”时会跳转到“修改密码”界面,当用户点击“设置密保”时会跳转到“设置密保”界面,当点击“退出登录”时会退出当前登录的账号。

6. “设置”界面

任务分析:
根据任务综述可知,“设置”界面有三个功能,分别为修改密码、设置密保和退出登录,界面效果如图所示。

25. 设置模块(二)之设置_第1张图片
“设置”界面

任务实施:
(1)创建“设置”界面:SettingActivity & activity_setting。

(2)放置界面控件。
5个View控件,用于显示5条灰色分割线;
2个ImageView控件用于显示右边的箭头图片;
3个TextView控件用于显示界面文字(修改密码、设置密保和退出登录)。

activity_setting.xml



    
    
    
        
        
    
    
    
        
        
    
    
    
    
        
    
    

7. “设置”界面逻辑代码

任务分析:
在“设置”界面中添加点击事件,当点击“修改密码”时会跳转到“修改密码”界面,当点击“设置密保”时跳转到“设置密保”界面,当点击“退出登录”时清除登录状态和用户名,并且将退出的状态传递到“我”界面。

任务实施:
(1)获取界面控件。在SettingActivity中创建界面控件的初始化方法init(),用于获取“设置”界面所要用到的控件以及设置后退键、修改密码、设置密保和退出登录的点击事件。

SettingActivity.java

public class SettingActivity extends AppCompatActivity {
    private TextView tv_main_title, tv_back;
    private RelativeLayout rl_title_bar;
    private RelativeLayout rl_modify_psw, rl_security_setting, rl_exit_login;
    public static SettingActivity instance = null;
    private SwipeBackLayout layout;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        layout = (SwipeBackLayout) LayoutInflater.from(this).inflate(
                R.layout.base, null);
        layout.attachToActivity(this);
        setContentView(R.layout.activity_setting);
        instance = this;
        init();
    }
    private void init() {
        tv_main_title = (TextView) findViewById(R.id.tv_main_title);
        tv_main_title.setText("设置");
        tv_back = (TextView) findViewById(R.id.tv_back);
        rl_title_bar = (RelativeLayout) findViewById(R.id.title_bar);
        rl_title_bar.setBackgroundColor(getResources().getColor(R.color.
                rdTextColorPress));
        rl_modify_psw = (RelativeLayout) findViewById(R.id.rl_modify_psw);
        rl_security_setting = (RelativeLayout) findViewById(R.id.rl_security_setting);
        rl_exit_login = (RelativeLayout) findViewById(R.id.rl_exit_login);
        tv_back.setVisibility(View.VISIBLE);
        tv_back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SettingActivity.this.finish();
            }
        });
        //修改密码的点击事件
        rl_modify_psw.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //跳转到修改密码的界面
                Intent intent = new Intent(SettingActivity.this, ModifyPswActivity.class);
                startActivity(intent);
            }
        });
        //设置密保的点击事件
        rl_security_setting.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //跳转到设置密保界面
                Intent intent = new Intent(SettingActivity.this, FindPswActivity.class);
                intent.putExtra("from", "security");
                startActivity(intent);
            }
        });
        //退出登录的点击事件
        rl_exit_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(SettingActivity.this, "退出登录成功",
                        Toast.LENGTH_SHORT).show();
                //清除登录状态和登录时的用户名
                UtilsHelper.clearLoginStatus(SettingActivity.this);
                //退出登录成功后把退出成功的状态传递到MainActivity中
                Intent data = new Intent();
                data.putExtra("isLogin", false);
                setResult(RESULT_OK, data);
                SettingActivity.this.finish();
            }
        });
    }
}

(2)清除SharedPreferences中的登录状态和登录时的用户名。由于点击“退出登录”时需要清除SharedPreferences中的登录状态和登录时的用户名,因此需要在utils包中的UtilsHelper类中创建一个clearLoginStatus()方法以实现此功能。

    /**
     * 清除SharedPreferences中的登录状态和登录时的用户名
     */
    public static void clearLoginStatus(Context context){
        SharedPreferences sp=context.getSharedPreferences("loginInfo", Context.
                MODE_PRIVATE);
        SharedPreferences.Editor editor=sp.edit(); //获取编辑器
        editor.putBoolean("isLogin", false);        //清除登录状态
        editor.putString("loginUserName", "");     //清除用户名
        editor.commit();                               //提交修改
    }

(3)修改清单文件。由于“设置”界面向右滑动会关闭该界面,因此需要给该界面添加透明主题的样式。

 

(4)修改“我”界面逻辑代码。由于点击“我”界面上的设置条目时会跳转到“设置”界面,因此需要在MeFragment中找到onClick()方法中的注释“//跳转到设置界面”语句下方添加如下代码:

 case R.id.rl_setting:
        if (isLogin) {
         //跳转到设置界面
            Intent settingIntent = new Intent(getActivity(), SettingActivity.class);
            startActivityForResult(settingIntent, 1);
        } else {
            Toast.makeText(getActivity(), "您还未登录,请先登录",
                            Toast.LENGTH_SHORT).show();
       }
 break;

你可能感兴趣的:(25. 设置模块(二)之设置)