最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Activity和Application

2021-07-06 09:26 作者:獨(dú)行D暗靈  | 我要投稿

Activity簡(jiǎn)介

  1. 一個(gè)Activity代表一個(gè)單獨(dú)的窗口

  2. 一個(gè)應(yīng)用程序中會(huì)有一個(gè)Activity被指定為主界面

  3. Activity用于提供可視化用戶界面的組件,可以與用戶進(jìn)行交互來完成某項(xiàng)任務(wù)

  4. Activity在實(shí)現(xiàn)時(shí),被定義為一個(gè)獨(dú)立的類,并繼承android.App.Activity類或其子類


Activity生命周期:

概念

  • Activity由Activity棧進(jìn)行管理

  • 當(dāng)一個(gè)新的Activity啟動(dòng)時(shí)被放置到棧頂,成為運(yùn)行中的Activity,前一個(gè)Activity保留在棧中,不再放到前臺(tái),直到新的Activity退出為止

  • Activity棧符合“后進(jìn)先出”原則,當(dāng)用戶完成當(dāng)前Activity并單擊Back按鈕時(shí),該Activity會(huì)被彈出棧,并被銷毀,然后恢復(fù)之前的Activity。


模型

onCreate() 第一次創(chuàng)建Activity

onStart() 啟動(dòng)Activity

onResume() 由暫?;謴?fù)到使用

onPause() 暫停Activity

onStop() 停止Activity

onDestory() 銷毀Activity


四種狀態(tài)

  • 運(yùn)行狀態(tài)(Active/Running)

    • 在屏幕的前臺(tái)(棧頂)

  • 暫停狀態(tài)(Paused)

    • 失去焦點(diǎn),但依然可見(非全屏的Activity或透明的Activity被放置在棧頂)

  • 停止?fàn)顟B(tài)(Stopped)

    • 一個(gè)Activity被另外的Activity完全覆蓋,不再可見

  • 銷毀狀態(tài)(Killed)

    • 通過結(jié)束Activity或殺掉進(jìn)程的方式,將處于暫?;蛲V?fàn)顟B(tài)的Activity從內(nèi)存中刪除


三個(gè)關(guān)鍵循環(huán)

  1. 整個(gè)生命周期

    • 從onCreate()開始到onDestroy()結(jié)束

  2. 可見生命周期

    • 從onStart()開始到onStop()結(jié)束

    • 在屏幕中可見,但不能在前臺(tái)可見

  3. 前臺(tái)生命周期

    • 從onResume()開始到onPause()結(jié)束

    • 在所有Activity的最前面,可以與用戶交互


Activity類中的常用方法

方法描述setContentView(int layoutResID)設(shè)置Activity界面布局onCreate(Bundle savedInstanceState)Activity生命周期的方法,用于第一次創(chuàng)建ActivityonStart()Activity生命周期的方法,用于啟動(dòng)ActivityonPause()Activity生命周期的方法,用于暫停ActivityonStop()Activity生命周期的方法,用于停止ActivityonDestory()Activity生命周期的方法,用于銷毀ActivityonResume()Activity生命周期的方法,將Activity由暫停狀態(tài)恢復(fù)使用onRestart()Activity生命周期的方法,將Activity由停止?fàn)顟B(tài)恢復(fù)使用onKeyDown(int keyCode.KeyEvent event)鍵盤按鍵下時(shí)的動(dòng)作事件處理方法onKeyUp(int keyCode.KeyEvent event)鍵盤按鍵抬起時(shí)的動(dòng)作事件處理方法onTouchEvent(MotionEvent event)監(jiān)聽屏幕的觸摸事件處理方法openContextMenu(View view)開啟上下文菜單setResult(int resultCode)返回?cái)?shù)據(jù)給上一個(gè)ActivitystartActivity(Intent intent) startActivityForResult(Intent intent,int requestCode)攜帶數(shù)據(jù)并跳轉(zhuǎn)Activityfinish()結(jié)束當(dāng)前Activity


AppcompaActivity相對(duì)于Activity的兩點(diǎn)變化

  1. AppcompaActivity帶有toolbar的標(biāo)題欄,Activity主界面沒有

  2. theme主題只能用android:theme="@style/AppTheme"(AppTheme主題或其子類)


Log日志信息

方法描述Log.e()記錄錯(cuò)誤信息Log.w()記錄警告信息Log.i()記錄一般提示信息Log.d()記錄調(diào)試信息Log.v()記錄詳細(xì)信息


