手机安全卫士(七)----- 回顾之前所写的代码

随着时间的慢慢增加,自己的事情也非常多,也逐渐忘记了自己所写的手机安全卫士的代码,这篇博客不讲别的,就是为了复习之前所写的各种逻辑代码,是自己更能加深一些掌握!这个APP我也会抽时间把他给完成。

第一个要回顾的知识点:APP的设置

一个APP必定有些设置,比如播放背景音乐啊,是否更新啊之类的,这就需要一个sharePreferences来进行存储,这一点是毋庸置疑的,但是那我们该如何去更好的利用这个存储组件呢?

这个知识点需要有两个类来构成,首先是一个功能类SPUtils和一个专门存放常量的Contant类。SPUtils里面全部是一些静态的方法供其他类来调用,Contant存放APP中可能用到的变量。具体的代码如下:

package com.example.yzg.intelligent.utils;

import android.content.Context;
import android.content.SharedPreferences;

import com.example.yzg.intelligent.constant.Constant;

/**
 * Created by yzg on 2019/9/19.
 */

public class SPUtils {

    /**
     *传入上下文  为APP构造一个 设置的一些属性
     * @param context
     * @return
     */
    public static SharedPreferences getSp(Context context){
        //为APP创建一个名为Constant.CONFIG(常量)的sharedPreferences对象
        SharedPreferences sharedPreferences = context.getSharedPreferences(Constant.CONFIG, Context.MODE_PRIVATE);
        return sharedPreferences;
    }


    /**
     * 向APP的设置里面添加值  比如是否更新
     * @param context  传入一个上下文  为了调用这个类中的第一个方法
     * @param key  传入的键值
     * @param state  对应键值的对于错
     */
    public static void putBoolean(Context context,String key,boolean state){
        //根据传入的上下文创建对象
        SharedPreferences sp = getSp(context);
        //利用SharedPreferences对象的edit方法将所有的key和value写入SharedPreferences中
        sp.edit().putBoolean(key,state).commit();

    }

    /**
     * 查看config中key对应的值是多少
     * @param context
     * @param key
     * @return
     */
    public static boolean getBoolean(Context context,String key){
        //传入上下文对象构造SharedPreferences
        SharedPreferences sp = getSp(context);
        //利用SharedPreferences的getBoolean方法获取key的值   如不存在key的值  返回flase
        boolean aBoolean = sp.getBoolean(key,false);
        return aBoolean;
    }


    /**
     * 为config能够添加String配置方法
     * @param context
     * @param key
     * @param value
     */
    public static void putString(Context context,String key,String value){
        SharedPreferences sp = getSp(context);
        sp.edit().putString(key,value).commit();
    }

    /**
     * 
     * @param context
     * @param key
     * @return
     */
    public static String getString(Context context,String key){
        SharedPreferences sp = getSp(context);
        String value = sp.getString(key, null);
        return value;
    }



}

这个类中的第一个方法就是构建shareperferences对象,这样我们就能为APP存储各种键值对了,这个小小的知识点到这就结束了!

第二个知识点:activity的基本写法

具体见代码:

package com.example.yzg.intelligent.activity;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.TextView;
import android.widget.Toast;

import com.example.yzg.intelligent.R;

public class MainActivity extends AppCompatActivity {

    //声明各个组件
    //组件的命名规则   组件的缩写名+activity的钱半部分+组件的作用
    TextView tv_main_title;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        //初始化组件 例如findVIewByID之类的
        initView();
        //为第一步的组件进行赋值
        initData();
        //为这个界面进行添加动画操作
        initAnimation();
        //为相应的组件进行添加动画
        initEvent();
    }

    private void initView() {
        setContentView(R.layout.activity_main);
        tv_main_title = findViewById(R.id.tv_main_title);

    }

    private void initData() {
        tv_main_title.setText("这是第一个界面");

    }

    private void initAnimation() {

    }

    private void initEvent() {
        tv_main_title.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"这是我的第一个界面",Toast.LENGTH_SHORT).show();
            }
        });

    }
}

第三个知识点:如何自定义弹出框

Android系统自带了一个弹出框的用法如下:

final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setTitle("弹出框的标题")
                        .setIcon("弹出框的图标")
                        .setMessage("弹出框的文字")
                        .setPositiveButton("确认", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                
                            }
                        })
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        });
                AlertDialog dialog = builder.show();

那么如何自己编写自己的弹出框呢???

首先建立一个layout布局,在布局里面写入提示框需要的部件信息即可

然后建立相应的弹出框对象;

然后在activity中进行相应的部件初始化,对每个部件进行相应的动画或者事件的处理

最后将布局赋值给弹出框即可

具体的代码:

AlertDialog.Builder builder = new AlertDialog.Builder(HomeActivity.this);
        //利用这个方法  将布局文件转换成View
        View view = View.inflate(getApplicationContext(), R.layout.alter_set_password, null);
        et_password = view.findViewById(R.id.et_password);
        et_confirm_password = view.findViewById(R.id.et_confirm_password);
        btn_confirm = view.findViewById(R.id.btn_confirm);
        btn_cancle = view.findViewById(R.id.btn_cancle);
        btn_cancle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                show.dismiss();
            }
        });
        btn_confirm.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
        
            }});



        //给这个弹出框自定义布局
        builder.setView(view);


        //设置弹出框对象  能够进行下一步弹出框的消失  这是一个关键点
        show = builder.show();

View view = View.inflate(getApplicationContext(), R.layout.alter_set_password, null);

builder.setView(view);
show = builder.show();

这三句代码最重要!!!

第四个知识点:GridView的使用

在一个项目中gridview组件也是比较常用的而一类组件,具体的用法如此下:

首先写一个想呈现出来的布局;

然后进行编写adapter即可

class HomeAdapter extends BaseAdapter {

        //返回有多少项目的个数
        @Override
        public int getCount() {
            return names.length;
        }

        //利用position获得每个项目的对象  根据自 己的需要来使用这个方法
        @Override
        public Object getItem(int position) {
            return null;
        }

        //利用position获得对应项目的ID  根据自己的需要来使用这个方法
        @Override
        public long getItemId(int position) {
            return position;
        }

        //为每一项目的样式赋值
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view = View.inflate(getApplicationContext(),R.layout.home_item,null);
            ImageView imageView  = view.findViewById(R.id.iv_home_item);
            TextView name = view.findViewById(R.id.iv_home_item_name);
            TextView desc = view.findViewById(R.id.iv_home_item_desc);
            imageView.setImageResource(icons[position]);
            name.setText(names[position]);
            desc.setText(descs[position]);
            //一定要写returnView  不写的话会报:Attempt to invoke virtual method 'int android.view.View.getImportantForAccessibility()' on a null object reference
            return view;
        }
    }

今天就先复习到这,明天接着复习!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值