Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android基礎第一篇

Android基礎第一篇

編輯:關於Android編程

1. 何為1G/ 2G/ 3G/ 4G技術


1.1. G代表什麼?

G代表Generation的簡稱,有代的意思。

1G代表作是大哥大,采用通信標准是模擬制式,只能進行語音通話,不能上網。

2G代表作是小靈通,通信標准是gsm,可以進行語音通話、發短信,也可以簡單上網,上網的協議采用wap。

3G時代的通信標准是WCDMA/CDMA2000等,上網速度更快。

4G時代通信標准是TD-LTE,LTE(Long Time Evolution長期演變過程)。

1.2. 1G/ 2G/ 3G/ 4G的主要區別

最主要區別是采用的制式和上網速度的不同。3G和4G的速度展示如圖:
這裡寫圖片描述

2. Android的起源


Android系統最初由安迪·魯賓等人開發制作,最初開發這個系統的目的是創建一個數碼相機的先進操作系統;後來發現市場需求不夠大,加上智能手機市場快速成長,於是Android被改造為一款面向智能手機的操作系統。Android系統原來的公司名字就叫做Android,於2005年8月被美國科技企業Google收購。2008年第一款搭載Android系統的手機面世(T-Mobile G1也叫HTC Dream)。

3. Android的發展史


Android發展史:誕生八年一路輝煌,Android是以Linux為基礎的開放源碼操作系統。其公司於2003年在美國加州成立。2005年由Google收購注資,並組建開放手機聯盟。2007年11月12日,Android Beta操作系統SDK正式發布。

3.1. Android版本的變化

版本號 版本名稱 1.0 Astro(阿童木) 內測版 1.1 Bender(發條機器人)內測版 1.5 Cupcake(紙杯蛋糕) 1.6 Donut(甜甜圈) 2.1 Eclair(閃電泡芙) 2.2 Froyo(凍酸奶) 2.3 Gingerbread(姜餅) 3.0 Honeycomb(蜂巢) 4.0 Ice cream SandWich(冰激凌三明治) 4.1/4.2/4.3 Jelly Bean(果凍豆) 4.4 KitKat (雀巢巧克力) 5.0/5.1 Lollipop(棒棒糖)(Android L) 6.0 Marshmallow(棉花糖)(Android M) 7.0 Nougat(牛軋糖)

3.2. 不同版本界面比較

以下列舉了Android版本從1.5-4.2的系統界面圖,從圖中可以看出,Android系統的界面越來越美觀。

這裡寫圖片描述

4. Android體系結構


Android體系結構共分四層,如圖:

這裡寫圖片描述

1.Linux內核(Linux Kernel)
Android核心系統服務依賴於Linux2.6內核,如安全性、內存管理、進程管理、網絡協議棧和驅動模型。Linux內核也是作為硬件與軟件棧的抽象層。驅動:顯示驅動、攝像頭驅動、鍵盤驅動、WiFi驅動、Audio驅動、flash內存驅動、Binder(IPC)驅動、電源管理等。