資源管理

概念

  • 資源是指在代碼中使用的外部文件,包括圖片、音頻、動(dòng)畫和字符串等

  • 在程序中如果直接使用這些資源,會(huì)給閱讀和維護(hù)源碼帶來不便

  • Android對(duì)資源的定義進(jìn)行改變,將應(yīng)用中所用到的各種資源中在res目錄中定義,并為每個(gè)資源自動(dòng)生成一個(gè)編號(hào),在應(yīng)用程序中可以直接通過編號(hào)來訪問這些資源

  • 在Android應(yīng)用程序中,除res目錄外,assets目錄也用于存放資源


res目錄和assets目錄的區(qū)別

  • assets目錄存放應(yīng)用程序無法直接訪問的原生資源,需要通過AssetsManager類以二進(jìn)制流的形式來讀取資源

  • res目錄中的資源會(huì)由Android SDK在編譯時(shí),在R.java文件中為這些資源創(chuàng)建索引,程序可以通過資源清單類R.java對(duì)資源進(jìn)行訪問


資源分類

  • Android常用的資源

    • string、colors、arrays、anim(動(dòng)畫)、layout、drawable(圖像和圖標(biāo))、media(音頻)

  • 分類

    • 原生資源:無法通過由R類進(jìn)行索引的原生資源(assets下)

    • 索引資源:可以通過R類進(jìn)行自動(dòng)索引的資源(res下)

  • 通常指res目錄下的資源


Android資源目錄

目錄描述/res/animator/存放定義屬性動(dòng)畫的XML文件/res/anim/存放定義了補(bǔ)間動(dòng)畫或逐幀動(dòng)畫的XML文件/res/color/存放定義了不同狀態(tài)下顏色列表的XML文件/res/drawable/存放能轉(zhuǎn)換為繪制資源的位圖文件或定義了繪制資源的XML文件/res/mipmap/存放能轉(zhuǎn)換為繪制應(yīng)用啟動(dòng)圖標(biāo)資源的位圖文件/res/layout/存放各種界面布局文件,每個(gè)Activity對(duì)應(yīng)一個(gè)XML文件/res/menu/存放為應(yīng)用程序定義的各種菜單資源/res/raw/存放直接復(fù)制到設(shè)備中的任意文件/res/values/存放定義多種類型資源的XML文件/res/xml/存放任意的原生XMIL文件/assets/存放原生資源,包括音頻文件、視頻文件等


res/drawable文件夾

文件夾名dpi范圍建議尺寸drawable-ldpi0-120無drawable-mdpi120-16048*48drawable-hdpi160-24072*72drawable-nodpi無關(guān)原尺寸drawable-xhdpi240-32096*96drawable-xxhdpi320-480144*144drawable-xxxhdpi480-640192*192


適配規(guī)則

  • Android首先會(huì)選擇drawable-mdpi文件夾下的圖片,文件夾下有這張圖就會(huì)優(yōu)先被使用,圖片不會(huì)被縮放;

  • 但是如果沒有在drawable-mdpi的文件夾下找到相應(yīng)圖片,Android系統(tǒng)會(huì)首先從更高一級(jí)的drawable-hdpi文件夾中查找,如果找到圖片資源就進(jìn)行縮放處理,顯示在屏幕上;

  • 如果drawable-hdpi文件夾下也沒有,就依次往drawable-xhdpi文件夾、 drawable-xxhdpi文件夾、drawable-xxxhdpi文件夾、drawable-nodpi查找;

  • 如果更高密度的文件夾里都沒有找到,就往更低密度的文件夾下查找;

  • 如果都沒找到,最終會(huì)在默認(rèn)的drawable文件夾中尋找,如果默認(rèn)的drawable文件夾中也沒有,則會(huì)報(bào)錯(cuò)。


res/mipmap目錄

  • mipmap:為了加快渲染速度和減少圖像鋸齒,貼圖被處理成由一系列被預(yù)先計(jì)算和優(yōu)化過的圖片組成的文件,這樣的貼圖被稱為mipmap。

  • 適配不同的設(shè)備


