Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 《第一行代碼》學習筆記——第1章 開始啟程,你的第一行Android代碼,第一行代碼筆記

《第一行代碼》學習筆記——第1章 開始啟程,你的第一行Android代碼,第一行代碼筆記

編輯:關於android開發

《第一行代碼》學習筆記——第1章 開始啟程,你的第一行Android代碼,第一行代碼筆記


1.3 創建你的第一個Android項目

 

1.3.1 創建HelloWorld項目

1、Application Name代表應用名稱,手機上顯示的就是它;

2、Project Name代表項目名稱,其顯示在Eclipse中;

3、Minimum Required SDK是指程序最低兼容版本,Compile With是指程序編譯版本;

 

1.3.3 分析你的第一個Android程序

1、src 是放置我們所有Java代碼的地方;

2、gen這個目錄裡的內容是自動生成的,主要有一個R.java文件,你在項目中添加的任何資源都會在這裡生成一個相應的資源id。這個文件永遠不要手動去修改它;

3、assets這個目錄用的不多,主要存放一些隨程序打包的文件,在你的程序運行的時候可以動態的讀取到這些文件的內容。並且,如果你的程序中使用到了WebView加載本地網頁的功能,所有網頁相關的文件也都存放在這個目錄下;’

4、bin這個目錄主要包含一些在編譯時自動生成的文件。其中,安裝包就在這個文件中;

5、libs目錄,如果你的項目中有使用到第三方Jar包,就需要把這些Jar包都放在libs目錄下,放在這個目錄下的Jar包都會被自動添加到構建路徑中去;

6、res目錄,簡單點說,你在項目中使用到的所有圖片,布局,字符串等資源都是放在這個目錄下的,前面提到的R.java中的內容也是根據這個目錄下的文件自動生成的;

7、AndroidManifest,xml這是你整個Android項目的配置文件,你在程序中定義的所有四大組件都需要在這個文件裡注冊。另外還可以在這個文件中給應用程序添加權限聲明,也可以重新制定你創建項目時指定的程序最低兼容版本和目標版本。’

8、project.properties這個文件就是通過一行代碼指定了編譯程序時所使用的SDK版本。我們這個HelloWorld項目使用的是API 14,你也可以在這裡改成其他版本試一試;

9、接下來我們來分析HelloWorld項目時如何運行起來的,打開AndroidManifest,xml這個文件,找出這個代碼:

                 <activity
            android:name="com.example.helloworld.HelloWorldActivity"
            android:label="@string/app_name" >
            <intent-filter>


                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />                //這兩行代碼表示HelloWorldActivity是這個項目的主活動,具體什麼意思以後再說

 

            </intent-filter>
        </activity>

說明:這個代碼表示對HelloWorld這個活動進行注冊,沒有在AndroidManifest.xml裡注冊的活動是不能使用的。

 

10、在介紹Android四大組件的時候說過,活動是Android應用程序的門面,凡是在應用程序中你看到的東西,都是放在活動中的。所以,當我們打開程序的時候,你看到的東西實際上就是HelloWorldActivity這個活動。以下是這個活動的代碼:

package com.example.helloworld;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class HelloWorldActivity extends Activity {                                            //表示HelloWorldActivity繼承自Activity。Activity是Android系統提供的一個活動基                                                                                                                      類,我們項目中所有的活動都必須要繼承它才能擁有活動的特性。


    @Override          
    protected void onCreate(Bundle savedInstanceState) {                          //onCreate()方法是一個活動被創建時必定要執行的方法
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hello_world);                                     //此處調用的setContentView()方法,就是這個方法給當前的活動引入了一個布局
    }

    @Override     
    public boolean onCreateOptionsMenu(Menu menu) {                                //創建菜單,詳細後期補充
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.hello_world, menu);
        return true;
    }
    
}

 

看完這個代碼發現裡面並沒有HelloWorld字樣,那在活動中也就是在程序界面中顯示的HelloWorld!是在哪裡定義的呢?

其實Android程序設計講究邏輯和視圖分離,因此是不推薦在活動中直接編寫界面的,更加通用的一種做法是,在布局文件中編寫界面,然後在活動中引入進來。那也就是說HelloWorld 定義在hello_world_layout.xml這個文件中咯?下面我們打開這個文件,代碼如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".HelloWorldActivity" >
//上面看不懂沒關系,我們來看一看下面的代碼


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />


</RelativeLayout>

其中TextView是Android系統提供的一個控件,用於在布局中顯示文字的。在這個代碼中我們發現了HelloWorld字樣,但是這個真是在這裡定義的嗎?其實這裡也不是。真正的HelloWorld!字符串也不是在這裡定義的。Android不推薦在程序中對字符串進行硬編碼,更好的做法是把字符串定義在res/values/string.xml裡,然後在布局文件或者代碼中引用。下面是strings.xml代碼:

 

<resources>

    <string name="app_name">Hello World</string>                           //修改APP名稱
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>                         //采用鍵值對的形式,HelloWorld!值對應了一個叫做hello_world的鍵。在                                                                                                                                   hello_world_layout.xml布局中就是通過引用了hello_world這個鍵,才找到相應的值

</resources>

 

1.3.4 詳解項目中的資源

1、res目錄:所有以drawable開頭的文件夾都是用來放圖片的,所有以values開頭的文件夾都是用來放字符串的,layout文件夾是用來放布局文件的,menu文件夾是用來放菜單文件的。

2、如何使用這些資源?

比如剛剛說到的strings.xml中找到Hello world !字符串,我們有兩種方式可以引用它:

        (1)在代碼中通過R.string.hello_world 可以獲得該字符串的引用;

         (2)在XML中通過@string/hello_world可以獲得該字符串的引用;

基本的語法就是以上兩點,其中string部分是可以替換的,如果是引用的圖片資源就可以替換成drawable,如果引用的是布局就可以替換成layout,以此類推。

另外,HelloWorld項目的圖標就在AndroidManifest.xml中通過android:icon = "@drawable/ic_launcher"來指定的,而ic_launcher這張圖片就在drawable文件夾下,如果想修改項目的圖標就在這裡改。

 

1.4 掌握日志日志工具的使用

 

1.4.2 使用Android的日志工具

1、Log.v()  對應級別 verbose,用於打印那些最為瑣碎的,意義最小的日志信息。是Android日志裡面級別最低的一種。

2、Log.d()  用於打印一些調試信息,這些信息對你調試程序和分析問題應該是有幫助的。對應級別debug。

3、Log.i()  這個方法用於打印一些比較重要的數據,這些數據應該是你非常想看到的,可以幫助你分析用戶行為的那種。對應級別info。

4、Log.w()  這個方法用於打印一些警告信息,提示程序在這個地方可能會有潛在風險,最好去修復一下出現警告的地方,對應級別warn。

5、Log.e()  這個方法用於打印程序中的錯誤信息。對應級別error。

1.4.3  日志工具怎麼使用

public class HelloWorldActivity extends Activity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hello_world);
        
        Log.d("HelloWorldActivity","onCreate execute");                        //Log.d中傳入兩個參數,第一個慘數是tag,一般傳入當前的類名,主要用於對打印信息進行過濾。第二個參數是msg,即想要打印的具體內容。
    }

 

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