Android程式開發學習筆記系列——基礎篇(附源碼)

來源:互聯網
上載者:User

  隨著Android的越炒越熱和各種應用的不斷推出,自己也比較巧合的在去年12月份寬頻續約時給送了個電信的Android系統定製機——算是促使我提前了Android開發的學習計劃,並給我提供了一個開發測試的'場地'(手機),也更增強了我學習Android程式開發的興趣——別的市場前景等先暫且不說,至少我學會了,可以做個程式自己用。閑話少說,Android程式開發學習筆記這個系列,我將盡量讓每篇部落格保持統一的風格,在開始分享學習經驗之前列出這篇部落客要講些什麼——知識點,也力求以簡短明了的講述,讓正在學習Android程式開發的朋友們能更快、更準確的瞭解到你想知道的,不過我也知道即使寫的再'好',可能還是有人感覺沒有講清楚或講到正點上,希望大家能多提意見,讓這個系列能更具可讀性! 

  本文知識要點

  1.1 Android應用程式目錄結構、檔案夾及其檔案說明

  1.2 Button TextView控制項的基本用法

  1.3 Activity之間跳轉簡單傳值,Intent的簡單使用

  1.4 控制項事件的綁定

    

     1.1 Android應用程式目錄結構、檔案夾及其檔案說明

 

  原本想在中直接添加批註,但感覺比較麻煩且空間小不容易說清楚,下面就針對中的幾個紅色地區重點說明下:

  R.java——此檔案是應用程式資源(Resource)類,包括控制項id,layout,strings,drawable,以方便在整個應用程式中對資源的使用和統一管理;此類是自動產生的,不要手動修改!

  res檔案夾下的  以drawable開頭的檔案夾分別放的是高(h)、低(l)、中(m)不同解析度的圖片,即為了相容或者說讓應用程式在不同解析度下的機器上更好的呈現,一般一張圖片要弄三張不同解析度的放在這三個檔案夾下,如:應用程式的表徵圖或其中所用到的圖片,應用程式在啟動時會根據當前機器(用戶端)的解析度採用合適的一張圖片;放在drawable檔案夾下的圖片會自動在R.java檔案的drawable類產生一個相應的變數,代碼如下:

public static final class drawable {
public static final int cat=0x7f020000;
public static final int ic_launcher=0x7f020001;
}

             layout檔案夾下放的是內容視圖檔案,可以理解為跟.net中.aspx檔案類似——介面布局檔案,那就會有朋友問了:每個內容視圖檔案的代碼控制類是如何與之關聯的?這個需要在每個Activity類的onCreate方法中 通過 setContentView(R.layout.formactivity); 此行代碼設定。其中main.xml是預設的內容視圖檔案!

          values檔案夾下放的是當前應用程式中使用到的字串——以索引值對的形式存放,如:應用程式的名稱、按鈕等提示文本,這樣做的好處是:將文本字串與代碼分離,方便做國際化,如你現在做的應用程式針對的是中國使用者,當你想增加個日本或英文版本時,你只需要在values檔案夾下增加相應國際化的strings.xml檔案即可!具體做法會在以後的部落格中講解。

  src檔案夾下當前應用程式項目名稱檔案夾下 放的一般是Activity類(可以理解為介面表單後置代碼類)和其它的類檔案。

  AndroidManifest.xml  此檔案類似與.net中的web.config檔案——應用程式設定檔,如配置:應用程式名稱和icon、最低支援的SDK版本、使用者權限、第三方類庫等,在這篇文章裡只具體說下常用和基礎的配置屬性,檔案內容如下:

  

View Code

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.FirstAVd"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="15" />

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".FirstAVdActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".FormActivity"
android:label="@string/formactivity_name" >
</activity>
</application>