drawable與mipmap的區(qū)別

  • 在App中,無論你將圖片放在drawable還是mipmap目錄,系統(tǒng)只會(huì)加載對(duì)應(yīng)密度中的圖片。

  • 在Launcher中,如果使用mipmap,那么Launcher會(huì)自動(dòng)加載更加合適的密度的資源。

  • 應(yīng)用內(nèi)使用到的圖片資源,并不會(huì)因?yàn)槟惴旁趍ipmap或者drawable目錄而產(chǎn)生差異。

  • 單純只是資源路徑的差異R.drawable.xxx或者R.mipmap.xxx。(也可能在低版本系統(tǒng)中有差異)

  • 自動(dòng)跨設(shè)備密度展示的能力是launcher的,而不是mipmap的。


_XML資源文件

分類

  • strings.xml:用于定義文本內(nèi)容的資源文件

  • colors.xml:用于定義顏色設(shè)置的資源文件

  • dimens.xml:用于定義尺寸的資源文件

  • styles.xml:用于定義主題和樣式的資源文件


文本資源文件

  • strings.xml文本資源文件

  • res\values\strings.xml

?<?xml version="1.0" encoding="utf-8"?>
?<resources>
? <string name="title">Resources</string>
? ? ?<string name="message">Hello World!</string>
? ? ?<string name="error">Wrong resource!</string>
?</resources>


  • Java代碼中訪問字符串

?CharSequence AppName = getString(R.string.title);
?CharSequence display = getString(R.string.message);


  • XML文件中訪問字符串資源

?android:App_name="@string/title"
?android:display="@string/message"


顏色資源文件

顏色值的聲明方式

  1. #RGB

  2. #ARGB

  3. #PRGGBB

  4. #AARRGGBB


  • 語法

?<color name=color_name>#color_value</color>

  • 示例

?<?xml version="1.0" encoding="utf-8"?>
?<resources>
? <color name="text_color">#F00</color>
? ? ?<color name="translucent_blue">#800000ff</color>
?</resources>


  • Java中訪問顏色

?int color1 = ContextCompat.getColor(context,R.color.blue);
?int color2 = ContextCompat.getColor(context,R.color.translucent_blue)


在API 23以前的低版本中,使用getResources().getColor(colorRes)方法訪問顏色資源,新版本已經(jīng)用ContextCompat.getColor(context,colorRes)代替。


dimens.xml尺寸定義資源文件

測(cè)量單位描述資源標(biāo)記示例像素實(shí)際的屏幕像素px10px英寸物理測(cè)量單位in6in毫米物理測(cè)量單位mm4mm點(diǎn)普通字體測(cè)量單位pt12pt密度獨(dú)立像素相對(duì)于160pi屏幕的像素dp3dp比例獨(dú)立像素對(duì)于字體顯示的測(cè)量sp10sp


  • dimens.xml

?<?xml version="1.0" encoding="utf-8"?>
?<resource>
? <dimen name="one_pixel">1px</dimen>
? ? ?<dimen name="two_inches">2in</dimen>
? ? ?<dimen name="doublke_density">2dp</dimen>
? ? ?<dimen name="fourteen_sp">14sp</dimen>
?</resource>

  • Java中訪問

?float dimen = getResources.getDimension(R.dimen.one_pixel);
?float dimen = getResources.getDimension(R.dimen.fourteen_sp);

  • XML中訪問

?android:textSize = "@dimen/fourteen_sp"
?android:textSize = "@dimen/double_density"


sytles.xml主題風(fēng)格資源文件

?<sytle name = style_name>
? <item name = item_name>Hex value|string value|reference</item>
?</sytle>

  • Java中訪問樣式資源

?setTheme(R.style.ThemeNew);
?setTheme(R.style.myStyle);

  • XML中訪問樣式資源

?android:App_name="@style/ThemeNew"
?android:display="@style/myStryle"


AndroidManifest.xml清單文件

  • Android應(yīng)用程序的全局描述配置文件

  • 每一個(gè)Android應(yīng)用程序必須有且放在根目錄下

  • 包含信息

    1. 聲明應(yīng)用程序的包名

    2. 描述應(yīng)用程序組件

    3. 確定宿主應(yīng)用組件進(jìn)程

    4. 聲明應(yīng)用程序擁有的權(quán)限

    5. 定義應(yīng)用程序所支持API的最低等級(jí)

    6. 列舉應(yīng)用程序必須鏈接的庫(kù)

  • 設(shè)置清單文件的屬性時(shí)需要遵守幾項(xiàng)規(guī)則:


    • 元素:在所有的元素中只有是必需的且只能出現(xiàn)一次

    • 屬性:元素的屬性大部分是可選的但有少數(shù)屬性是必須設(shè)置的

    • 定義類名:所有的元素名都對(duì)應(yīng)其在SDK中的類名

    • 多數(shù)值項(xiàng):如果某個(gè)元素有超過一個(gè)數(shù)值時(shí),必須通過重復(fù)的方式來說明該元素的某個(gè)屬性具有多個(gè)數(shù)值項(xiàng),且不能將多個(gè)數(shù)值項(xiàng)一次性說明在一個(gè)屬性中

    • 資源項(xiàng)說明:需要引用某個(gè)資源時(shí),采用“@[package:]type:name”格式進(jìn)行引用

    • 字符串值:類似于其他語言

  • 自定義權(quán)限使用元素聲明

