第一行代码--android学习笔记1-----活动的基本用法

来源:互联网 发布:python celery 教程 编辑:程序博客网 时间:2024/05/21 09:42

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。

 onsaveInstanceState方法是用来保存Activity的状态的。当一个Activity在生命周期结束前,会调用该方法保存状态。这个方法有一个参数名称与onCreate方法参数名称相同。
    在实际应用中,当一个Activity结束前,如果需要保存状态,就在onsaveInstanceState中,将状态数据以key-value的形式放入到savedInstanceState中。这样,当一个Activity被创建时,就能从onCreate的参数savedInsanceState中获得状态数据。

    状态这个参数在实现应用中有很大的用途,比如:一个游戏在退出前,保存一下当前游戏运行的状态,当下次开启时能接着上次的继续玩下去。再比如:电子书程序,当一本小说被阅读到第199页后退出了(不管是内存不足还是用户自动关闭程序),当下次打开时,读者可能已忘记了上次已阅读到第几页了,但是,读者想接着上次的读下去。如果采用saveInstallState参数,就很容易解决上述问题。
(6)super关键字表示调用父类的方法

public class FirstActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}

}

2、创建和加载布局

(1)LinearLayout是根元素(是一种布局)。关于
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
解析参考http://blog.csdn.net/qingkongyeyue/article/details/52688502
(2)android:layout_width="match_parent"这里android是包名,而layout_width是指属性
(3)Button是一个新添的元素,
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);
}
}

4、在AndroidManifest文件中注册
(1)所有的活动都要在AndroidManifest.xml中进行注册才能生效,那
么我们现在就打开AndroidManifest.xml来给FirstActivity注册吧.
(2) <uses-sdk是对所使用的sdk进行设置,
SDK:(software development kit)软件开发工具包,
  • 应用程序可以运行的API
(3)application标签里面
label表示标签,@表示引用,@string/app_name就是从string这个文件中引用叫app_name的这个键值对的值,作用是为你当前的ViewGroup设置一个标签
(4)

 android.intent.action.MAIN决定应用程序最先启动的Activity

 android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里

如果存在多个activity都声明了android.intent.action.MAIN与android.intent.category.LAUNCHER会出现什么情况呢?------------------将会有多个图标显示在桌面上。


<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />


代码如下所示:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.activitytest"
android:versionCode="1"
android:versionName="1.0" >
  <uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="19" />
  <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
    <activity

android:name=".FirstActivity"
android:label="This is FirstActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>
</activity>
</application>
</manifest>

5、隐藏标题栏
(1)requestWindowFeature(Window.FEATURE_NO_TITLE)的意思就是不在活动中显示标题栏,其中Window是枚举名,FEATURE_NO_TITLE是枚举值
隐藏的方法非常简单,打开FirstActivity,在onCreate()方法中添加如下代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.first_layout);
}
6、在活动中使用Toast

(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();
}
});



1 0
原创粉丝点击