第二周学习笔记(上)

活动—Activity

1、什么是活动?

活动:最吸引用户的地方,它是一种可以包含用户界面的组件,主要用于和用户进行交互。

2.1、活动基本用法

我们自己手动创建一个活动,先关闭上一个项目,点击导航栏File->Close Project。进入新建Android项目界面:
新建前的Android页面

然后新建一个Android项目,项目名称可以叫做ActivityTest_1:
新建ActivityTest_1活动

点击next,进入Target Android devices,选择默认。
Target Android devices保持默认

继续点击next,进入手动创建项目类型,我们选择Add No Activity,点击完成:
Add No Activity手动添加活动

等待项目创建成功后,软件默认使用Android模式的项目结构,这里我们手动改成Project模式:
选择打开Project

目前Activity项目中虽然还是会自动生成很多文件,但是app/src/main/java/com.example.activitytest目录应该是空的,现在右击com.example.activitytest包->New->Activity->Empty Activity:
创建活动对话框

会弹出创建活动的对话框,活动命名为FirstActivity,且不要勾选Generate Layout File和Launcher Activity这两个选项:
创建活动对话框2

勾选Generate Layout File表示会自动为FirstActivity创建一个对应的布局文件,勾选Launcher Activity表示会自动将FirstActivity设置为当前项目的主活动。勾选Backwards Compatibility表示会为项目启用向下兼容的模式。点击finish完成创建。

项目中的任何活动都应该重写Activity的onCreate()方法,而目前我们的FirstActivity中已经重写了这个方法,这是由Android Studio自动帮我们完成的。

package com.example.activitytest_1;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class FirstActivity extends AppCompatActivity {

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

可以看到,onCreate()方法非常简单,就是调用了父类的onCreate()方法。后面我们需要在里面加入很多自己的逻辑。

2.2、创建和加载布局

Android程序的设计讲究逻辑和视图分离,最好每一个活动都能对应一个布局,布局就是我们看到的APP界面。现在手动创建一个布局文件。右击app/src/main/res目录,然后对着layout目录右键->Layout resource file,会弹出一个新建布局资源文件的窗口,将这个布局文件命名为first_layout,根元素就默认选择为LinearLayout:
新建布局资源文件

点击OK完成布局的创建,这时会看到下图的布局编辑器:
布局编辑器

这时Android Studio为我们提供的可视化布局编辑器,切换至Text通过XML文件的方式来编辑布局,可以看到代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

</LinearLayout>

由于我们刚才在创建布局文件时选择了LinearLayout作为根元素,因此现在布局文件中已经有一个LinearLayout元素了。现在我们天剑一个按钮,如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Button 1"
    />

</LinearLayout>

这里我们添加一个Button元素,并在Button元素内部添加了几个属性。android:layout_width指定了当前元素的宽度,这里使用match_parent表示让当前元素和父元素一样宽;android:layout_height指定当前元素的高度,这里使用wrap_content表示当前元素的高度只要能刚好包含里面的内容就行;android:text指定了元素中显示的文字内容。预览当前添加按钮后的布局:

当前按钮

回到FirstActivity,在onCreate()方法中加入如下代码:

package com.example.activitytest_1;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class FirstActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.first_layout);
    }
}

可以看到,调用setContentView()方法来给当前的活动加载一个布局,而setContentView()方法中,我们一般都会传入一个布局文件的id。项目中添加的任何资源都会在R文件中生成一个相应的资源id,因此我们刚才创建的first_layout.xml布局的id现在应该添加到R文件中了。代码中引用布局文件的方法,只需调用R.layout.first_layout就可以得到first_layout.xml布局的id,然后将这个值传入setContentView()方法即可。

2.3、在AndroidManifest文件中注册

所有的活动都要在AndroidManifest.xml中进行注册才能生效,而实际上FirstActivity已经在AndroidManifest.xml中注册过了,我们打开app/src/main/Android-Manifest.xml文件看看:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.activitytest_1">

    <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>

在标签中使用了android:name来指定具体注册哪个活动,这里填写的.FirstActivity是com.example.activity.FirstActivity的缩写。

这样只是仅仅注册了活动,要想程序运行,还需为程序配置主活动,就是说,当程序运行起来的时候,不知道首先启动哪个活动。配置主活动的方法就是在标签的内部加入标签,在标签里添加

2.4、在活动中使用toast

toast是Android系统提供的一种非常好的提醒方式,在程序中可以使用它将一些短小的信息通知给用户,这些消息会在一段时间后自动消失,且不会占用任何屏幕空间,就类似与输入密码错误了,会出现提示密码错误,请重新输入这一类的提醒消息。

首先需要定义一个弹出toast的触发点,界面上有个按钮,我们就让点击这个按钮的时候弹出一个toast。在onCreate()添加代码:

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

在活动中,可以通过findViewById()方法获取到在布局文件中定义的元素,这里我们传入R.id.button_1,来得到按钮的实例,这个值是刚才在first_layout.xml中通过android:id属性指定的。findViewById()方法返回的是一个View对象,我们需要向下转型将它转成Button对象。得到按钮的实例之后,我们通过调用setOnClickListener()方法为按钮注册一个监视器,点击按钮就会执行监听器中的onCreate()方法。因此弹出的toast的功能当然是要在onCreate()方法中编写了。

toast的用法非常简单,通过静态方法makeText()创建出一个toast对象,然后调用show()将toast显示出来就可以了。makeText()方法需要传入3个参数。第一个参数是Context,也就是toast要求的上下文,由于活动本身就是个context对象,因此这里直接传入FirstActivity.this即可。第二个参数是toast显示的文本内容。第三个参数是toast显示的时间长,有两个内置常量可以选择Toast.LENGTH_SHORT和Toast.LENGTH_LONG

you clicked Button 1

猜你喜欢

转载自blog.csdn.net/qq_32669043/article/details/82531051