?<permission
? ? ? ? ? ? ?android:label="自定義權(quán)限"
? ? ? ? ? ? ?android:description="@string/test"
? ? ? ? ? ? ?android:name="com.example.project.TEST"
? ? ? ? ? ? ?android:protectionLevel="normal"
? ? ? ? ? ? ?android:icon="@drawable/ic_launcher">
?</permission>

  • Android的不同權(quán)限級(jí)別的區(qū)分如下:


    1. normal:低風(fēng)險(xiǎn)

    2. dangerous:高風(fēng)險(xiǎn)

    3. signature:簽名權(quán)限

    4. signatureOrSystem:簽名或系統(tǒng)權(quán)限

Android應(yīng)用程序生命周期

  • Android應(yīng)用程序的生命周期是指在Android系統(tǒng)中進(jìn)程從啟動(dòng)到終止的所有階段,即Android程序啟動(dòng)到停止的全過程

  • 程序的生命周期由Android系統(tǒng)進(jìn)行調(diào)度和控制

  • 在系統(tǒng)內(nèi)存不足的情況下,Android系統(tǒng)會(huì)選擇性的終止一些重要性比較低的應(yīng)用程序,以便回收內(nèi)存供更重要的應(yīng)用程序使用


  • Android根據(jù)應(yīng)用程序的組件及組件當(dāng)前運(yùn)行狀態(tài)將所有的進(jìn)程按重要性程度從高到低劃分為5個(gè)優(yōu)先級(jí)


    1. 前臺(tái)進(jìn)程:顯示在屏幕前端并與用戶交互

    2. 可見進(jìn)程:部分程序界面可見,卻不能與用戶交互

    3. 服務(wù)進(jìn)程:由startService()方法啟動(dòng)服務(wù)的進(jìn)程

    4. 后臺(tái)進(jìn)程:不包含任何已經(jīng)啟動(dòng)的服務(wù),且沒有任何可見的Activity的進(jìn)程

    5. 空進(jìn)程:不包含任何活躍組件的進(jìn)程

Application類、樣式和主題

Application類

  • android.App.Application類代表當(dāng)前運(yùn)行的應(yīng)用程序。

  • 應(yīng)用程序啟動(dòng)時(shí),系統(tǒng)會(huì)自動(dòng)創(chuàng)建對(duì)應(yīng)Application類的實(shí)例,并一直伴隨應(yīng)用程序的生命周期,且始終維持一個(gè)實(shí)例。

  • Application適合保存應(yīng)用程序多個(gè)組件都需要訪問的對(duì)象。

  • 通過擴(kuò)展Application類,可以完成3項(xiàng)工作:


    1. 對(duì)Android運(yùn)行時(shí)廣播的應(yīng)用程序級(jí)事件(如低內(nèi)存)做出響應(yīng)

    2. 在應(yīng)用程序組件之間傳遞對(duì)象

    3. 管理和維護(hù)多個(gè)應(yīng)用程序組件所使用的資源

Application生命周期事件

  • Application類為應(yīng)用程序的創(chuàng)建和終止、低可用內(nèi)存和配置的改變提供了事件處理程序∶

    在重寫這些方法時(shí)必須調(diào)用父類的事件處理程序

    • onCreate()

    • onLowMemory()

    • onTrimMemory()

    • onConfigurationChanged()


實(shí)現(xiàn)Application

  • 步驟

    1. 創(chuàng)建一個(gè)類繼承Application

    2. 在Activity中使用Application類

    3. 運(yùn)行


