Android入門介紹

一、概述

二、環境搭建
1、Android---電腦===>兼容機
開源/免費
Android聯盟

2、Android開發環境搭建

A、java+eclipse3.5+
B、android sdk
C、adt--android的eclipse開發插件(安裝)
模擬器
屏幕分辨率
HVGA:320×480
QVGA:240x320
WQVGA400:240X400
WQVAG432:240X432
WVGA800: 480X800

WVGA854: 480X854

3、Android應用程序架構

src/java源代碼存放目錄

gen/自動生成目錄,Android開發工具自動根據你放入res目錄的xml界面文件、圖標與常量,同步更新R.java文件。通過R.java,應用可以很方便地找到對應資源。另外編譯器也會檢查R.java列表中的資源是否被使用到,沒有被使用到的資源不會編譯進軟件中,這樣可以減少應用程序在手機佔用的空間。

res/資源目錄,在這個目錄中我們可以存放應用使用到的各種資源

assets資源目錄,改目錄也可以存放資源,而且改目錄下的資源不會在R.java自動生成ID,所以讀取/assets目錄下的文件必須制定文件的路徑,如

 file:///android_assets/xxx.3gp

AndroidManifest.xml:列出了應用程序所提供的功能,開發的各種組件需要在該文件中進行配置,

如果應用使用到了系統內置的應用(如電話服務、互聯網服務、短信服務、GPS服務等等),你還需在該文件中聲明使用權限。
l

default.properties項目環境信息,



4、基本工具的應用

A、往模擬器上上傳東西---File Explore


B、設備管理Device--模擬器管理

C、控制模擬器--Emulator Control


5、第一個Android應用程序創建

應用名
包名---唯一的java包名
Activity名稱---類名

6、Android應用的簡單組成

AndroidManifest.xml---Android項目清單文件(配置文件)

res目錄--存放各種資源文件信息,比如字符串,圖片,音樂等,會自動把裏面的東西生成應用常量在R文件中。要注意文件名及name必須是合法的java標識符。
文件更特殊,Invalid file name: must contain only [a-z0-9_.]

<string name="address.city">城市</string>---這種資源解析時會變成address_city。


7、Android程序運行的過程

(1)、檢查環境
[2012-03-18 11:51:17 - gz1205-helloworld] ------------------------------
[2012-03-18 11:51:17 - gz1205-helloworld] Android Launch!
[2012-03-18 11:51:17 - gz1205-helloworld] adb is running normally.
[2012-03-18 11:51:17 - gz1205-helloworld] Performing cn.itcast.gz.hello.HelloActivity activity launch
[2012-03-18 11:51:17 - gz1205-helloworld] Automatic Target Mode: using existing emulator 'emulator-5554' running compatible AVD 'android2.2vm'


(2)、把應用上傳到模擬器上
[2012-03-18 11:51:17 - gz1205-helloworld] Uploading gz1205-helloworld.apk onto device 'emulator-5554'

(3)、在模擬器上安裝
[2012-03-18 11:51:42 - gz1205-helloworld] Installing gz1205-helloworld.apk...
[2012-03-18 11:51:52 - gz1205-helloworld] Success!

(4)、起動程序
[2012-03-18 11:51:52 - gz1205-helloworld] Starting activity cn.itcast.gz.hello.HelloActivity on device emulator-5554
[2012-03-18 11:51:55 - gz1205-helloworld] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]

cmp=cn.itcast.gz.hello/.HelloActivity }

8、關於andorid的apk包

jar包
web程序war包
android程序apk包---也是一個普通的壓縮文件。---裏面的xml資源文件是加密的。

*.class文件被打包到classes.dex (類似於jar包,實際是包含了jar包及一些xml資源文件)===可以通過工具把他裏面的jar包提取出來。




四、Android應用程序界面簡單開發
1、Activity及View介紹
A、Activity代表一個屏幕--Android四大組件之一

(1)、寫一個類繼承Activity類

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //加入自己的代碼
        System.out.println("onCreate()....");
    }
}

(2)、配置Activity-在AndroidManifest.xml進行配置
 <activity android:name="cn.itcast.gz.ui.MainActivity"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name">
            <!-- 意圖過濾器 ,設置爲起動Activity,這樣就會在開始菜單界面中找到-->
            <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>           
  </activity>


(3)、設置內容,調用Activity的setContentView()方法即可。

B、View---可視化的控件

Veiw-具體的控件,比如Button。
ViewGroup->容器控件,佈局控件。

