編輯:關於Android編程
1G - 5G的介紹 Android的操作系統的介紹 Android版本 Android系統的架構 兩種虛擬機的不同 ART模式 模擬器的簡介 SDK目錄 Android工程目錄結構 打包的過程 ADB常用指令 案例電話撥號器 四種點擊事件 Android的常用布局 Andriod中的單位
它們之間最大的區別是:速率的不同
Android是由安迪-魯賓開發的,一開始只是一個作為智能相機的系統,隨著手機市場的擴大轉向手機操作系統。
Android名稱:安迪-魯賓非常喜歡一款游戲裡面的一個大瓢蟲。
Android的Logo來源 :要求無性別、種族歧視,設計師在上廁所時看到廁所門上的標識,產生的靈感。
幾個比較穩定和重要的版本
注意:Dalvik VM:虛擬機,android代碼運行在此虛擬機
.java
文件 ->編譯為.class
文件 -> 打包成 .jar
文件(將java源碼編譯為class文件,然後將一組class打包成jar)
基於棧結構,棧存儲於內存中,所以需要內存空間
Dalvik VM
編寫.java
文件 -> 編譯為 .class
文件 -> 打包成.dex
文件 -> 打包成.apk
文件(將一組class編譯為一個dex文件,然後有的平台為了更高的效率會將一個dex轉換成odex文件,將N多個class文件編譯為一個dex,這樣執行效率會比較快,更適合在移動平台運行)
基於寄存器的結構,寄存器在CPU中,所以用到CPU的空間。
請看下圖,在JVM和DVM中不同的打包結構:
ART模式通過在安裝應用程序時,自動對程序進行代碼預讀取編譯,讓程序直接編譯成機器語言,免去了Dalvik模式要時時轉換代碼,實現高效率、省電、占用更低的系統內存、手機運行流暢。
但凡事總有正反兩面,ART在解決了該問題的同時,同時也有如:會占用略高一些的存儲空間、安裝程序時要相比普通Dalvik模式要長一些時間來實現預編譯。
ART模式是典型的以空間換時間的解決案例。
設備的常見分辨率
① drawable:圖片資源
drawable-hdpi:高分辨率的圖片目錄 drawable-ldpi:低分辨率的圖片目錄 drawable-mdpi:中分辨率的圖片目錄 drawable-xhdpi:大分辨率的圖片目錄 drawable-xxhdpi:超大分辨率的圖片目錄 ② layout:界面布局 ③ menu:菜單 ④ values:字符串、樣式等數據 ⑤ anim:動畫文件 ⑥ raw:原生文件使用aapt(application android package tools)工具打包
編譯 -> 打包 -> 簽名 -> adb -> 部署到手機上
// 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(); // 創建一個意圖:想干什麼事
intent.setAction(Intent.ACTION_CALL);
// 6. 設置撥打電話的數據
// Uri 包括了 Url
intent.setData(Uri.parse("tel:" + number)); // Uri:統一資源標識符,Url:統一資源定位符
// 7.開啟意圖
startActivity(intent);
使用內部類實現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(); // 創建一個意圖:想干什麼事
intent.setAction(Intent.ACTION_CALL);
// 6. 設置撥打電話的數據
// Uri 包括了 Url
intent.setData(Uri.parse("tel:" + number)); // Uri:統一資源標識符,Url:統一資源定位符
// 7.開啟意圖
startActivity(intent);
}
}
通過匿名內部類來實現
// 實現點擊事件的第二種方式:匿名內部類
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);
// 設置點擊事件的第三種方式
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(); // 創建一個意圖:想干什麼事
intent.setAction(Intent.ACTION_CALL);
// 6. 設置撥打電話的數據
// Uri 包括了 Url
intent.setData(Uri.parse("tel:" + number)); // Uri:統一資源標識符,Url:統一資源定位符
// 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參數
在布局文件中注冊點擊事件
在代碼中增加對應的方法
// 按鈕的第四種點擊事件,原理:利用的反射技術
// 第四種方式缺點:莫名其妙
public void click(View v) {
callPhone();
}
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 本元素的右邊緣和某元素的的右邊緣對齊
第三類:屬性值為具體的像素值
android:layout_marginBottom 離某元素底邊緣的距離
android:layout_marginLeft 離某元素左邊緣的距離
android:layout_marginRight 離某元素右邊緣的距離
android:layout_marginTop 離某元素上邊緣的距離
表格布局
使用的較少
幀布局
框架布局是將控件組織在Android程序的用戶界面中最簡單的布局類型之一。
框架布局在xml文件中使用來定義。
框架布局中的子視圖總是被繪制到相對於屏幕的左上角上,所有添加到這個布局中的視圖都是以層疊的方式顯示,第一個添加到框架布局中的視圖顯示在最底層,最後一個被放在最頂層,上一層的視圖會覆蓋下一層的視圖,類似於html中的div。
在框架布局中,常用的屬性有以下幾項:
android:top 將視圖放到屏幕的頂端
android:Buttom 將視圖放到屏幕的低端
android:Left 將視圖放到屏幕的左端
android:Right 將視圖放到屏幕的右端
android:Center_vertical 將視圖按照垂直方向居中顯示
android:Center_horizontal 將視圖按照水平方向居中顯示
使用GraphicalView畫柱狀圖和餅圖 一.achartengine庫的下載,下載地址: www.2cto.com 下載完成後,把jar文件粘貼到li
Android筆記——自動顯示、隱藏布局的ListView。學習了Android有一段時間了,學習的東西老是遺忘,於是決定寫博客來鞏固知識點,激勵
網上開源項目:https://github.com/beworker/pinned-section-listview,該項目用的是ArrayAdapter()..不太適合
反射類類型Class的使用類類型Class的實例獲取方式有一下三種public static void main(String[] arg0) { Stri