看场电影

Study02【Activity】活动丨第二行代码

2018-06-04  本文已影响0人  taodaren

Activity 是一个应用组件,用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。每个 Activity 都会获得一个用于绘制其用户界面的窗口。窗口通常会充满屏幕,但也可小于屏幕并浮动在其他窗口之上。

创建 Activity

要创建 Activity,您必须创建 Activity 的子类(或使用其现有子类)。您需要在子类中实现 Activity 在其生命周期的各种状态之间转变时(例如创建 Activity、停止 Activity、恢复 Activity 或销毁 Activity 时)系统调用的回调方法。两个最重要的回调方法是:

您还应使用几种其他生命周期回调方法,以便提供流畅的 Activity 间用户体验,以及处理导致您的 Activity 停止甚至被销毁的意外中断。

新建 Activity.jpg

如图所示,可以快速创建一个活动,为了更好的理解,我们手动分步开始创建:

首先,新建 FirstAtivity 继承并自 AppCompatActivity
public class FirstActivity extends BaseActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}

可以看到,这里调用了 setContentView() 方法来给当前的活动加载一个布局,在此方法中,一般都会传入一个布局文件的 id。

第二,创建加载布局文件
新建布局资源文件.jpg

在 res 的 layout 目录右键 Layout resource file,按图示创建布局文件,并添加代码如下:

<?xml version="1.0" encoding="utf-8"?>
<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/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button 1"/>
</LinearLayout>

现在可以通过右侧工具栏的 Preview 来预览一下当前布局,如图所示:

预览当前布局.jpg
第三,在清单文件中声明 Activity
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="cn.ucai.activitytest">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".FirstActivity"></activity>
    </application>
</manifest>

<activity> 标签中我们使用了 android:name 来指定具体注册哪一个活动;在 <application> 标签中我们使用了 android:label 来指定活动中标题栏的内容。

最后,当一切准备就绪,运行程序就可以看到首次运行的结果,有好奇心的可以一试!

在活动中使用 Toast

Toast 是 Android中 一个很好的提醒方式,形状跟吐司面包很像,姑且如此记下吧。

toast.jpg

多说无益,上代码!在 onCreate() 中使用 Toast。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.first_layout);
    Button button1 = (Button) findViewById(R.id.button1);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(FirstActivity.this, "You clicked Button 1", Toast.LENGTH_SHORT).show();
        }
    });
}

可以看到,出现了一个新的方法— findViewById(),它返回的是一个 View 对象,该方法可以获取布局文件中定义的元素。Toast 的静态方法 makeText() 需传入三个参数:

在活动中使用 Menu

创建菜单

首先在 res 目录下新建 menu 文件夹,右击 menu 文件夹 → New → Menu resources file 创建菜单。输入文件名 main,完成后添加如下代码,使用 <item> 创建两个菜单项。

<?xml version="1.0" encoding="utf-8"?>
<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>

接着回到 FirstActivity 中重写 onCreateOptionMenu() 方法,重写快捷键 Alt+Insert Mac系统是 control+O

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

getMenuInflater() 的 inflate() 方法可以给当前活动创建菜单,它接收两个参数:

然后返回 true,若返回 false,创建的菜单将无法显示。

定义菜单响应事件

继续在 FirstActivity 中重写 onOptionsItemSelected() 方法,通过调用 item.getItemId() 来判断点击菜单项。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.add_item:
            Toast.makeText(this, "You clicked Add", Toast.LENGTH_SHORT).show();
            break;
        case R.id.remove_item:
            Toast.makeText(this, "You clicked Remove", Toast.LENGTH_SHORT).show();
            break;
        default:
    }
    return true;
}
销毁 Activity

正常按下 Back 键就会销毁活动,如果想用代码销毁,可以通过 Activity 类中的 finish() 实现。

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Toast.makeText(FirstActivity.this, "You clicked Button 1", Toast.LENGTH_SHORT).show();
        finish();
    }
});
上一篇下一篇

猜你喜欢

热点阅读