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