樣式和主題

  • 樣式:一個(gè)包含一種或者多種格式的集合,一般作為一個(gè)單位用于XML布局的某個(gè)元素中。

  • 主題:一個(gè)包含一種或者多種格式的集合,通常作為一個(gè)單位應(yīng)用到Activity中。


程序中的樣式

  • 步驟:

    1. 在res/values目錄下新建一個(gè)名為style.xml的文件,并增加元素作為根元素

    2. 元素增加一個(gè)全局唯一的name屬性

    3. 元素內(nèi)部聲明一個(gè)或者多個(gè)元素,每一個(gè)元素用于定義了一個(gè)name屬性,并在元素的內(nèi)部進(jìn)行賦值

    4. 引用在其它XML中已經(jīng)定義的資源


  • 樣式的聲明

?<?xml version="1.0" encoding="utf-8"?>
?<resources>
? <style name="SpecialText" parent="@style/Text">
? ? ? <itme name="android:textSize">18sp</itme>
? ? ? ? ?<itme name="android:textColor">#008</itme>
? ? ?</style>
?</resources>

  • 樣式的引用

?<EditText id="@+id/text1"
? ? ? ? ? ?style="@style/SpecialText"
? ? ? ? ? ?android:layout_width="fill_parent"
? ? ? ? ? ?android:layout_height="wrap_content"
? ? ? ? ? ?android:text="Hello,World!" />


程序中的主題

  • 主題的聲明

?<?xml version="1.0" encoding="utf-8"?>
?<resources>
? <style name="CustomTheme">
? ? ? <item name="android:windowNoTitle">true</item>
? ? ? ? ?<item name="windowFrame">@drawable/screen_frame</item>
? ? ? ? ?<item name="windowBackground">@drawable/screen_background_white</itme>
? ? ? ? ?<item name="panelForegroundColor">#FF000000</itme>
? ? ? ? ?<item name="panelBackgroundColor">#FFFFFFFF</item>
? ? ? ? ?<item name="panelTextColor">?paneForgroundColor</item>
? ? ? ? ?<item name="panelTextSize">14</item>
? ? ? ? ?<item name="menuItemTextColor">?panelTextColor</item>
? ? ? ? ?<item name="menuItemTextSize">?panelTextSize</item>
? ? ?</style>
?</resources>

  • 設(shè)定所有Activity都使用同一主題

?<Application android:theme="@style/CustomTheme">

  • 設(shè)定某個(gè)Activity使用某一主題

?<activity android:theme="@style/CustomTheme">

  • 設(shè)置Activity為內(nèi)置的對(duì)話框主題

?<activity android:theme="@android:style/Theme.Dialog">

  • 繼承Theme.Dialog主題生成一個(gè)新主題

?<style name="CustomDialogTheme" parent="@android:style/Theme.Dialog">


  • 在Activity程序中設(shè)置主題

?protected void onCreate(Bundle savedinstanceState){
? ? ?super.onCreate(savedInstanceState);
? ? ?......
? ? ?setTheme(android.R.style.Theme_Light);
? ? ?setContentView(R.layout.linear_layout_3);
? ? ?
?}
? ? ?

在Activity中加載主題時(shí),主題中不能包括任何系統(tǒng)啟動(dòng)該Activity所使用的動(dòng)畫,這些動(dòng)畫將在程序啟動(dòng)前顯示。


  • 在清單文件中配置Activity對(duì)話框格式主題

?<activity android:name".ThemeDemo01Activity"
? ? ? ? ? ?android:theme="@android:style/Theme.Dialog">
?
?</activity>

  • java中設(shè)置Activity對(duì)話框格式主題

?protected void onCreate(Bundle savedInstanceState){
? ? ?super.onCreate(savedInstanceState);
? ? ?setTheme(android.R.style.Theme_Dialog);
? ? ?setContentView(R.layout.activity_theme_demo02);
?}



Activity和Application的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
浮梁县| 专栏| 丽江市| 宁乡县| 玉山县| 巴彦县| 澳门| 丽江市| 阿坝| 黔南| 嫩江县| 抚顺县| 丽水市| 泗阳县| 龙江县| 赤城县| 格尔木市| 宁南县| 云南省| 潞西市| 姜堰市| 巴青县| 武山县| 贡嘎县| 松潘县| 长兴县| 石林| 垫江县| 遂平县| 长沙县| 台湾省| 玉树县| 彰化县| 庆阳市| 泌阳县| 泸溪县| 黎城县| 汉寿县| 金湖县| 新宾| 云浮市|