Head First Android Development筆記(1.2.3.4)

一、Diving In

1. 一個(gè)典型的Android APP組成:Layouts—頁(yè)面,XML格式;Activity—定義了APP行為,Java code編寫(xiě);extra resources,APP使用的一些外部組員,如聲音、圖像文件等。

2.Android平臺(tái)結(jié)構(gòu),從下往上。

Linux Kernel,提供驅(qū)動(dòng)、安全和內(nèi)存管理等功能。

C和C++ libraries,提供上層framwork支持

Android Runtime,運(yùn)行java程序的虛擬機(jī),每個(gè)app一個(gè)進(jìn)程。

Application Framework,提供上層APP接口

Application,上層APP

3.APP結(jié)構(gòu)

root folder就是project名,主要關(guān)注的是app folder。

app/build是android studio創(chuàng)建。

app/build/generated/source/r/debug/com.xx.xx/R.java文件,Android使用該文件trackapp的資源內(nèi)容。

app/src/main/java是activities所在。

app/src/main/res/layout是layouts文件所在。

app/src/main/res/values是資源文件,包括string等。

app/src/main/AndroidManifest.xml文件包含了一個(gè)app所需的信息,如包含的組件、需要的libraries和一些其他的聲明。

4.activity_main.xml文件結(jié)構(gòu)

<RelativeLayout></RelativeLayout>標(biāo)簽告訴android按格式顯示其中內(nèi)容。

<TextView />顯示text

5.layout文件包含的string放置在app/src/main/res/values/string.xml文件中,layout中引用使用"@sring/string_name"的方式。

這樣用的原因是方便global change。

<string name="string_name">string real name</string>


二、Apps That Do Something

1.layout中active_*.xml屬性

android:id="@+id/myid",components的id好,activity code中引用id操作該component。

android:text="Mytext",components顯示

android:layout_width="wrap_content"和android:layout_height="wrap_content"制定component的寬高,wrap_content表示將內(nèi)容顯示的big enough。

2.下拉菜單spinner

layout中,使用spinner標(biāo)簽<Spinner />,元素中包含android:entries="@array/beer_colors"。

string.xml中使用string-array,<string-array name="beer_colors"><item>xx</item></string-array>來(lái)表示列表。

3.編寫(xiě)activity

1. layout的button標(biāo)簽中加上android:onClick="onClickName",這里的onClickName實(shí)際上是activity中click button動(dòng)作后實(shí)現(xiàn)的程序內(nèi)容的函數(shù)名

2. activity初始的函數(shù)

public class MainActivity extends Activity{

----protected void onCreate(Bundle savedInstanceState){

--------super.onCreate(savedInstanceState);

--------setContentView(R.layout.activity_main);//告訴android使用哪個(gè)layout

----}

}

3.添加一個(gè)onClickName函數(shù)去實(shí)現(xiàn)點(diǎn)擊按鈕后的動(dòng)作

public void onClickName(View view){//onClickName是layout中button標(biāo)簽中onClick元素值

}

4.使用findViewById()獲取layout中“@+id/xx”對(duì)應(yīng)元件中的值,如TextView brands = (TextView) findViewById(R.id.brands);


三、State Your Intent

講述建立多個(gè)layout的APP如何實(shí)現(xiàn)。

1.AndroidManifest.xml文件,所有的acitivy都應(yīng)該在其中declared

<action android:name="android.intent.action.MAIN">指定APP的主activity

<category android:name="android.intent.category.LAUNCHER">表示這個(gè)activity可以用來(lái)啟動(dòng)APP

2.使用intent去start另一個(gè)activity。

import android.content.Intent;

Intent intent = new Intent(Source.this, Target.class);

startActivity(intent);

3.兩個(gè)activity之間傳遞消息

在傳遞者中,intent.putExtra("message", MessageText);

在接收者中,Intent intent = getIntent(); String messageText = intent.getStringExtra("message");

4.使用action在不同app間傳遞消息

Intent intent = new Intent(Intent.ACTION_SEND);

intent.setType("text/plain");

intent.putExtra(Intent.EXTRA_TEXT, message);

5.每個(gè)app響應(yīng)intent:android從每個(gè)app的AndroidManifest.xml中查找相應(yīng)的intent-filter

<intent-filter>

----<action android:name="android.intent.action.SEND" />

----<category android:name="android.intent.category.DEFAULT" />

----<data android:mimeType="*/*" />

</intent-filter>

四、Being an Activity

1.Hander來(lái)操作多個(gè)線程,schedule code,且不會(huì)block主thread。

2.解決手機(jī)rotated screen造成activity recreated的方法

1. AndroidManifest.xml中<activity>標(biāo)簽中加入android:configChanges="orientation|screenSize"

2. save current state,

public void onSaveInstanceState(Bundle savedInstanceState){

----savedInstanceState.putType("typevalue",typevalue);

}

使用時(shí),在onCreate開(kāi)頭,setContentView后,

if(savedInstanceState != null){

----typevalue = savedInstanceState.getType("typevalue");

}


十三、At your service

1.兩種類型的service,

1. Started service,運(yùn)行到操作結(jié)束,即使activity destroy自己后,仍會(huì)運(yùn)行。如大文件的下載等。使用時(shí)繼承IntentService類。

2. Bound service,運(yùn)行周期在bound activity時(shí),可以和activity進(jìn)行交互。使用時(shí)繼承Service類。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,007評(píng)論 25 709
  • ¥開(kāi)啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開(kāi)一個(gè)線程,因...
    小菜c閱讀 7,325評(píng)論 0 17
  • 1.什么是Activity?問(wèn)的不太多,說(shuō)點(diǎn)有深度的 四大組件之一,一般的,一個(gè)用戶交互界面對(duì)應(yīng)一個(gè)activit...
    JoonyLee閱讀 5,858評(píng)論 2 51
  • 本人初學(xué)Android,最近做了一個(gè)實(shí)現(xiàn)安卓簡(jiǎn)單音樂(lè)播放功能的播放器,收獲不少,于是便記錄下來(lái)自己的思路與知識(shí)總結(jié)...
    落日柳風(fēng)閱讀 19,450評(píng)論 2 41
  • 你屹立在湘江邊,雙目彤彤有神的看著遠(yuǎn)方。 你看,遠(yuǎn)方的風(fēng)景真是美不勝收,河流的水正聚勢(shì)待發(fā)。流...
    文棠心墨閱讀 380評(píng)論 1 0

友情鏈接更多精彩內(nèi)容