單位
dp 布局用這個, 與px換算公式 dp(value)=(int) (px(value)/1.5 + 0.5)
sp 用於字體大小的單位
顏色一般使用16進制定義好常量存在資源文件里面
字符串也是不建議hardcode,也需要定義常量
Manifest配置文件常用的幾個標簽🏷
-
manifest
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.example.dev" android:installLocation="auto">package 聲明包名;
xmlns 命名空間的聲明,使得各種Android系統級的屬性能讓我們使用。
installLocation 程序的安裝位置,
有三個值可以選擇:internalOnly、auto、preferExternal
分別為只能裝內置內存中、可相互轉移,優先裝入SD卡中。 -
uses-configuration
這個屬性用於指定該應用程序所需要的硬件和軟件功能
<uses-configuration android:reqFiveWayNav=["true" | "false"] android:reqHardKeyboard=["true" | "false"] android:reqKeyboardType=["undefined" | "nokeys" | "qwerty" | "twelvekey"] android:reqNavigation=["undefined" | "nonav" | "dpad" | "trackball" | "wheel"] android:reqTouchScreen=["undefined" | "notouch" | "stylus" | "finger"] /> -
supports-screens
聲明應用支持的分辨率類型
resizeable 是否可以調整尺寸,增加屏幕適配的兼容性
anyDensity 是否包含了能夠適用於任何屏幕密度的資源<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" /> -
uses-permission
應用所需權限的聲明,常用權限聲明
<!-- 用於進行網絡定位 --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 用於訪問GPS定位 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 獲取運營商信息,用於支持提供運營商信息相關的接口 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 用於訪問wifi網絡信息,wifi信息會用於進行網絡定位 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 這個權限用於獲取wifi的獲取權限,wifi信息會用來進行網絡定位 --> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 用於訪問網絡,網絡定位需要上網 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- 用於讀取手機當前的狀態 --> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <!-- 寫入擴展存儲,向擴展卡寫入數據,用於寫入緩存定位數據 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 撥打電話 --> <uses-permission android:name="android.permission.CALL_PHONE" /> <!-- 調用相機 --> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- 調用閃光燈 --> <uses-permission android:name="android.permission.FLASHLIGHT" /> <!-- 震動器 --> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <!-- 讀取通訊錄 --> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> -
application
設置應用整體屬性
name 設置Application
label 設置應用名
icon 啟動圖標
theme 應用統一theme
largeHeap 請求開辟更大的應用內存
hardwareAccelerated 全局開啟硬件加速。不推薦在application中開啟,非要開可以在單獨使用的activity標簽中開,避免過大內存開銷。
debuggable 指定應用程序是否能夠被調試process 這個屬性用於定義一個進程名稱
-
activity
screenOrientation 設置當前Activity固定屏幕方向
configChanges 配置的內容變化是否重啟生命周期
launchMode 設置當前Activity啟動模式
exported 設置該activity是否可以被其他應用啟動,設置為true也可以直接啟動就進入該activity
windowSoftInputMode 共9個屬性,可以分別為軟鍵盤設置始終隱藏,始終顯示,大小調整等類型
taskAffinity 指定在任務棧的標識
hardwareAccelerated 開啟硬件加速 -
meta-data
這個元素用name-value對的格式給其父組件提供任意可選的數據。
比如各種第三方sdk設置key使用的方式<!-- 友盟Key配置 --> <meta-data android:name="UMENG_APPKEY" android:value="" /> <meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" /> <!-- 高德地圖 --> <meta-data android:name="com.amap.api.v2.apikey" android:value="" />
生命周期介紹
如圖:

public class Activity extends AppCompatActivity {
//類似iOS的viewDidLoad Activity生命周期內只會調用一次
protected void onCreate(Bundle savedInstanceState);
//類似iOS的viewWillAppear 視圖將要出現
protected void onStart();
//重新出現
protected void onRestart();
//類似iOS的viewDidAppear 視圖已經出現 變得活躍
protected void onResume();
//類似iOS的viewWillDisAppear 視圖將要消失
protected void onPause();
//類似iOS的viewDidDisAppear 視圖已經消失 不再活躍
protected void onStop();
//類似iOS的delloc 析構函數
protected void onDestroy();
}
羅列一下各個生命周期函數的調用時機:
-
啟動過程
onCreateonStartonResume
-
按返回鍵
onPauseonStoponDestroy
-
按home鍵
onPauseonStop- 然后再次進入(Activity未被銷毀)
onRestartonResume
-
activity彈出和關閉dialog
- 彈出調用
onPause - 關閉調用
onResume
- 彈出調用
-
兩個activity跳轉執行方法:
A,B,當在A里面啟動B,A調用onPause,B調用onCreate,onStart,onResume.然后B窗口覆蓋A窗口,A再調用onStopB回退到A,B調用onPause,A調用onRestart,onResume,B調用onStop
Activity間傳值方式
- intent傳值
- 靜態變量傳值
- application保存獲取值
- startactivityforresult傳值
- 接口回調傳值
- Eventbus等庫傳值
定義顏色
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#6200EE</color>
<color name="colorPrimaryDark">#3700B3</color>
<color name="colorAccent">#03DAC5</color>
<color name="redColor">#ff0000</color>
<color name="greenColor">#00ff00</color>
<color name="blueColor">#0000ff</color>
<color name="yellowColor">#ffff00</color>
<color name="cyanColor">#00ffff</color>
<color name="pinkColor">#ff00ff</color>
<color name="blackColor">#000</color>
<color name="whiteColor">#fff</color>
<color name="orangeColor">#ff8800</color>
</resources>
