你的位置:首页 > 操作系统

[操作系统]【lushengduan】02、Activity的基本认识 如何弹出一条Toast提示框


一、Activity的简要理解

    上篇博文已经知道如何编写一个简单的Activity了,可能有很多初学者会疑惑到底什么是Activity?我们来给出Activity的一个通俗的解释:Activity就是呈现在我们手机上的各种界面,也就是说,只要在手机上我们能看到的,都是Activity。任何一个Activity都需要继承android.app.Activity才能有显示界面的“本领”,当一个类继承自android.app.Activity,那么系统就会为其分配一个透明的布满手机屏幕的PhoneWindow(窗口),然后在onCreate里利用setContentView把布局填充至这个PhoneWindow,大多数布局都是铺满整个窗口的,但也有一些例外,如,Dialog(对话框)虽然本质上也是Activity,但是它的布局并没有把整个窗口铺满;接下来我们在布局中“粘上”一系列的控件,如,Button(按钮)、CheckBox(开关)等,这样一来就构成了我们在手机上平常看到的各种界面。好了,现在我们已经知道,要实现一个Activity,需要以下几个步骤:

    ① 继承自android.app.Activity

    ② Android系统为其分配PhoneWindow

    ③ setContentView把布局载入PhoneWindow

    ④ 在AndroidManifest.

    AndroidManifest.

<manifest ="http://schemas.android.com/apk/res/android"  package="com.example.lushengduan.helloworld"> //这是包名,在同一个手机中,包名不能重复  <application    android:allowBackup="true"    android:icon="@mipmap/ic_launcher" //应用程序的图标,就是显示在桌面的图标    android:label="@string/app_name" //应用程序的名称,显示在图标下面的文字,如QQ,新浪微博    android:supportsRtl="true"    android:theme="@style/AppTheme">    <activity      android:name=".HelloWorldActivity">      <intent-filter>        <action android:name="android.intent.action.MAIN"/>        <category android:name="android.intent.category.LAUNCHER"/>      </intent-filter>    </activity>  </application></manifest>

    <activity ... </activity>中包裹的内容就是我们的HelloWorldActivity,必要的定义有两样,一个是“name”,另一个是“intent-filter”,android:name指的是“包名 + 类名”,而.HelloWorldActivity是把包名的省略了,用“.”来代替“com.example.lushengduan.helloworld”,这样也是常用的写法,每个Activity都写一遍包名,确实不是什么好的事情。intent-filter是intent的过滤器,intent我们暂时先不介绍,只需要记住,一个Activity要成为主界面(点开应用程序进入的第一个界面),在intent-filter中必须定义action为“android.intent.action.MAIN”,category为“android.intent.category.LAUNCHER”。

 

二、弹出一条Toast提示框

    上一篇文章里,我们是通过java代码来实现布局的,但在Android开发里,更多的是使用

package com.example.lushengduan.helloworld;import android.app.Activity;import android.os.Bundle;/** * Created by Lushengduan on 2016/3/4. */public class HelloWorldActivity extends Activity {  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.main_layout);  }}

    我们发现,上面的代码是通过“R.layout.main_layout”来载入布局的,至于为什么是“R.layout.xx”这个涉及到资源id,以后抽空再说,来先看看res/layout/main_layout.

<??><LinearLayout ="http://schemas.android.com/apk/res/android"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:orientation="vertical">  <TextView    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="HelloWorld!"/></LinearLayout>

    不管三七二十一,先把这个程序跑起来看看,是否能显示出来“HelloWorld!”这行文件,运行结果如下:

    运行结果和前一篇文章是一样的,LinearLayout是线性布局,TextView是一个显示文字控件,android:text的内容将会被显示出来;接下来,我们来为主界面添加一个Button,让按钮上显示的文字为“CLICK ME!”

<??><LinearLayout ="http://schemas.android.com/apk/res/android"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:orientation="vertical">  <TextView    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="HelloWorld!"/>  <Button    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="CLICK ME!"/></LinearLayout>

    运行一下,看看结果:

   一般情况下,点击一下Button都会系统都会有响应,如在DeskClok里的秒表界面,点击“开始”这个Button,秒表开始计时;现在我们需要实现一个功能:点击一下“CLICK ME!”,然后弹出一个Toast提示框,先给Button控件添加onClick属性

  <Button    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:onClick="showToast"    android:text="CLICK ME!"/>

    设定onClick的值为“showToast”的话,根据onClick的值,就可以在HelloWorldActivity里定义一个名称为“showToast”的方法;当我们点击“CLICK ME!”按钮后,就会去调用showToast函数,然后利用Toast弹出所需要的提示框;鉴于大多数人都喜欢“20岁以下的妹子”,弹出的内容就似乎它了

  public void showToast (View view){    Toast.makeText(this, "I like the girls under the age of 20!!", Toast.LENGTH_LONG).show();  }

    Toast提示框需要三个参数

    ① Context上下文:Activity本身也是Context,所以第一个参数用“this”(this就是HelloWorldActivity自己)

    ② 需要显示的文字:这个没什么好说的,想写什么写什么

    ③ 提示框显示时长:这里设置为长时间

    写完后,不要忘记把提示框“show”出来,很多初学者就把.show()忘了加上,然后发现根本不会弹出提示框;还有此方法没有返回值,且参数是View类型的;好了,运行一下看看结果: