日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > Android基礎筆記(一)

Android基礎筆記(一)

來源:程序員人生   發布時間:2015-04-09 08:31:29 閱讀次數:2754次

  • 1G - 5G的介紹
  • Android的操作系統的介紹
  • Android版本
  • Android系統的架構
  • 兩種虛擬機的不同
  • ART模式
  • 摹擬器的簡介
  • SDK目錄
  • Android工程目錄結構
  • 打包的進程
  • ADB經常使用指令
  • 案例電話撥號器
  • 4種點擊事件
  • Android的經常使用布局
  • Andriod中的單位

這里寫圖片描述

1G - 5G的介紹

1st - Generation
代表作是:大哥大,只能進行語音通訊,不能夠發短信、更不能上網。
2nd - Generation
代表作是:小靈通,可以收發短信、可以上網,但是速度幾10Kps,而且不能在通話時使用。
3rd - Generation
速率1般在幾百Kbps,并可以在通話的時候使用,保持在線,移動互聯時期到來。
4th - Generation(LTE - Long Time Evolution - 長時間的進化)
速率到達100Kbps以上,可以在線觀看高清視頻,上傳下載大批量數據。
5th - Generation
速度可到達1Gbps以上,幾近滿足人們的所有需求。

它們之間最大的區分是:速率的不同

Android的操作系統的介紹

Android是由安迪-魯賓開發的,1開始只是1個作為智能相機的系統,隨著手機市場的擴大轉向手機操作系統。

Android名稱:安迪-魯賓非常喜歡1款游戲里面的1個大瓢蟲。

Android的Logo來源 :要求無性別、種族輕視,設計師在上廁所時看到廁所門上的標識,產生的靈感。

Android版本

幾個比較穩定和重要的版本

版本 API 特性
2.3.3 10 增加NFC支付功能,近場感應功能
3.0 11 專為平板電腦和大屏幕裝備優化
4.1.2 16

Android系統的架構

這里寫圖片描述

4層架構:
① Applications 原生的利用程序:閱讀器、桌面、聯系人等
② Application Framework 中間介,java代碼調用底層c代碼,提供各種管理器
③ Libraries(c代碼庫),Android Runtime(Dalvik VM、Libraries C)
④ 底層Linux(安全管理、內存管理、進程管理、電源管理、硬件驅動)

注意:Dalvik VM:虛擬機,android代碼運行在此虛擬機

兩種虛擬機的不同

為何會有兩種虛擬機?
Sun公司的版權問題
傳統的JVM
編寫.java文件 ->編譯為.class文件 -> 打包成 .jar文件(將java源碼編譯為class文件,然后將1組class打包成jar)
基于棧結構,棧存儲于內存中,所以需要內存空間
Dalvik VM
編寫.java文件 -> 編譯為 .class文件 -> 打包成.dex文件 -> 打包成.apk文件(將1組class編譯為1個dex文件,然后有的平臺為了更高的效力會將1個dex轉換成odex文件,將N多個class文件編譯為1個dex,這樣履行效力會比較快,更合適在移動平臺運行)
基于寄存器的結構,寄存器在CPU中,所以用到CPU的空間。

請看下圖,在JVM和DVM中不同的打包結構:

ART模式

 ART模式通過在安裝利用程序時,自動對程序進行代碼預讀取編譯,讓程序直接編譯成機器語言,免去了Dalvik模式要時時轉換代碼,實現高效力、省電、占用更低的系統內存、手機運行流暢。
 
 但凡事總有正反兩面,ART在解決了該問題的同時,同時也有如:會占用略高1些的存儲空間、安裝程序時要相比普通Dalvik模式要長1些時間來實現預編譯。
 
 ART模式是典型的以空間換時間的解決案例。

9 摹擬器的簡介

裝備的常見分辨率

名稱 分辨率 說明
VGA 480*640 標準的視頻接口分辨率
QVGA 240*320 只有VGA的4分之1
HVGA 480*320 只有VGA的2分之1,使用的比較少了,開發使用
WVGA 480*800
FWVGAQ 480:854

Android開發經常使用的適配分辨率:
480 * 800
1280 * 800
VM Heap
虛擬機的內存,每個利用程序所占內存
Snapshot
快照,類似win7的睡眠作用。關閉摹擬器時,會保存當前摹擬器的1些活動狀態,數據,下次啟動會加載這些信息,啟動速度比較快。但是這個快照有bug,不推薦勾選。
CPU
arm、intel,如果下載intel的加速器才能選擇
要使用intel加速器,需要安裝加速器,并且下載相應鏡像文件
Back camera
背部攝像頭
Webcam
使用電腦的攝像頭
VM Heap
DVM的默許大小,單位是M, 每個利用程序所占內存
Internal Storage
手機內部存儲大小
Use host GPU
用電腦的顯卡處理器,顯卡的cpu,電腦獨立顯卡,可以勾選,這樣摹擬器會快點。集成顯卡會花屏
RAM
相當于電腦的內存條,斷點數據丟失
ROM
只讀存儲器,相當于電腦的1塊硬盤,斷點數據不丟失

SDK目錄

add-ons
寄存高級利用的API的文件
build-tools
構建工具
docs
開發文檔
extras
寄存依賴的第3方的包
platforms
各個平臺的文件
sources
API的源代碼文件
system-images
系統的鏡像文件
tools
工具文件

Android工程目錄結構

src
源代碼
gen
系統自動生成的文件
R.java中記錄了項目中的各種資源,相當于1個字典
Android 4.2
當前工程所使用的SDK
assets
資產目錄
不會在R文件中注冊,原封不動的打包到APK中
bin
編譯后的2進制文件
包括class、資源文件、dex、apk、清單文件等
libs
工程中所使用的庫
res
系統資源,所有文件都會在R文件生成資源ID

① drawable:圖片資源

  1. drawable-hdpi:高分辨率的圖片目錄
  2. drawable-ldpi:低分辨率的圖片目錄
  3. drawable-mdpi:中分辨率的圖片目錄
  4. drawable-xhdpi:大分辨率的圖片目錄
  5. drawable-xxhdpi:超大分辨率的圖片目錄
② layout:界面布局
③ menu:菜單
④ values:字符串、樣式等數據
⑤ anim:動畫文件
⑥ raw:原生文件

AndroidManifest.xml
① Android中的4大組件(Acticity、ContentProvider、BroadcaseReceiver、Service)都需要在該文件中注冊
② 程序所需的權限也需要在此文件中聲明

打包的進程

使用aapt(application android package tools)工具打包

編譯 -> 打包 -> 簽名 -> adb -> 部署得手機上

這里寫圖片描述

ADB經常使用指令

顯示已連接的裝備
adb devices
顯示內容:裝備名,狀態(device、offline)
導入文件得手機
adb push <手機目標路徑>
:把電腦上的文件推送到摹擬器里
從手機導出文件
adb pull <手機源文件路徑>
:把摹擬器中的文件拉到電腦
安裝程序
adb install

(案例)電話撥號器

// 3. 找到edit控件 EditText et_number = (EditText) findViewById(R.id.et_number); // 4. 獲得到電話號碼 String number = et_number.getText().toString().trim(); if (TextUtils.isEmpty(number)) { // 土司 Toast.makeText(MainActivity.this, "不能為空", Toast.LENGTH_LONG) .show(); return; } // 5. 撥打電話 底層原理:socket通訊 Intent intent = new Intent(); // 創建1個意圖:想干甚么事 intent.setAction(Intent.ACTION_CALL); // 6. 設置撥打電話的數據 // Uri 包括了 Url intent.setData(Uri.parse("tel:" + number)); // Uri:統1資源標識符,Url:統1資源定位符 // 7.開啟意圖 startActivity(intent);

16 4種點擊事件

使用內部類實現OnClickListener接口來實現

private class MyButton implements OnClickListener { @Override public void onClick(View v) { // 3. 找到edit控件 EditText et_number = (EditText) findViewById(R.id.et_number); // 4. 獲得到電話號碼 String number = et_number.getText().toString().trim(); if (TextUtils.isEmpty(number)) { // 土司 Toast.makeText(MainActivity.this, "不能為空", Toast.LENGTH_LONG) .show(); return; } // 5. 撥打電話 底層原理:socket通訊 Intent intent = new Intent(); // 創建1個意圖:想干甚么事 intent.setAction(Intent.ACTION_CALL); // 6. 設置撥打電話的數據 // Uri 包括了 Url intent.setData(Uri.parse("tel:" + number)); // Uri:統1資源標識符,Url:統1資源定位符 // 7.開啟意圖 startActivity(intent); } }

通過匿名內部類來實現

// 實現點擊事件的第2種方式:匿名內部類 btn_call.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { callPhone(); } });

由類文件去實現監聽接口

public class MainActivity extends Activity implements OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 1. 找到按鈕 Button btn1 = (Button) findViewById(R.id.button1); Button btn2 = (Button) findViewById(R.id.button2); Button btn3 = (Button) findViewById(R.id.button3); Button btn4 = (Button) findViewById(R.id.button4); Button btn5 = (Button) findViewById(R.id.button5); // 設置點擊事件的第3種方式 btn1.setOnClickListener(this); btn2.setOnClickListener(this); btn3.setOnClickListener(this); btn4.setOnClickListener(this); btn5.setOnClickListener(this); } private void callPhone() { // 3. 找到edit控件 EditText et_number = (EditText) findViewById(R.id.et_number); // 4. 獲得到電話號碼 String number = et_number.getText().toString().trim(); // 5. 撥打電話 底層原理:socket通訊 Intent intent = new Intent(); // 創建1個意圖:想干甚么事 intent.setAction(Intent.ACTION_CALL); // 6. 設置撥打電話的數據 // Uri 包括了 Url intent.setData(Uri.parse("tel:" + number)); // Uri:統1資源標識符,Url:統1資源定位符 // 7.開啟意圖 startActivity(intent); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.button1: callPhone(); break; case R.id.button2: break; case R.id.button3: break; case R.id.button4: break; case R.id.button5: break; default: break; } } }

在布局文件增加onclick屬性,并在代碼中添加對應的方法,并且傳入View參數

在布局文件中注冊點擊事件

<Button android:onClick="click" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/et_number" android:layout_below="@+id/et_number" android:layout_marginTop="32dp" android:text="撥打" />

在代碼中增加對應的方法

// 按鈕的第4種點擊事件,原理:利用的反射技術 // 第4種方式缺點:稀里糊涂 public void click(View v) { callPhone(); }

Android的經常使用布局

線性布局
水平、垂直顯示,如果有多個組件,超越屏幕大小,超越部份就不顯示
可以通過android:orientation來定義方向
android:orientation=“horizontal”表示水平方向
android:orientation=“vertical”表示垂直方向
相對布局
相對布局是實際布局中最經常使用的布局方式之1。
相對布局在xml文件中使用來定義。
相對布局可以設置某1個視圖相對其他視圖的位置,這些位置可以包括上下左右等,因此相較于其他的布局方式而言具有很大的靈活性。
RelativeLayout的經常使用屬性有以下1些: 第1類:屬性值為true或false   android:layout_centerHrizontal 水平居中   android:layout_centerVertical 垂直居中   android:layout_centerInparent 相對父元素完全居中   android:layout_alignParentBottom 貼緊父元素的下邊沿   android:layout_alignParentLeft 貼緊父元素的左側緣   android:layout_alignParentRight 貼緊父元素的右側緣   android:layout_alignParentTop 貼緊父元素的上邊沿    第2類:屬性值必須為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 本元素的右側緣和某元素的的右側緣對齊 第3類:屬性值為具體的像素值   android:layout_marginBottom 離某元素底邊沿的距離   android:layout_marginLeft 離某元素左側緣的距離   android:layout_marginRight 離某元素右側緣的距離   android:layout_marginTop 離某元素上邊沿的距離
表格布局
使用的較少
幀布局
框架布局是將控件組織在Android程序的用戶界面中最簡單的布局類型之1。
框架布局在xml文件中使用來定義。
框架布局中的子視圖總是被繪制到相對屏幕的左上角上,所有添加到這個布局中的視圖都是以層疊的方式顯示,第1個添加到框架布局中的視圖顯示在最底層,最后1個被放在最頂層,上1層的視圖會覆蓋下1層的視圖,類似于html中的div。
在框架布局中,經常使用的屬性有以下幾項:   android:top 將視圖放到屏幕的頂端   android:Buttom 將視圖放到屏幕的低端   android:Left 將視圖放到屏幕的左端   android:Right 將視圖放到屏幕的右端   android:Center_vertical 將視圖依照垂直方向居中顯示   android:Center_horizontal 將視圖依照水平方向居中顯示

Andriod中的單位

dip
縮寫:dp
1個基于density(密度)的抽象單位,這個和裝備硬件有關,通常在開發中設置1些view的寬高推薦用這個,1般情況下,在不同分辨率,都不會有縮放的感覺。
在運行時, Android根據使用中的屏幕的實際密度, 透明地處理任何所需dip單位的縮放。
不依賴裝備像素,根據裝備自動適應大小,推薦使用
sp
同dip/dp類似,會根據用戶的字體大小偏好來縮放,專門用于設置字體的大小
px
像素,是屏幕的物理像素點,與密度相干,密度大了,單位面積上的px會比較多。在不同分辨率下會有不同的效果,通常不推薦使用這個。

這里寫圖片描述

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产午夜精品在线观看 | 日本精品久久 | 国产精品久久99 | 91网站在线观看视频 | 久久看看 | 欧美日韩国产一区二区三区 | 亚洲国产精品99久久久久久久久 | 国产97视频| 日韩国产精品一区二区 | 日韩欧美激情电影 | 欧美一区二区三区免费看 | 国产在线视频不卡 | 成人黄色片免费看 | 亚洲国产成人精品女人久 | 国产视频一区在线观看 | 视频二区在线 | 色吧在线播放 | 欧美一区二区三区在线播放 | 日韩区欧美久久久无人区 | 婷婷99狠狠躁天天躁中文字幕 | 欧美 日韩 中文 | 91久久久久久久久久久久久 | 日日夜夜天天操 | 亚洲精品电影网在线观看 | 精品在线一区二区三区 | 成人a毛片| 一级毛片aaaaaa免费看 | 伊人av电影 | 欧美日韩在线免费 | 精品久久久久久久久久久久久久久久久 | 欧美理论在线 | 黄色毛片免费看 | 国内成人在线 | 欧美91 | 中文字幕视频在线观看 | 日韩欧美国产精品综合嫩v 成人久久久久 | 一区二区免费视频 | 国产精品久久久久一区二区 | 欧美综合在线视频 | 欧美日韩免费一区二区三区 | 亚洲精品久久久一区二区三区 |