手機衛士專案(第一天)
1.獲取應用版本資訊
try {
//獲取包管理器
PackageManager pm = getPackageManager();
//獲取包資訊(AndroidManifest.xml檔案裡的所有資訊都封裝在PackageInfo類裡) 引數一:清單檔案裡的包名 引數二:寫0即可
PackageInfo info = pm.getPackageInfo(getPackageName(), 0);
return info.versionName;
} catch (NameNotFoundException e) {
e.printStackTrace();
return "";
}
2.handler.postDelay()執行延時動作 下面這個例子就是延時5秒再彈出吐司
/*
* handler.postDelayed 這個方法的作用是在新執行緒中延遲指定時間去做某個操作
* 第一個引數:需要延遲做的操作
* 第二個引數:延遲的時間
*/
handler.postDelayed(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "哈哈哈",Toast.LENGTH_SHORT).show();
}
}, 5000);
3.如果希以下兩個屬性作用於TextView上並且生效,那麼就需要自定義一個TextView,繼承TextView類,覆寫父類的構造方法,最後再覆寫isFocused方法,永遠返回true即可。
android:ellipsize="marquee"
android:focusableInTouchMode="true"
4.狀態選擇器 手指按下 離開的時候顯示不同顏色或者圖片
在res目錄下建立drawable資料夾,建立顏色選擇器xml檔案(home_item_selector.xml)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/gray" android:state_pressed="true"/>
<!-- pressed -->
<item android:drawable="@color/gray" android:state_focused="true"/>
<!-- focused -->
<item android:drawable="@android:color/transparent"/>
<!-- default -->
</selector>
home_item_selector.xml這個檔案裡引用的顏色是values資料夾下的colors.xml檔案裡定義的顏色
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="gray">#33000000</color>
</resources>
最後將home_item_selector.xml檔案引入到某個佈局檔案,例如這個專案中就是引入到九宮格的grid_home_item.xml檔案中
android:background="@drawable/home_item_selector"
5.自定義的組合控制元件:
(1).建立一個自定義的組合控制元件,繼承一個佈局RelativeLayout或者LinearLayout等
(2).實現父類的建構函式,建立一個initView方法(用於來顯示自定義的控制元件佈局) 在每個建構函式裡都要使用下。
View view = View.inflate(getContext(), R.layout.ui_setting_view,this);//this表示掛載到當前自定義組合控制元件上
(3).宣告名稱空間 res/應用程式裡清單檔案的包名 xmlns:自定義名稱
xmlns:xxc="http://schemas.android.com/apk/res/com.example.mobilesaf"
(4).在自定義元件裡新增自定義屬性: 例如 xxc:title="我是標題"
(5).在valuse資料夾下建立attrs.xml 在裡面宣告自定義的屬性
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="SettingView"><!-- 這個name值在引用的時候加在attr的name前邊 例如SettingView_title -->
<attr name="title" format="string" />
<attr name="desc_on" format="string" />
<attr name="desc_off" format="string" />
</declare-styleable>
</resources>
(6).在自定義組合控制元件的java程式碼裡,在兩個引數的構造方法裡新增如下程式碼
將自定義的屬性 xxc:title之類的 和attrs集合建立對應關係 第二個引數是在R檔案裡自動生成的,是一個陣列,只封裝了自定義的屬性,名字和attrs.xml中declare-styleab標籤中的name屬性一致
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SettingView);
獲取自定義屬性,設定到原始元件上 引數是attrs.xml中declare-styleab標籤中的name屬性 + _ attr標籤中name屬性
String title = a.getString(R.styleable.SettingView_title);
tv_setting_title.setText(title);
專案中SettingView.java 自定義組合控制元件
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.view.View;
import android.widget.CheckBox;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.example.mobilesaf.R;
/**
* 設定介面裡的自定義元件
* 裡面有個Title,Content,CheckBox
*/
public class SettingView extends RelativeLayout {
private TextView tv_setting_title;
private TextView tv_setting_desc;
private CheckBox cb_setting_state;
private String desc_on;
private String desc_off;
public SettingView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initView();
}
public SettingView(Context context, AttributeSet attrs) {
super(context, attrs);
initView();
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SettingView);
String title = a.getString(R.styleable.SettingView_title);
tv_setting_title.setText(title);
desc_on = a.getString(R.styleable.SettingView_desc_on);
desc_off = a.getString(R.styleable.SettingView_desc_off);
}
public SettingView(Context context) {
super(context);
initView();
}
public void initView(){
View view = View.inflate(getContext(), R.layout.ui_setting_view, this);//this表示掛載到當前自定義組合控制元件上
tv_setting_title = (TextView) view.findViewById(R.id.tv_setting_title);
tv_setting_desc = (TextView) view.findViewById(R.id.tv_setting_desc);
cb_setting_state = (CheckBox) view.findViewById(R.id.cb_setting_state);
}
/**
* 設定標題內容
* @param text
*/
public void setTitle(String text){
tv_setting_title.setText(text);
}
/**
* 設定描述內容
* @param text
*/
public void setDesc(String text){
tv_setting_desc.setText(text);
}
/**
* 獲取多選框選中狀態
* @return
*/
public boolean isChecked(){
return cb_setting_state.isChecked();
}
/**
* 設定核取方塊狀態,並設定相應的描述資訊
* @param checked
*/
public void setCheck(boolean checked){
cb_setting_state.setChecked(checked);
if(checked){
setDesc(desc_on);
}else{
setDesc(desc_off);
}
}
}
相關文章
- 手機衛士專案第三天
- 手機衛士專案(第二天)
- Android 專案實戰--手機衛士(實現splash)Android
- 360手機衛士怎麼進入微通訊錄
- 金山手機衛士正式版釋出永久免費
- Android實現仿360手機衛士懸浮窗效果Android
- 全球駭客大賽:360手機衛士研究員獲谷歌致謝谷歌
- 資料衛士
- 伺服器安全衛士伺服器
- 360兒童衛士智慧手錶3代:航天級定位系統
- 007、贈衛八處士
- 360主機衛士Windows版新增黑鏈監控功能Windows
- 360安全衛士的替代軟體
- 360安全衛士怎麼設定電腦定時關機
- 網路安全衛士X-KEY,讓檔案更私密(轉)
- 360安全衛士阻止SQL Server安裝SQLServer
- 360安全衛士如何設定白名單
- 中國400萬家用WiFi不安全 360手機衛士推十大解決方案WiFi
- 溼熱消毒有哪些好處?璽消衛士給你專業回答
- 嘶吼專訪 | 天空衛士楊明非:順勢而為,以人為本的資料安全捍衛者
- 專注資料安全 天空衛士何以應對雲端資料安全威脅?
- 天空衛士API資料安全解決方案API
- 冬奧網路安全衛士招募正式啟動!
- 2345安全衛士1.0版本正式
- 分析周鴻禕的安全衛士360[轉]
- 智慧門鈴攝像頭 一個守衛家園的忠誠衛士
- AppAnnie:2015年7月iQIYI和360手機衛士應用下載量增長顯著APP
- 360安全衛士與win10衝突怎麼辦_360安全衛士與win10衝突如何處理Win10
- 360安全衛士靜態頁面(html+css)HTMLCSS
- 天空衛士為集度智慧汽車系上“安全帶”
- 天空衛士資料安全智慧化走進香港
- IT專案經理手冊之——提高員工士氣的五個例項(轉)
- Angular專案路由配置與導航守衛Angular路由
- 無線端專案 手機初步預覽
- 金山衛士1.0Beta釋出更小更快更安全
- 長安“戰疫”網路安全衛士守護賽writeup
- 360衛士阻止程式建立,導致各種異常
- 天空衛士協助蒙牛打造資料安全堡壘