2、直接用程序創建界面。---與Swing類似
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //加入自己的代碼
        System.out.println("onCreate()....");
        //往Activity中設置內容
        //在寫Android組件的時候,凡是要用Context的地方,要麼就組件本身繼承自Context(直接用this),或者組件提供getContext()方法來獲得
        Button btn1=new Button(this);
        //設置按鈕的屬性
        btn1.setText("確定");
        //this.setContentView(btn1);
        Button btn2=new Button(this);
        //設置按鈕的屬性
        btn2.setText("取消");
        
        //創建ViewGroup
        //ViewGroup vg=
        //往容器中添加控件
        LinearLayout layout=new LinearLayout(this);
        //設置佈局的屬性,比如設置Orientation來指定容器中控件的排放方式
        layout.setOrientation(LinearLayout.VERTICAL);
        layout.addView(btn1);
        layout.addView(btn2);
        
        setContentView(layout);
        
    }

}


3、使用標記語言來聲明界面。
A、Activity類
public class MainActivity2 extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        //設置屏幕中顯示的內容,從layout佈局中文件中加載
        setContentView(R.layout.ui);
    }

}
B、佈局資源文件layout\ui.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
     >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="確定" >
    </Button>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="取消" >
    </Button>

</LinearLayout>


五、事件處理

1、事件響應

2、在程序中使用setOnXXXX方法來設置事件監聽對象
  //獲得Button對象,通過按鈕的id去查找
        Button btn=(Button)this.findViewById(R.id.btnOk);  
        btn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                System.out.println("點擊了按鈕....");
                EditText et=(EditText)findViewById(R.id.txtMsg);
                System.out.println(et.getText().toString());
            }
        });


3、可以直接在佈局資源文件中指定事件響應方法-- android:onClick="test"
A、佈局文件
 <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="test"
        android:text="Button1" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="cancel"
        android:text="Button2" />

B、Activity的源代碼

public class MainActivity extends Activity  {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main2);
      
    }
    public void test(View v){
        System.out.println("測試一下....");
    }
    public void cancel(View v){
        EditText et = (EditText) findViewById(R.id.txtMsg);
        System.out.println(et.getText().toString());
    }
}


4、處理按鍵事件--重寫Activity的onKeyDown等事件處理方法
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        System.out.println("按鍵:"+keyCode);
        //return true;
        return super.onKeyDown(keyCode, event);
    }



六、Android應用簡單示例及工具應用:
1、電話拔打實例 dial
A、界面
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/telNumber" />
    <EditText
        android:id="@+id/txtTel"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />
    <Button
        android:id="@+id/btnDial"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/dial"
        />
</LinearLayout>
B、添加代碼
public class MainActivity extends Activity {
    private EditText txtTel;
    private Button btnDial;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
      
        setContentView(R.layout.main);
        //初始化控件對象--直接查找
        txtTel=(EditText) findViewById(R.id.txtTel);
        btnDial=(Button)findViewById(R.id.btnDial);
        //設置事件監聽對象
        btnDial.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                //獲得用戶輸入電話號碼
                String tel=txtTel.getText().toString();
                //調用Android中的撥號程序來撥號
                Intent it=new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+tel));
                //起動通話程序
                startActivity(it);

            }
        });
    }
}
C、出示權限
03-18 16:31:56.414: E/AndroidRuntime(3898): java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:110

cmp=com.android.phone/.OutgoingCallBroadcaster } from ProcessRecord{44f7c158 3898:cn.itcast.gz.dial/10039} (pid=3898, uid=10039) requires android.permission.CALL_PHONE


<!-- 出示權限,表示應用要使用到哪些權限的操作 -->
 <uses-permission android:name="android.permission.CALL_PHONE"/>


2、發短信
public void sendSms(View v){
        //獲得電話號碼及短信內容
        String tel=txtTel.getText().toString();
        String c=txtContent.getText().toString();
        //發送短信,調用手機短信管理硬件設備來發短信
        //獲得短信管理器
        SmsManager smsManager=SmsManager.getDefault();
        //撤分短信,確保全部發完
        ArrayList<String> msgs= smsManager.divideMessage(c);
        for (int i = 0; i < msgs.size(); i++) {
            smsManager.sendTextMessage(tel,null,msgs.get(i),null,null);
        }        
        Syste
m.out.println("成功發送了"+msgs.size()+"條短信!");
        
    }

3、消息通知
A、對話框  B、消息欄Notification C、Toast消息

Toast消息的實現
/*
        //創建Toast對象
        Toast toast=Toast.makeText(this, "成功發送了"+msgs.size()+"條短信!", Toast.LENGTH_LONG);
        //顯示
        toast.show();
        */
        //直接創建後立即顯示
        Toast.makeText(this, "成功發送了"+msgs.size()+"條短信!", Toast.LENGTH_SHORT).show();

4、真機測試

A、賣出價一臺手機
B、裝驅動usb驅動,從設置中並打開USB調試模式
C、直接運行即可---與在模擬器上一樣。


發佈了34 篇原創文章 · 獲贊 5 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章