展会信息港展会大全

第一个Activity: EnglishWordsActivity
来源:互联网   发布日期:2016-01-14 10:55:43   浏览:1643次  

导读: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.OnTouchListene...

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

14public void onCreate(Bundle savedInstanceState) {

15super.onCreate(savedInstanceState);

16setContentView(R.layout.main);

17

18img_v = (ImageView)findViewById(R.id.mainImageView);

19img_v.setOnTouchListener(new OnTouchListener() {

20public boolean onTouch(View view, MotionEvent event) {

21Intent intent = new Intent(EnglishWordsActivity.this, UnitListAdapter.class);

22

23startActivity(intent);

24

25return true;

26}

27});

28}

29

30private 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"

3android:layout_width="wrap_content"

4android:layout_height="fill_parent"

5android:gravity="center"

6android:orientation="vertical" >

7

8<ImageView

9 android:id="@+id/mainImageView"

10android:layout_width="316dp"

11android:layout_height="wrap_content"

12android:layout_weight="0.72"

13android:scaleType="fitXY"

14android: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的过程,即将分享。

摘自 爱心觉罗氏

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港