2.函數庫層(Libraries)
Android包含一些C/C++庫,這些庫能被Android系統中不同的組件使用。它們通過Android應用程序框架為開發者提供服務。
系統庫包括九個子系統,分別是圖層管理、媒體庫、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。
Android運行時包括核心庫和Dalvik虛擬機,前者既兼容了大多數Java語言所需要調用的功能函數,又包括了Android的核心庫,比如android.Z喎?/kf/ware/vc/" target="_blank" class="keylink">vc6GiYW5kcm9pZC5uZXShomFuZHJvaWQubWVkaWG1yLXIoaO689XfysfSu9bWu/nT2rzEtObG97XEamF2YdDpxOK7+qOsRGFsdmlr0OnE4rv61vfSqsrHzeqzybbUyfrD/Nbcxtq1xLncwO2horbR1bu1xLncwO2hos/fs8y1xLncwO2horCyyKu6zdLss6O1xLncwO3S1LywwKy7+LvYytW1yNbY0qq5psTcoaM8L3A+DQo8cD4zLtOm08O/8rzcsuOjqEFwcGxpY2F0aW9uIEZyYW1ld29ya6OpPGJyIC8+DQq4w7LjysdBbmRyb2lk06bTw7+qt6K1xLv5tKGjrL+qt6LIy9SxtPOyv7fWx+m/9srH1Nq6zcv8tPK9u7XAoaO/qreiyMvUsdKyv8nS1M3qyKu3w87KusvQxNOm08OzzNDyy/nKudPDtcRBUEm/8rzcoaO4w9Om08OzzNDytcS83Lm5yei8xrzyu6/By9fpvP61xNbY08M7yM66ztK7uPbTptPDs8zQ8ra8v8nS1LeisrzL/LXEuabE3L/psqLH0sjOus7G5Mv8tcTTptPDs8zQ8ra8v8nS1Mq508PG5Mv5t6KyvLXEuabE3L/pKLK7uf21w9fx0a2/8rzctcSwssir0NTP3tbGKaGjzazR+aOsuMPTptPDs8zQ8tbY08O7+tbG0rLKudPDu6e/ydLUt72x47XEzOa7u7PM0PLX6bz+oaM8L3A+DQo8cD40LrLj06bTw7Ljo6hBcHBsaWNhdGlvbnOjqTxiciAvPg0KQW5kcm9pZLvhzazSu8+1wdC6y9DE06bTw7PM0PKw/NK7xvC3orK8o6y4w9Om08OzzNDysPyw/MCoZW1haWy/zbuntsujrFNNU7bMz/vPorPM0PKjrMjVwPqjrLXYzbyjrOSvwMDG96OswarPtcjLudzA7bPM0PK1yKGjy/nT0LXE06bTw7PM0PK2vMrHyrnTw0phdmHT79HUseDQtLXEoaM8L3A+DQo8aDEgaWQ9"5-jvm和dalvik-vm">5. JVM和Dalvik VM


5.1. Dalvik的起源

Dalvik虛擬機是Google公司自主設計的運行於Android平台的Java虛擬機。JVM是歸Oracle公司所有的,運行在基於PC機上的Window 和Linux操作系上的java虛擬機。Google工程師之所以設計Dalvik虛擬機主要有以下兩點原因:若要使用JVM需要獲得授權許可,這意味著需要繳納大量的費用;JVM主要是針對於CPU快,內存大的傳統PC機,不適合移動設備。下圖是Oracle公司和Google公司訴訟歷程:
這裡寫圖片描述

5.2. 兩種虛擬機比較

JVM(Java Virtual Machine),Java虛擬機是虛構出來的運行Java程序的運行時,是通過在實際的計算機上仿真模擬各種計算機功能的實現。它具有完善的硬件架構(如處理器、堆棧、寄存器等),還具有相應的指令系統,使用JVM就是使用Java程序,與操作系統無關。理論上在任何操作系統中,只要有對應的JVM,就可以運行Java程序。
Dalvik VM是在Android系統上運行Android程序的虛擬機,其指令集是基於寄存器架構的,執行特有的文件格式-dex字節碼來完成對象生命周期管理、堆棧管理、線程管理、安全異常管理、垃圾回收等重要功能。

以下是JVM和Dalvik VM編譯過程:
這裡寫圖片描述
jar文件和apk內部組成對比:
這裡寫圖片描述
從它們的編譯過程可以看出:
(1) JVM運行的是.class文件的Java字節碼,但是Dalvik VM運行的是其轉換後的dex(Dalvik Executable)文件。
(2) JVM從.class文件或者JAR包中加載字節碼然後運行,而Dalvik VM無法直接從.class文件或JAR包中加載字節碼,它需要通過dx.bat工具將應用程序所有的.class文件編譯成一個.dex文件,Dalvik VM則運行這個.dex文件。

5.3. ART模式

ART模式英文全稱為:Android RunTime,谷歌Android4.4系統新增的一種應用運行模式,與傳統的Dalvik模式不同,ART模式可以實現更為流暢的安卓系統體驗。

ART模式與Dalvik模式最大的不同在於,在啟動ART模式後,系統在安裝應用的時候會進行一次預編譯,在安裝應用時會先將代碼轉換為機器語言存儲在本地,這樣在運行程序的時候就不回每次都進行一次編譯了,執行效率也大大提升。

