本文共 5357 字,大约阅读时间需要 17 分钟。
1、手动创建活动
(1)public表示公开的类,所有的类都可引入使用。
(2)class FirstActivity extends Activity表示FirstActivity类继承自Activity 类。
(3)@Override表示下边的方法是继承父类的方法,对其覆盖
(4)protected表示此方法能被同一包中的类或不同包的子类所调用
(5)onCreate方法的参数是一个Bundle类型的参数。Bundle类型的数据与Map类型的数据相似,都是以key-value的形式存储数据的。从字面上savedInstanceState,是保存实例状态的。实际上,savedInstanceState也就是保存Activity的状态的。那么,savedInstanceState中的状态数据是从何处而来的呢?下面我们介绍Activity的另一个方法saveInstanceState。
public class FirstActivity extends Activity {
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); }}
2、创建和加载布局
android:id="@+id/button_1"这里的@+id 就是给控件添加一个id 这个新的id会自动生成在 R.java文件里面,就能在你的Activity里面通过这个id来引用对象了 。如果你写成是@id/aaa则是代表引用id列表里面的aaa的值。
(4)wrap_content match_parent
wrap_content表示让当前控件的大小能够刚好包含住里面的内容。 match_parent表示当前控件大小和父布局的大小一样
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/button_1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Button 1" /> </LinearLayout>
3、在活动中加载布局
(1)下面只解析setContentView(R.layout.first_layout);setContentView()方法来给当前的活动加载一个布局,而在setContentView()方法中,我们一般都会传入一个布局文件的id。在第一章介绍gen目录的时候我有提到过,项目中添加的任何资源都会在R文件中生成一个相应的资源id,因此我们刚才创建的first_layout.xml布局的id现在应该是已经添加到R文件中了。在代码中去引用布局文件的方法你也已经学过了,只需要调用R.layout.first_layout就可以得到first_layout.xml布局的id,然后将这个值传入setContentView()方法即可。注意这里我们使用的R,是com.example.activitytest包下的R文件,Android SDK还会自动提供一个 android 包下的 R 文件,千万别使用错。
public class FirstActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.first_layout); } }
SDK:(software development kit), 应用程序可以运行的API
label表示标签,@表示引用,@string/app_name就是从string这个文件中引用叫app_name的这个键值对的值,作用是为你当前的ViewGroup设置一个标签
android.intent.action.MAIN决定应用程序最先启动的Activity
android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里
如果存在多个activity都声明了android.intent.action.MAIN与android.intent.category.LAUNCHER会出现什么情况呢?------------------将会有多个图标显示在桌面上。
(1)是Android系统提供的一种非常好的提醒方式, 在程序中可以使用它将一些短小的信息通知给用户,这些信息会在一段时间后自动消失,并且不会占用任何屏幕空间
)
(2)Button button1 = (Button) findViewById(R.id.button_1);
这句话代表你将要给一个Button类型的变量赋值,赋的值为通过findViewById函数返回的值。这里的R.id.button_1表示你在Android界面菜单内拖出来的一个新的按钮,编译器会自动给这个按钮一个编号。findViewById函数就是通过这个编号准确定位这个按钮,执行你想要对它进行的操作。 至于button1.setOnClickListener(this);,代表我们要给这个按钮设置一个监听器。什么是监听器呢?监听器就是负责监控按钮运行的工具。这个OnClickListener就是负责监听用户是否按下这个按钮的。
(3)makeText()方法得到的对象调用show()方法,show()方法调用对像的属性
Toast.makeText(FirstActivity.this, "You clicked Button 1",
Toast.LENGTH_SHORT).show();
代码如下所示:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.first_layout);
Button button1 = (Button) findViewById(R.id.button_1); button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(FirstActivity.this, "You clicked Button 1", Toast.LENGTH_SHORT).show(); } }); }
7、在活动中使用menu
(1)新建菜单,<item>标签用来创建具体的某一个菜单项,
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/add_item" android:title="Add"/> <item android:id="@+id/remove_item" android:title="Remove"/> </menu>
8、销毁一个活动
(1)在监听方法中调用finish()方法
修改按钮监听器中的代码,如下所示: button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finish(); } });