Android入門基礎知識匯總


單位

dp 布局用這個, 與px換算公式 dp(value)=(int) (px(value)/1.5 + 0.5)

sp 用於字體大小的單位

顏色一般使用16進制定義好常量存在資源文件里面

字符串也是不建議hardcode,也需要定義常量

Android上dip、dp、px、sp等單位說明

Manifest配置文件常用的幾個標簽🏷

  1. 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卡中。

  2. 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"] />
    
  3. supports-screens

    聲明應用支持的分辨率類型

    resizeable 是否可以調整尺寸,增加屏幕適配的兼容性
    anyDensity 是否包含了能夠適用於任何屏幕密度的資源

        <supports-screens
            android:anyDensity="true"
            android:largeScreens="true"
            android:normalScreens="true"
            android:resizeable="true"
            android:smallScreens="true"
            android:xlargeScreens="true" />
    
  4. 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" />
    
  5. application

    設置應用整體屬性

    name 設置Application
    label 設置應用名
    icon 啟動圖標
    theme 應用統一theme
    largeHeap 請求開辟更大的應用內存
    hardwareAccelerated 全局開啟硬件加速。不推薦在application中開啟,非要開可以在單獨使用的activity標簽中開,避免過大內存開銷。
    debuggable 指定應用程序是否能夠被調試

    process 這個屬性用於定義一個進程名稱

  6. activity

    screenOrientation 設置當前Activity固定屏幕方向
    configChanges 配置的內容變化是否重啟生命周期
    launchMode 設置當前Activity啟動模式
    exported 設置該activity是否可以被其他應用啟動,設置為true也可以直接啟動就進入該activity
    windowSoftInputMode 共9個屬性,可以分別為軟鍵盤設置始終隱藏,始終顯示,大小調整等類型
    taskAffinity 指定在任務棧的標識
    hardwareAccelerated 開啟硬件加速

  7. 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();
 }

羅列一下各個生命周期函數的調用時機:

  1. 啟動過程

    • onCreate
    • onStart
    • onResume
  2. 按返回鍵

    • onPause
    • onStop
    • onDestroy
  3. 按home鍵

    • onPause
    • onStop
    • 然后再次進入(Activity未被銷毀)
      • onRestart
      • onResume
  4. activity彈出和關閉dialog

    • 彈出調用onPause
    • 關閉調用onResume
  5. 兩個activity跳轉執行方法:

  • A,B,當在A里面啟動BA調用onPause,B調用onCreate,onStart,onResume.然后B窗口覆蓋A窗口,A再調用onStop
  • B回退到AB調用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>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM