編輯:關於Android編程
這是“Android學習之路”系列文章的開篇,可能會讓大家有些失望——這篇文章中我們不介紹簡易版微信的實現(不過不是標題黨哦,我會在後續文章中一步步實現這個應用程序的)。這裡主要是和廣大朋友們聊聊一個非Java程序員對Android操作系統的理解以及一個Android工程的目錄結構,為進一步學習做准備。
1 緣起
智能手機的出現與普及為人們的生活、工作帶來了極大的便利,我們可以用手機隨時隨地、隨心所欲地購物、玩游戲、聊天、聽音樂等等。一個個精心設計、體驗良好的移動客戶端應用,讓用戶們愛不釋手,人們現在已經越來越離不開智能手機了。這或許是廣大程序員學習移動應用開發的一個重要原因吧,這也是我學習Android開發的原因之一。
下面來說說為什麼想寫一個關於Android開發的系列博文。目前是做PC端軟件的開發,主要做的是使用C++編寫圖像處理與顯示的邏輯,軟件的前端界面采用的是WPF。去年下半年,公司鼓勵前端(WPF)轉後端(C++)和後端轉前端,作為一個有上進心的程序員,當然要響應領導的號召了^_^。之後就開始WPF學習之旅了,學了一段時間之後,算是有些入門,至少能用WPF做一些簡單的功能了。也是在那個時候開始博主開始接觸Android,畢竟還是希望在工作之余能夠提升一下自己,於是就看了一些博文和相關的書籍。斷斷續續學了半年,雖然感覺在某些方面與WPF很像,但對Android的理解還是不深刻。於是博主開始思考,怎樣才能更好地理解掌握Android呢?對於一個計算機(或工科)專業出身的人來說,所能想到的最好的學習方法便是實踐——選擇一個不是太復雜的項目,把它一步步做出來,一點點完善它。基於此,決定寫一個系列博客,記錄自己的學習之路和項目開發之路。微信應用是我們日常使用最頻繁的APK了,簡易版的微信實現起來應該不會太復雜,所以就准備開發一個簡易版的微信作為自己Android項目的實踐之旅。
2 一個程序員眼中的Android
關於Android的介紹、發展歷程、目前使用情況以及未來趨勢,在這裡就不做贅述了,這些對廣大程序員朋友來說肯定都有所了解。本節主要是講講自己以從程序員的角度對Android的一點淺薄的理解,當然,一千個讀者心裡有一千個哈姆雷特,每個人對Android的理解都會不一樣,這裡介紹的僅是本人的個人見解。
Android是一個基於Linux內核改造而來的、面向手機端(當然現在Android已經是發展到各個硬件平台上了,包括Android TV、Android Wear等等)的操作系統。Android系統本質上和普通的Linux桌面PC發行版沒什麼區別,Android可以視為手機端Linux的發行版,只不過Google做了完善的封裝,以至於我們幾乎感覺不到Linux的存在。這裡所講的封裝有兩層含義:
(1)對普通用戶而言,Android變得更親民,更大眾化,不像Linux那麼高冷,需要良好的計算機底子的童鞋才能較好地使用;
(2)對應用開發者而言,不需要接觸底層的C代碼和系統庫函數了,我們面對的是一些用Java寫的類庫,其中包括著名的Android四大組件(後續我們詳細闡述)、一套較完備的UI控件和一些輔助的工具類庫。
Android操作系統是分層實現的,其層次結構圖如下圖所示:
這幅框架結構圖,對於一個久經沙場的老兵來說,理解起來也許並不是太困難;但對於一個初入職場不久的小白來說,可能一下子還看的不是很明白。不過沒關系,對於像我們這樣的小菜來說,完全沒必要把所有層次、所有組件都弄清楚:比如Linux Kernel(內核)你有必要一開始就去學習嗎?—— 一開始去就去看這些不就是在自討苦吃麼^_^!?在內核層之上那一層,什麼SQLite、OpenGL|ES、SGL、libc、WebKit等等都是一些著名的開源項目,大多是用C語言寫的,對開發上層應用的我們來說,也壓根沒必要一開始就去學習。最後看最上面一層——Application層,Home、Contacts、Phone……這些其實是系統內置的一些應用,和我們開發的應用沒什麼區別,所以也沒必要花太多時間去了解。對開發應用的我們而言,學好下面兩層就好了:
第一層:Application Framework層,也就是應用框架層。我們編寫應用時所用的大部分組件都來自這裡,最主要的包括:
View System,即視圖系統,定義了一套UI庫,包括布局類和控件類,用它們就可以定義應用程序的界面了,這個庫很龐大,也是我們學習Android開發的一個難點;
Activity Manager,即活動管理器,活動(Activity)是Android四大組件之一,它管理著和用戶界面顯示有關的邏輯和生命周期回調;
Content Provider,即內容提供者,同樣是Android的四大組件之一。數據是應用程序的核心,使用內容提供者就可以實現跨進程/應用的數據共享了。
Notification Manager,通知管理器,用於手機頂部狀態欄顯示系統通知,它也是Android的四大組件之一。
Resource Manager,資源管理器,顧名思義,即管理應用程序資源的,如圖標、背景圖片、常量字符串。
圖中還有一些其他組件,如Package Manager(包管理器)、Location Manager(位置管理器)等,這裡就不具體介紹了,初學時接觸的不多。
第二層:Android Runtime層,也就是安卓運行時層,其實就是一個Java虛擬機——Dalvik虛擬機和一個核心類庫。這部分和普通的Java虛擬機在使用方面都是一樣的,所以這一層雖然在開發中會接觸到,但只要學過Java的,應該都懂。
所以,到此為止,我們應該清楚了學習Android開發要學一些什麼了,其實就是在學習Application Framework層,其他的看看就好,如果想進一步深入的話,等到把基礎的學扎實了再說吧!
3 Android項目的目錄結構
Android開發使用的IDE,主要有Eclipse + Android SDK(Software Develement Kit,軟件開發工具包)、Visual Studio + Xamarin(用C#語言開發Android程序)和Android Studio三種可供選擇,博主采用的是Android Studio 2.0,下載解壓無需安裝,直接就可以使用。關於Android Studio的JDK的配置,請度娘參考相關博客,在此就不做贅述了。
有了IDE,我們就可以很方便地創建一個Android工程了(關於工程創建,直接點擊下一步下一步即可,在此不再贅述)。下面就讓我們在寫代碼前來認識一下一個新建的Android工程的目錄結構,如下圖:
目錄結構一目了然,我們分別學習一下各級目錄結構及其作用。
3.1 清單文件
清單文件即AndroidManifest.xml文件,此文件是Android工程中非常重要的配置文件,用XML來書寫。學習過Java Web的童鞋一定知道,在SSH框架中就有許許多多的XML配置文件。Android中的配置文件和SSH框架中的配置文件功能上有些類似,即為框架運行提供必要的數據,新創建工程的AndroidManifest.xml的代碼如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.doll.firstapplicationdemo" > <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
簡單解釋一下:首先manifest根節點,定義了命名空間和包名;接下來是application結點,代表一個應用程序,其中配置應用程序的標簽、名稱、主題等等;在application結點裡面定義了主Activity(有點類似於Web開發中的首頁),屬性中定義了類名以及意圖過濾器(這裡就不詳細展開了,在後面詳細講解activity時會介紹)。這樣,運行程序時,Android框架就可以幫我們建立必要的對象實例,讓我們的應用程序運行起來了。其實,博主覺得這個配置文件和Spring框架中的ApplicationContext.xml配置文件的功能很類似。當然,這個配置文件不是一成不變的,和SSH框架的配置文件一樣,隨著項目的不斷完善,我們會向其中寫入各種配置信息。
3.2 代碼文件夾
代碼文件夾包括Java源代碼子文件夾和測試代碼子文件夾,展開後如下:
1.源代碼文件夾
目前該文件夾下,定義一個Activity——MainActivity,這個類在之前介紹的清單配置文件中已經提及;以後我們所編寫的程序邏輯類一般都放在這個文件夾下。
2.測試代碼文件夾I(androidTest)
在這個文件夾下放置需要使用Android SDK編寫的測試代碼。當然,一般我們的測試代碼都會用到Android SDK,所以大部分的Android測試代碼都放在這一目錄下。
3.測試代碼文件夾II(test)
在這個文件夾下放置不需要使用Android SDK編寫的測試代碼。
3.3 資源文件夾
資源相當於我們在程序運行之前定義好的數據,也是應用程序的重要組成部分,為此Android Studio專門使用一個文件夾來管理應用程序中使用的資源,其具體目錄結構如下:
一個應用程序通常有很多類型的資源,比如:
drawable:可繪制的資源,如背景圖片、背景選擇器等;
layout:UI布局資源,用於定義用戶界面;
mipmap:圖片資源,從上圖可以看到,分為hdpi(高分辨率)、mdpi(中等分辨率)、xhdpi/xxhdpi/xxxhdpi(超高分辨率…………)的資源,Android框架會根據手機的分辨率自動選擇合適的圖片用於繪制。
values:在這個文件夾下主要放置一些常量資源,比如:顏色常量、維度(尺寸)常量、字符串常量以及樣式常量(定義控件的顯示樣式,類似CSS)等等。
除了上面介紹的這些資源外,Android還支持其他資源,如動畫資源、顏色選擇器資源、菜單資源等,這些在以後博文中都會具體闡述。關於以上這些資源如何定義以及如何在其他資源文件或程序代碼中引用,也將在之後的博文中做進一步介紹。
4 總結
最後來總結一下,本文介紹了學習Android的緣由、個人對Android操作系統的理解以及目前Android工程的目錄結構,其中目錄結構相對比較重要。下一篇將正式開啟我們的APP開發之旅——實現簡易版微信的登陸、注冊界面的編寫與簡單交互。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持本站。
之前的博文《Android 中使用ExpandableListView 實現分組的實例》我簡單介紹了使用ExpandableListView實現簡單的好友分組功能,今天我
堅果手機相信受到了很多朋友的關注,說不定就已經有不少朋友入手了。我們手機在滑動窗口的時候因為設置不同可能會導致窗口動畫縮放的速度不同,大家就就會覺得自己的手
本文實例為大家分享了Android內存中存儲用戶名和密碼的方法,供大家參考,具體內容如下首先是配置文件:<LinearLayout xmlns:android=ht
在android應用中,多屏滑動是一種很常見的風格,沒有采用viewpager的代碼實現會很長,如果采用ViewPager,代碼就會短很多,但是使用ViewPager也有