</manifest>

    package="android.FirstAVd"    當前應用程式的包名

    android:versionCode="1"     當前應用程式的版本號碼

    android:versionName="1.0"     當前應用程式的版本名稱

  <application
        android:icon="@drawable/ic_launcher"     當前應用程式的表徵圖

        android:label="@string/app_name" >  當前應用程式的名稱

   <activity
            android:name=".FirstAVdActivity"    介面表單的類名
            android:label="@string/app_name" > 介面表單的名稱

      如上有兩個activity的聲明(註冊),但只有內部有<intent-filter>的activity才是應用程式預設啟動的表單介面,而且每個activity必須要在此檔案中聲明(註冊),否則將會報錯

  

     1.2 Button TextView控制項的基本用法

    首先在內容視圖xml檔案中添加控制項,再在對應的activity類中根據控制項id獲得控制項對象,代碼如下:

<TextView
android:id="@+id/tvShow"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/author" />
<Button
android:id="@+id/btnchangecontent"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>

 

View Code

public class FirstAVdActivity extends Activity {
private TextView tvShow;
private Button btnSendSms;
private Button btnAction;
private Button btnchangecontent;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/**
* TextView tv2 = new TextView(this);
tv2.setText("Nice see you!"+new Date().getTime());
setContentView(tv2);
*/
//設定當前Activity的內容視圖(檔案)
setContentView(R.layout.main);
tvShow=(TextView)this.findViewById(R.id.tvShow);
btnAction=(Button)this.findViewById(R.id.btnforward);
btnAction.setText("測試按鈕");
btnAction.setTextSize(23);
btnAction.setTextColor(Color.GREEN);
btnAction.setBackgroundColor(Color.GRAY);
btnAction.setOnClickListener(new BtnActionOnClickListener());

  

     1.3 Activity之間跳轉簡單傳值,Intent的簡單使用

    如以下代碼實現的是從FirstAVdActivity跳轉到FormActivity,並在FormActivity中獲得傳遞的值的實現:

FirstAVdActivity中的跳轉按鈕事件——

class BtnActionOnClickListener implements OnClickListener
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//建立一個Intent請求對象
Intent intent=new Intent();
//將要傳遞的值以索引值對的形式存放在intent對象中
intent.putExtra("user_name", "tom_marker");
//佈建要求的源(FirstAVdActivity)和目標(FormActivity)
intent.setClass(FirstAVdActivity.this, FormActivity.class);
//執行請求
FirstAVdActivity.this.startActivity(intent);
}
}

FormActivity中獲得傳遞值——

public class FormActivity extends Activity {
private TextView tvShow;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
try {
super.onCreate(savedInstanceState);
setContentView(R.layout.formactivity);
Intent intent=this.getIntent();
tvShow=(TextView)this.findViewById(R.id.tvShow);
//tvShow.setText(new Date().getMinutes());
tvShow.setText(R.string.welText+intent.getStringExtra("user_name"));
} catch (Exception e) {
tvShow.setText("Error: "+e.getMessage());
}
}
}

     1.4 控制項事件的綁定

    事件的綁定有如下兩種方式,貼出代碼,一看便知

方式一

btnchangecontent.setOnClickListener(new View.OnClickListener(){  
public void onClick(View v)
{
//Toast提示控制項
Toast.makeText(FirstAVdActivity.this,
"TextView裡的文字發生了改變,你注意到了嗎?",
Toast.LENGTH_LONG).show();
//將tvShow的文字發生改變
tvShow.setText("Android Button控制項綁定單擊事件"+"\n"+new Date().getTime());
}
});

方式二

btnSendSms.setOnClickListener(new BtnSendSmsOnClickListener());


class BtnSendSmsOnClickListener implements OnClickListener
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//建立一個Intent請求對象
Uri uri=Uri.parse("smsto://13227517186");
Intent intent=new Intent(Intent.ACTION_SENDTO,uri);
intent.putExtra("sms_body", "This sms test content!");
FirstAVdActivity.this.startActivity(intent);
}
}

 

  好了,時間有限,就寫到這吧,可能有些倉促和沒有說到的地方,希望能對你有所協助,也希望大家多交流、提意見!

  以上所講程式碼範例下載 FirstAVd.rar

  視頻教程學習:http://v.youku.com/v_playlist/f5486194o1p30.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.