手機安全衛士(七)----- 回顧之前所寫的代碼

隨着時間的慢慢增加,自己的事情也非常多,也逐漸忘記了自己所寫的手機安全衛士的代碼,這篇博客不講別的,就是爲了複習之前所寫的各種邏輯代碼,是自己更能加深一些掌握!這個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;
        }
    }

今天就先複習到這,明天接着複習!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章