但凡事總有正反兩面,ART在解決了該問題的同時,同時也有如:會占用略高一些的存儲空間、安裝程序時要相比普通Dalvik模式要長一些時間來實現預編譯。用一個比喻來說,騎自行車Dalvik是已經折疊起來的自行車,每次騎都要先組裝自行車才能騎,ART是已經組裝好的自行車,每次騎直接上車就能走。

6. Android Sdk的下載安裝


Sdk(Standard Development Kit):標准開發工具集,即我們開發Android應用所需要的工具集。下載步驟如下:
1 打開Eclipse
2 打開SDKManager選項 如下圖:
這裡寫圖片描述
3 下載相對應的版本 如下圖:
這裡寫圖片描述

7. 模擬器的創建


1 打開Android Virtual Device Manager
這裡寫圖片描述
2 創建模擬器,點擊create,填寫具體模擬器參數,點擊ok創建成功。
這裡寫圖片描述
這裡寫圖片描述

參數 參數作用 AVD Name 安卓模擬器名稱 Device 模擬器設備鏡像 Target 模擬器系統版本 CPU/ABI 系統架構 RAM 運行內存 VM Heap 虛擬機最大內存即單個應用最大可用的內存 SD Card Size Sd卡內存大小

8. Android SDK目錄結構


8.1. SDK目錄結構圖

這裡寫圖片描述

8.2. SDK目錄結構介紹

目錄 介紹 AVD Name 安卓模擬器名稱 add-ons 存著一些谷歌提供的附加庫 docs 存著谷歌提供的文檔 extras 谷歌給提供的一些額外的jar包 比如v4 v7 v13 platforms 是每個平台sdk真正的文件 裡面會根據api來劃分api的版本 platform-tools 谷歌給提供了一些常見的工具 比如adb dx.bat aapt等 system-images 提供的系統鏡像 source 谷歌提供的源碼 temp 目錄裡面存放的是臨時文件 tools 谷歌提供的一些額外工具 比如畫9patch圖片

adb(Android Debug Bridge):Android調試橋
dx.bat:把所有的.class文件轉換成一個dex文件
aapt(Android Application Package Tools):應用打包工具

9. ADB環境變量的配置


配置ADB環境變量是為了在命令行中直接使用adb指令,就如同安裝JDK以後配置JDK的環境變量。配置步驟如下:
找到Android SDK下的platform-tools所在的目錄路徑,將路勁添加到環境變量path下,需要注意的是如果是添加在最前面,需要在路勁後面加上分號”;”。

右擊計算機,選擇屬性,然後選擇高級系統設置:
這裡寫圖片描述
選擇環境變量:
這裡寫圖片描述
點擊Path,選擇編輯:
這裡寫圖片描述
將Android SDK下的platform-tools所在的目錄路徑(adb.exe所在目錄)加入:
這裡寫圖片描述
驗證adb環境變量配置成功方法:在命令行中輸入adb命令,會出現如下圖:
這裡寫圖片描述

10. ADB簡介及常見指令


ADB(Android Debug Bridge):ADB是Android提供的一個通用的調試工具,通俗的理解就是debug工具,借助這個工具,我們可以管理設備或手機模擬器的狀態。

指令 功能 adb devices 列出所有的設備 adb start-server 開啟adb服務 adb kill-server 關閉adb服務 adb logcat 查看log adb shell 掛載到linux空間 adb install 安裝應用程序 如adb install helloworld.apk adb uninstall 卸載應用程序 如 adb uninstall helloworld.apk adb push 把文件/目錄推到手機裡 adb pull 把文件/目錄從手機裡面拉出來

11. DDMS使用


11.1. DDMS簡介

DDMS(Dalvik Debug Monitor Service),是Android開發環境中的Dalvik虛擬機調試監控服務。它為我們提供例如:為測試設備截屏、針對特定的進程查看正在運行的線程已經堆信息、Logcat、廣播狀態信息、模擬電話呼叫、接收SMS、虛擬地理坐標等。
DDMS這個工具存放在SDK-tools路徑下。
在Eclipse-ADT中打開DDMS入口如下圖:
這裡寫圖片描述

11.2. DDMS透視圖模塊介紹

模塊 介紹 Devices模塊 列出當前開啟的設備 Logcat模塊 日志貓控制台 Console 控制台 File Explorer 手機文件查看模塊 Emulator control 模擬一下電話的狀態 比如打電話,發短信,地理位置等

