安卓初學(xué)基礎(chǔ)學(xué)習(xí)筆記

項(xiàng)目結(jié)構(gòu)介紹

  • src:存放所有java源代碼
  • gen:系統(tǒng)自動(dòng)生成的配置文件
  • Android x.x.x:包括構(gòu)建程序所需的x.x.x版本的安卓SDK、APIs
  • assets:存放資源圖片苏研,未使用時(shí)不會(huì)生成id且不會(huì)加入到apk包里面占大小
  • res:所有用到的資源徘郭,如圖片蛮寂、布局等
  • drawable-xxx:不同分辨率的圖片資源
  • layout:布局文件
  • values:字符串、主題、顏色之宿、樣式等資源文件(values-v11/14 是現(xiàn)在版本出現(xiàn)的 v-11是3.0版本14是4.0版本)
  • AndroManifest.xml:清單文件已烤,配置應(yīng)用的相關(guān)的主要信息(包名鸠窗、權(quán)限、程序組件等)

控件概述

  • <b>TexView:</b>只能做顯示框

    • 控件屬性(id-id胯究,layout_width-寬度稍计,高度,text-內(nèi)容裕循,textSize-字體大谐枷(單位:一般是sp)净刮,textColor-顏色,background-背景)
    • 控件寬度:warp_content-和文本寬度一樣,match_parent-鋪滿(mǎn)父容器(在2.3的api之后添加的屬性),fill_parent-填充父容器(在2.3之前的屬性)
    • 跑馬燈效果:當(dāng)頁(yè)面中只有一個(gè)textView時(shí)铣猩,


      單個(gè)TextView

    多個(gè)時(shí),需要自定義一個(gè)繼承于textView類(lèi)暑认,在里面定義一個(gè)isFocused()方法且返回true,然后再xml里面使用自定義控件(包名.類(lèi)名)


    多個(gè)TextView
  • <b>EditText</b>:輸入框

    • 控件屬性(比顯示框多出了 hint-提示文本大审,inputType-文本類(lèi)型 這2個(gè)屬性)
    • 修改樣式
  • <b>AutoCompleteTextView</b> 動(dòng)態(tài)匹配輸入的內(nèi)容(輸入東西蘸际,出現(xiàn)相應(yīng)的列表以供選擇)

    • 控件屬性(completionThreshold:設(shè)置輸入多少個(gè)字符開(kāi)始匹配)
    • 1.在activity里面找到對(duì)應(yīng)控件,2.創(chuàng)建一個(gè)適配器饥努,3.初始化數(shù)據(jù)源捡鱼,4.用setAdapter將適配器和控件關(guān)聯(lián)起來(lái)


      代碼綁定控件
  • <b>MultiAutoCompleteTextView</b> 相較于autocom...可以多設(shè)置一個(gè)分隔符的屬性

    效果圖展示

初始化


初始化控件
  • <b>ImageView</b>:顯示圖片
    • 控件屬性(src-圖片,background -背景圖片酷愧、顏色)
  • <b>Button驾诈、ImageButton</b>
    • 獲取xml中的按鈕:btn = (Button) findViewById(R.id.button的id);
    • 控件屬性: ImageButton無(wú)text屬性,Button無(wú)src屬性
    • 按鈕onClick事件來(lái)監(jiān)聽(tīng)按鈕點(diǎn)擊(所有控件都有這個(gè)事件)溶浴,
      • 監(jiān)聽(tīng)事件實(shí)現(xiàn)的幾種寫(xiě)法:1.匿名內(nèi)部類(lèi) setOnClickListener(new OnClickLen...這里將會(huì)是一個(gè)bolck回調(diào))乍迄,2.獨(dú)立類(lèi)(相當(dāng)于弄一個(gè)父類(lèi)出來(lái)


        獨(dú)立類(lèi)

,3.實(shí)現(xiàn)接口的方式 需要在類(lèi)實(shí)現(xiàn)OnClickListener接口(使用implements關(guān)鍵詞調(diào)用)士败,會(huì)在當(dāng)前類(lèi)實(shí)現(xiàn)onClick方法(會(huì)自動(dòng)生成)btn.setOnClickListener(this)調(diào)用

  • <b>ToggleButton</b> 開(kāi)關(guān)按鈕-相當(dāng)于switch控件闯两,默認(rèn)是關(guān)閉的

    • 控件屬性: checked-是否為開(kāi),textOff-關(guān)閉顯示什么谅将,textOn-打開(kāi)顯示什么
    • 使用:給按鈕設(shè)置監(jiān)聽(tīng)器漾狼,需要類(lèi)實(shí)現(xiàn)CheckedChangeListener接口


      設(shè)置點(diǎn)擊回調(diào)
  • <b>CheckBox</b> 復(fù)選框

    • 控件屬性:


      屬性
    • 使用:


      使用方法
  • <b>RadioGroup和RadioButton</b> 單選列表

    • 屬性:


      單選列表屬性

String的使用

在string文件里面寫(xiě)入 <string name="xxx(用英文)">調(diào)用后獲取的字符串</string>

implements關(guān)鍵字代表讓一個(gè)類(lèi)擁有另一個(gè)類(lèi)的屬性

六大布局(布局中可以包含其他布局,可相互套用)

線性布局(LinerLayout)

是線性布局控件饥臂,決定它包含的子控件是水平-Hor 還是垂直-Ver 排布方式逊躁。


常用屬性
子控件在Layout中常用屬性

layout_weight這個(gè)屬性賦值 代表所有控件的屬性都加起來(lái)后占得比例。例如:控件a的該屬性=1隅熙,控件b的該屬性=2稽煤,那么到時(shí)候a的比例就是1/3.

相對(duì)布局(RelativeLayout)

控件的位置設(shè)置是相對(duì)的,它包含的子空間將以控件之間相對(duì)位置或子類(lèi)控件相對(duì)于父類(lèi)容器的位置的方式排列囚戚。


效果圖

常用屬性:
相對(duì)父類(lèi)容器的屬性


相對(duì)父類(lèi)容器的屬性

相對(duì)于子類(lèi)控件的屬性


相對(duì)于子控件的屬性

約束布局(ConstraintLayout)

ConstraintLayout是Android Studio 2.2中主要的新增功能之一酵熙,也是Google在去年的I/O大會(huì)上重點(diǎn)宣傳的一個(gè)功能。非常適合使用可視化的方式來(lái)編寫(xiě)界面驰坊,但并不太適合使用XML的方式來(lái)進(jìn)行編寫(xiě)匾二。當(dāng)然,可視化操作的背后仍然還是使用的XML代碼來(lái)實(shí)現(xiàn)的,只不過(guò)這些代碼是由Android Studio根據(jù)我們的操作自動(dòng)生成的察藐。還可以有效地解決布局嵌套過(guò)多的問(wèn)題

  • 添加約束-拖動(dòng)右邊視圖中的點(diǎn)來(lái)確定約束對(duì)應(yīng)哪個(gè)借嗽,可以是底部視圖,也可以是其他控件

    • 控件對(duì)根視圖添加約束

      添加約束

    • 控件之間的約束添加


      控件之間添加約束
  • 刪除約束

    • 單個(gè)約束刪除


      刪除單個(gè)約束
    • 單個(gè)控件所有約束刪除


      刪除所有約束
    • 當(dāng)前頁(yè)面所有約束刪除
      直接選中頂部的這個(gè)按鈕就OK


      刪除當(dāng)前頁(yè)面所有約束

幀布局(FrameLayout)

所有的元素都不能被指定放置的位置转培,它們都在父視圖的左上角,并且后面的子元素在前面子元素之上浆竭。 可以用來(lái)做加載進(jìn)度條和文字浸须。
當(dāng)你想設(shè)置前景圖時(shí),可以使用foreground將當(dāng)前控件放在最前面來(lái)邦泄。

絕對(duì)布局(AbsoluteLayout)

坐標(biāo)布局删窒,直接指定子元素的絕對(duì)位置。
不常用顺囊。了解下就OK

表格布局(TableLayout)

相當(dāng)于tableview 每一行為一個(gè)TableRow對(duì)象肌索,繼承自View。
自身的屬性


屬性

<b>當(dāng)想要所有控件都調(diào)用的話特碳,直接用 = "*";</b>

下面這2個(gè)屬性是使用在TableRow內(nèi)部控件的屬性中的


Row的屬性

Activity(相當(dāng)于OC的VC)

什么是Activity诚亚? 視圖控制器
創(chuàng)建到銷(xiāo)毀的生命周期:

onCreate()----創(chuàng)建
onStart()-----運(yùn)行
onResume()----獲取焦點(diǎn)
onPause()-----失去焦點(diǎn)
onStop()------暫停
onDestory()---銷(xiāo)毀
onRestart()---重新運(yùn)行
st=>start: onCreate
e=>end: onDestory
op1=>operation: onStart
op2=>operation: onResume
op3=>operation: onPause
op4=>operation: onStop
op5=>operation: onRestart
cond=>condition: 不重新啟動(dòng)?

st->op1->op2->op3->op4->cond
cond(yes)->e
cond(no)->op1

從啟動(dòng)到后臺(tái)午乓,再到前臺(tái)的生命周期:

啟動(dòng)->后臺(tái)->前臺(tái)的生命周期

從啟動(dòng)到失去焦點(diǎn)站宗,再到獲取到焦點(diǎn)的生命周期:

啟動(dòng)->失去焦點(diǎn)->獲取焦點(diǎn)的生命周期

Intent-意圖

它可以啟動(dòng)一個(gè)activity、Service益愈、Broadcasts(廣播)

  • 屬性:Action-動(dòng)作(常用),Data-數(shù)據(jù)(常用),Category-分類(lèi),Type-類(lèi)型,Compent-組件,Extra-擴(kuò)展信梢灭。
  • Action-是一個(gè)字符串常量,系統(tǒng)自己定義了一些常量蒸其,例如:ACTION_CALL-啟動(dòng)電話敏释、ACTION_BATTERY_LOW-發(fā)送一個(gè)電池過(guò)低的警告等等。
    • 常見(jiàn)的Action
    1. ACTION_CALL activity 啟動(dòng)一個(gè)電話.
    2. ACTION_EDIT activity 顯示用戶(hù)編輯的數(shù)據(jù).
    3. ACTION_MAIN activity 作為T(mén)ask中第一個(gè)Activity啟動(dòng)
    4. ACTION_SYNC activity 同步手機(jī)與數(shù)據(jù)服務(wù)器上的數(shù)據(jù).
    5. ACTION_BATTERY_LOW broadcast receiver 電池電量過(guò)低警告.
    6. ACTION_HEADSET_PLUG broadcast receiver 插拔耳機(jī)警告
    7. ACTION_SCREEN_ON broadcast receiver 屏幕變亮警告.
    8. ACTION_TIMEZONE_CHANGED broadcast receiver 改變時(shí)區(qū)警告.
  • Data-
組件名稱(chēng) 方法名稱(chēng)
Activity-視圖 startActivity(intent) , startActivityForResult(intent,requestCode)
Servic-服務(wù) startService(Intent service) , bindService(Intent service, ServiceConnection conn,int flags)
Broadcasts-廣播 sendBroadcast()-該方法有很多的方式調(diào)用,sendOrderedBroadcasts-有2個(gè)函數(shù)摸袁,根據(jù)情況使用

其中廣播的Intent參數(shù)的 RequiresPermission 修飾符表示需要許可钥顽,即要權(quán)限。

拿到別人的項(xiàng)目需要配置的地方(協(xié)同開(kāi)發(fā))

Android Studio正確打開(kāi)項(xiàng)目只需要兩步但惶,或者說(shuō)找到兩個(gè)文件進(jìn)行簡(jiǎn)單的修改就好耳鸯,最好在打開(kāi)之前進(jìn)行修改

  • gradle-wrapper.properities
    查找路徑:/gradle/wrapper/ gradle-wrapper.properities,打開(kāi)后可以看到最后一行是一個(gè)地址鏈接膀曾,重點(diǎn)是鏈接的最后部分gradle-2.10-all.zip县爬,AS不同版本對(duì)應(yīng)的GradleWrapper版本號(hào)也不一樣,想知道自己當(dāng)前的是多少添谊,可以在As命令行如gradlew -v查看财喳,也可以新建一個(gè)項(xiàng)目到該路徑下查看,修改完成后保存。
    image.png
  • build.gradle
    第二個(gè)需要修改的文件更好找耳高,就是我們常用的Project下的build.gradle扎瓶,打開(kāi)后找到如圖所示位置,把classpath的gradle版本號(hào)也改成當(dāng)前對(duì)應(yīng)的就行泌枪,至于當(dāng)前的版本號(hào)是多少概荷,隨便打開(kāi)一個(gè)自己在本地創(chuàng)建的project就能知道了

錯(cuò)誤

遇見(jiàn)這種錯(cuò)誤:1) Error:(199) *** Android NDK: Aborting... . Stop.
2)Error:Execution failed for task ':app:compileDebugNdk'. >com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException: Process 'command 'C:\Users\vishal\android-ndk-r10d\ndk-build.cmd'' finished with non-zero exit value 2
解決方法

LogCat調(diào)試 Debug

1,長(zhǎng)什么樣子碌燕?


LogCat

篩選輸出類(lèi)型

2误证,一般常見(jiàn)的輸出信息

常見(jiàn)輸出

紅色的表示錯(cuò)誤信息,以及錯(cuò)誤的原因

錯(cuò)誤信息

OptionsMenu選擇菜單(點(diǎn)擊系統(tǒng)菜單按鈕彈出)

一個(gè)Activity只能有一個(gè)菜單

  • 創(chuàng)建需要重寫(xiě)onCreateOptionsMenu()
    • 可用代碼動(dòng)態(tài)設(shè)置修壕,調(diào)用menuadd()方法
    • xml固定設(shè)置愈捅,使用MenuInflater.infalte()方法引用
  • 監(jiān)聽(tīng)菜單項(xiàng)的點(diǎn)擊,重寫(xiě)onOptionsItemSelected()方法

上下文菜單 (一般是長(zhǎng)按某個(gè)東西彈出的菜單)

一個(gè)View可以擁有一個(gè)菜單慈鸠,常見(jiàn)于文件夾長(zhǎng)按后彈出操作菜單

  • 創(chuàng)建需要先使用 registerForContextMenu() 注冊(cè)上下文菜單 重寫(xiě)onCreateContextMenu()
    • 可用代碼動(dòng)態(tài)設(shè)置蓝谨,調(diào)用menuadd()方法
    • xml固定設(shè)置,使用MenuInflater.infalte()方法引用
  • 監(jiān)聽(tīng)菜單項(xiàng)的點(diǎn)擊青团,重寫(xiě)onContextItemSelected()方法

