第一個Activity: EnglishWordsActivity

來源:互聯網
上載者:User

 1 package Workshop.english.englishwords;
 2
 3 import android.app.Activity;
 4 import android.content.Intent;
 5 import android.os.Bundle;
 6 import android.view.MotionEvent;
 7 import android.view.View;
 8 import android.view.View.OnTouchListener;
 9 import android.widget.ImageView;
10
11 public class EnglishWordsActivity extends Activity {
12     /** Called when the activity is first created. */
13     @Override
14     public void onCreate(Bundle savedInstanceState) {
15         super.onCreate(savedInstanceState);
16         setContentView(R.layout.main);
17        
18            img_v = (ImageView)findViewById(R.id.mainImageView);
19            img_v.setOnTouchListener(new OnTouchListener() {
20             public boolean onTouch(View view, MotionEvent event) {
21                 Intent intent = new Intent(EnglishWordsActivity.this, UnitListAdapter.class);
22                 
23                 startActivity(intent);
24                
25                 return true;
26             }       
27         });
28     }
29    
30     private ImageView img_v;
31 }

前面說了AndroidManifest.xml,看到了入口的Activity是EnglishWordsActivity,先不說類的名字取得是否好(我覺得不夠好),還是來說類本身。
line 11, 說明這個類繼承了Activity類,關於Activity類的介紹,可以查閱官網。
line 13,需要注意,override第一個字母必須大寫。當然了,很多情況下,這都是自動產生的。
line 14, onCreate方法,就是Activity建立是調用的方法。這一點,有點類似於C++中的建構函式的含義。Activity除了onCreate的方法,還有onStop, onDestroy,onResume等方法,只是此處不需要重載,所以沒有列出來。
line 15, 調用super的onCreate方法,super其實即使父類Activity.
line 16, setContentView(), 這個函數,拿res/layout目錄下的main.xml檔案描述的控制項,比如我這裡有LinearLayout和ImageView去填充View,其實本質上有點MFC架構下的視窗初始化的意思。再詳細一點,就是初始化視窗和視窗中的控制項。控制項的屬性就在main.xml中有描述。不好意思,我比較多的用到了Windows MFC中的概念,因為MFC中的概念比較好理解。下面就是main.xml. 關於這些控制項的屬性,無法一一說明,可以查閱官網的referrence. 只想指出的一點是ImageView的id,也就是line9中的mainImageView可以在程式中引用,他就是這個IamgeView的標識。引用的方法是R.id.mainIamgeView,在上面的Java程式中line 18就用到了它。程式中是通過這個id來得到控制項,然後在程式中就可以用這個控制項了,讀取屬性也好,修改屬性也好,或者其他的操作,都是可以的。它建立了xml描述和程式的聯絡。另外一個需要說明的是src屬性,這個屬性工作表明了該圖片源,在這裡,這個圖片是hello.png檔案,該檔案在res/drawable目錄下。
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="wrap_content"
 4     android:layout_height="fill_parent"
 5     android:gravity="center"
 6     android:orientation="vertical" >
 7
 8     <ImageView
 9 android:id="@+id/mainImageView"
10         android:layout_width="316dp"
11         android:layout_height="wrap_content"
12         android:layout_weight="0.72"
13         android:scaleType="fitXY"
14         android:src="@drawable/hello" />
15
16 </LinearLaout>

還是回到Java程式中,剛才說到了line 18通過findViewById得到了這個IamgeView
line 19, 給這個控制項定義了一個onTouch的事件,事件中實現了onTouch的方法,表明了當Touch事件發生後,做什麼操作。
line 21和23, 說明了當這個image被Touch的時候,建立一個Intent, Intent中顯式的指明了下一個Activity是第二個參數UnitListAdapter.
                      而第一個參數,說明了是由當前的Activity觸發的start的。
需要注意的是,onTouch方法返回的是布爾類型的,如果不是,則編譯出錯。
 
在第一次寫這個代碼的時候,我把img_v定義為了一個私人變數,但是犯了一個錯誤,導致應用crash了。
下一篇是我解決這個crash的過程,即將分享。

 摘自 愛心覺羅氏

聯繫我們

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