Eclipes-ADT中各個模塊的位置:
這裡寫圖片描述

12. HelloWorld及工程目錄


12.1. 創建HelloWorld工程

1 打開Eclipse,右擊創建一個新的Android工程:
這裡寫圖片描述
2 填寫項目名稱、包名、選擇最小支持的sdk版本等信息:
這裡寫圖片描述
3 設置應用程序圖標,然後一直Next,直到最後Finish:
這裡寫圖片描述
這裡寫圖片描述

12.2. 應用程序開發目錄

Android應用程序開發目錄結構如下圖:
這裡寫圖片描述

目錄 作用 src Java源代碼的存放目錄 gen 自動生成目錄,目錄中存放所有由Android開發工具自動生成的文件。目錄中最重要的就是R.java文件,這個文件由Android開發工具自動產生的,Android開發工具會自動根據你放入res目錄的資源,同步更新修改R.java文件。正因為R.java文件是由開發工具自動生成的,所以我們應避免手工修改R.java。R.java在應用中起到了字典的作用,它包含了各種資源的id,通過R.java,應用可以很方便地找到對應資源;另外編繹器也會檢查R.java列表中的資源是否被使用到,沒有被使用到的資源不會編繹進軟件中,這樣可以減少應用在手機占用的空間。 res 資源(Resource)目錄,在這個目錄中我們可以存放應用使用到的各種資源,如xml界面文件,圖片或數據。 libs 支持庫目錄 程序開發時需要的一些三方的jar包可以放在這個目錄,系統會自動把裡面的jar包,添加到環境變量。 assets 資產目錄,當中的文件不會再R文件中生成引用。 bin 自動生成的 apk文件 classes.dex AndroidManifest.xml 項目清單文件 Android中四大組件、權限、版本號需要在清單文件裡面配置。(類比Web工程中的web.xml)

res目錄具體介紹:

目錄 作用 src Java源代碼的存放目錄 res/drawable 存放圖片資源*res/layout:存放布局文件 res/values 存放字符串資源: strings.xml,arrays.xml,colors.xml,dimens.xml,styles.xml res/xml getResources().getXML()讀取 res/raw 存放應用使用到的原始文件,如音效文件等。

13. Apk編譯打包過程


13.1. Apk編譯打包

這裡寫圖片描述
第一步:打包資源文件,生成R.java文件
第二步:處理AIDL文件,生成對應的.java文件
第三步:編譯Java文件,生成對應的.class文件
第四步:把.class文件轉化成Dalvik VM支持的classes.dex文件
第五步:打包生成未簽名的.apk文件
第六步:對未簽名的.apk文件進行簽名
第七步:對前後的.apk文件進行對齊處理。
aapt: Android Application Package Tools 打包apk文件的工具

13.2. 應用程序簽名

Android系統要求每一個Android應用程序必須要經過數字簽名才能夠安裝到系統中,也就是說如果一個Android應用程序沒有經過數字簽名,是沒有辦法安裝到系統中的。我們使用開發工具Eclipse直接將應用程序部署到手機或者模擬器上的時候使用了工具默認的debug簽名。

Android通過數字簽名來表示應用程序的作者和在應用程序之間建立信任關系,這個數字簽名由應用程序的作者完成,並不需要權威的數字證書簽名機構認證,它只是用來讓應用程序包自我認證的。

14. 電話撥號器案例


本案例需要實現的功能是在輸入框中輸入手機號碼,點擊“撥打此號碼”按鈕會撥打輸入框中的手機號碼。

14.1. 編寫頁面布局

這裡寫圖片描述
由於初學者,還沒有學習Android中的常見布局,所以暫時我們可以直接從Eclipse工具中控件欄中拖入控件。

14.2. 編寫業務邏輯

第一步,找到控件的引用:

EditText et_number = (EditText) findViewById(R.id.et_number);
Button btn_call = (Button) findViewById(R.id.btn_call);

第1行,通過findViewById()方法找到控件EditText,返回值是一個View對象,我們需要進行強制裝換成EditText類型,參數傳入該控件在布局文件中的id;
第2行,通過findViewById()方法找到控件Button,返回值是一個View對象,我們需要進行強制裝換Button類型,參數傳入該控件在布局文件中的id;

