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

來源:互聯網
上載者:User

《第一行代碼》學習筆記——第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,即想要列印的具體內容。
    }

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.