還有很多需要學(xué)習(xí)譬巫,加油!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末督笆,一起剝皮案震驚了整個(gè)濱河市缕题,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌胖腾,老刑警劉巖烟零,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異咸作,居然都是意外死亡锨阿,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)记罚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)墅诡,“玉大人,你說(shuō)我怎么就攤上這事桐智∧┰纾” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵说庭,是天一觀的道長(zhǎng)然磷。 經(jīng)常有香客問(wèn)我,道長(zhǎng)刊驴,這世上最難降的妖魔是什么姿搜? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任寡润,我火速辦了婚禮,結(jié)果婚禮上舅柜,老公的妹妹穿的比我還像新娘梭纹。我一直安慰自己,他們只是感情好致份,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布变抽。 她就那樣靜靜地躺著,像睡著了一般氮块。 火紅的嫁衣襯著肌膚如雪瞬沦。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天雇锡,我揣著相機(jī)與錄音,去河邊找鬼僚焦。 笑死锰提,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的芳悲。 我是一名探鬼主播立肘,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼名扛!你這毒婦竟也來(lái)了谅年?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤肮韧,失蹤者是張志新(化名)和其女友劉穎融蹂,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體弄企,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡超燃,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拘领。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片意乓。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖约素,靈堂內(nèi)的尸體忽然破棺而出届良,到底是詐尸還是另有隱情,我是刑警寧澤圣猎,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布士葫,位于F島的核電站,受9級(jí)特大地震影響送悔,放射性物質(zhì)發(fā)生泄漏为障。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鳍怨。 院中可真熱鬧呻右,春花似錦、人聲如沸鞋喇。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)侦香。三九已至落塑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間罐韩,已是汗流浹背憾赁。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留散吵,地道東北人龙考。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像矾睦,于是被迫代替她去往敵國(guó)和親晦款。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容