第二步,給按鈕設置點擊事件監聽:

    btn_call.setOnClickListener(new MyOnClickListener());
    class MyOnClickListener implements OnClickListener{
        @Override
        public void onClick(View v) {
            String number = et_number.getText().toString().trim();
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_CALL);
            intent.setData(Uri.parse("tel:"+number));
            startActivity(intent);
        }
    }

第1行,給Button設置點擊監聽事件,參數傳入我們自定義的監聽對象;
第2行,定義按鈕點擊監聽類,該類需要實現OnClickListener接口,需要實現接口中的onClick方法,當點擊按鈕,會回調接口中的onClick方法;
第3行,通過EditText的getText()得到一個Editable對象,該對象有toString()方法,獲取到EditText中的輸入的值,trim()方法刪除字符串開始和結束位置的空格;
第6行,創建意圖對象;
第7行,設置意圖的動作為撥打電話:Intent.ACTION_CALL;
第8行,設置意圖的數據;
第12行,開啟意圖。
因為應用要使用手機的電話服務,所以需要在清單文件AndroidMainfest.xml中添加電話服務權限:

14.3. 運行測試及結果

如果沒有加上撥打電話的權限,程序會崩潰。查看日志,日志提示需要我們加入android.permission.CALL_PHONE權限:
這裡寫圖片描述
創建兩個模擬器,名稱分別為5554和5556,將應用程序部署到5554模擬器上,輸入號碼5556,點擊撥打按鈕:
這裡寫圖片描述
這裡寫圖片描述

15. 四種點擊事件


15.1. 內部類的方式

Button有setOnClickListener方法,方法參數需要傳入一個接口對象,既然是接口,我們可以來實現該接口。

    btn_call.setOnClickListener(new MyOnClickListener());
    class MyOnClickListener implements OnClickListener{
        @Override
        public void onClick(View v) {
            Log.i("MainActivity", "我被點擊了~~~");
        }
    }

第2-7行,定義一個內部類,實現OnClickListener接口,實現該接口必須實現接口的onClick()方法,當按鈕被點擊了就會自動回調onClick()方法。

15.2. 匿名內部類的方式

該方法與上一種方式大體一致,只不過給Button的setOnClickListener()方法傳入一個匿名內部類作為參數。

    btn_call.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.i("MainActivity", "我被點擊了~~~");
        }
    });

15.3. 當前類實現OnClickListener

讓當前類實現OnClickListener接口,因此必須在該類中必須實現onClick()方法。將this作為參數給Button的setOnClickListener()方法。

    public class MainActivity extends Activity
            implements OnClickListener {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button btn_call = (Button) findViewById(R.id.btn_call);
            btn_call.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            Log.i("MainActivity", "我被點擊了~~~");
        }
    }

15.4. 布局文件聲明onclick屬性

在代碼中我們需要加入一個方法,注意:方法名需要和onClick屬性一致,而且必須傳入View參數:

    public void call(View view){
        Log.i("MainActivity", "我被點擊了~~~");
    }

16. Android中常見布局


16.1. 線性布局LinearLayout

線性布局用標簽標示。分為水平方向和垂直方向兩種,默認為水平方向。
android:orientation=”horizontal”和android:orientation=”vertical” 屬性來控制線性布局的方向。以下為布局代碼和兩種效果展示:

    
    

這裡寫圖片描述
這裡寫圖片描述

16.2. 相對布局RelativeLayout

相對布局RelativeLayout允許子元素指定它們相對於其父元素或兄弟元素的位置,這是實際布局中最常用的布局方式之一。相對布局用標簽標示。
下面是RelativeLayout用到的一些重要的屬性:
第一類:屬性值為true或false

屬性 作用 android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 android:layout_centerInparent 相對於父元素完全居中 android:layout_alignParentBottom 貼緊父元素的下邊緣 android:layout_alignParentLeft 貼緊父元素的左邊緣 android:layout_alignParentRight 貼緊父元素的右邊緣 android:layout_alignParentTop 貼緊父元素的上邊緣

第二類:屬性值必須為id的引用名:”@id/id_name”

屬性 作用 android:layout_below 在某元素的下方 android:layout_above 在某元素的的上方 android:layout_toLeftOf 在某元素的左邊 android:layout_toRightOf 在某元素的右邊 android:layout_alignTop 本元素的上邊緣和某元素的的上邊緣對齊 android:layout_alignLeft 本元素的左邊緣和某元素的的左邊緣對齊 android:layout_alignBottom 本元素的下邊緣和某元素的的下邊緣對齊 android:layout_alignRight 本元素的右邊緣和某元素的的右邊緣對齊

第三類:屬性值為具體的像素值,如30dip,40px

屬性 作用 android:layout_marginBottom 離某元素底邊緣的距離 android:layout_marginLeft 離某元素左邊緣的距離 android:layout_marginRight 離某元素右邊緣的距離 android:layout_marginTop 離某元素上邊緣的距離

16.3. 幀布局FrameLayout

FrameLayout對象好比一塊在屏幕上提前預定好的空白區域,可以將一些元素填充在裡面,如圖片。所有元素都被放置在FrameLayout區域的最左上區域,而且無法為這些元素制指定一個確切的位置,若有多個元素,第一個添加的控件被放在最底層,那麼後面的元素會重疊顯示在前一個元素上,這種顯示方式有些類似於堆棧。
注意點:
a.默認對齊方式是左上角對其。
b.若要設置子視圖的位置,要設置layout_margin、layout_gravity 等屬性值。

    
    <framelayout android:layout_height="fill_parent" android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">

        

        

        

    </framelayout>

這裡寫圖片描述

16.4. 表格布局TableLayout

TableLayout是指將子元素的位置分配到行或列中。Android的一個TableLayout有許多TableRow組成,一個TableRow就是一行,列數按照TableRow中子布局最多的個數。TableLayout容器不會顯示Row,Column,及Cell的邊框線,每個Row擁有0個或多個Cell,每個Cell擁有一個View對象。

    
    
        
            
            
        
        
            
            
        
    

16.5. 絕對布局AbsoluteLayout

一般開發中不會使用,因為不利於屏幕適配。

17. Android中的單位


首先我們需要了解一下幾個重要概念:
什麼是屏幕尺寸、屏幕分辨率、屏幕像素密度?
什麼是dp、dip、dpi、sp、px?他們之間的關系是什麼?
什麼是mdpi、hdpi、xdpi、xxdpi?如何計算和區分?

17.1. 屏幕尺寸

屏幕尺寸指屏幕的對角線的長度,單位是英寸,1英寸=2.54厘米。比如常見的屏幕尺寸有2.4、2.8、3.5、3.7、4.2、5.0、5.5、6.0等。

17.2. 屏幕分辨率

屏幕分辨率是指在橫縱向上的像素點數,單位是px,1px=1個像素點。一般以縱向像素*橫向像素,如320*240,480*320,800*480,1960*1080等。

17.3. 屏幕像素密度

屏幕像素密度是指每英寸上的像素點數,單位是dpi,即“dot per inch”的縮寫。屏幕像素密度與屏幕尺寸和屏幕分辨率有關,在單一變化條件下,屏幕尺寸越小、分辨率越高,像素密度越大,反之越小。

17.4. dp、dip、dpi、sp、px

px:之前的分辨率就是用像素為單位,大多數情況下,比如UI設計、Android原生API都會以px作為統一的計量單位,如獲取屏幕寬高等。

dip和dp是一個意思(設備獨立像素),都是Density Independent Pixels的縮寫,即密度無關像素。之前我們說過dpi是屏幕像素密度,如果一英寸裡面有160個像素,這個屏幕的像素密度就是160dpi,那麼dp和px如何換算呢?

在Android中,規定以160dpi為基准,1dip=1px,如果像素密度是320dpi,則1dip=2px。也就是換算公式為:px=dp*(dpi/160);

sp:即scale-independent pixels,與dp類似,但是可以根據文字大小首選項進行縮放,是設置字體大小的單位。

17.5. mdpi、hdpi、xdpi、xxdpi

其實還有一個ldpi,但是隨著移動設備配置的不斷升級,這個像素密度的設備以及很罕見了,所以現在適配時不需要考慮。
mdpi、hdpi、xdpi、xxdpi用來修飾Android中的drawable文件夾及values文件夾,用來區分不同像素密度下的圖片和dimen值。
那麼如何區分呢?Google官方指定按照下列標准進行區分:
這裡寫圖片描述

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved