Android应用开发:Activity(1)

目录

1、什么是Activity

2、创建Activity

3、启动模拟器运行项目

4、Activity 的基本用法

(1)在 Activity 中使用 Toast

(2)在 Activity 中使用 Menu

(3)销毁一个 Activity


1、什么是Activity

         Activity 是一种可以包含用户界面的组件,主要用于和用户进行交互。一个应用程序中可以包含零个或多个 Activity 。

2、创建Activity

打开Android Studio,点击File -> New -> New Project

-> 选中Empty Activity -> next 

-> 给项目命名 -> 点击 Finish

         观察一下项目结构,

        Android 程序的设计讲究逻辑和视图分离,最好每一个 Activity 都能对应一个布局,布局是用来显示界面内容的。layout 目录下的 activity_main.xml 就是 MainActivity 对应的布局。

        Design 是当前的可视化布局编辑器,不仅可以预览当前的布局,还可以通过拖放的方式编辑布局,而 Code 则是通过 XML 文件的方式来编辑布局的,点击一下 Code;

         项目中的任何 Activity 都应该重写 onCreate( ) 方法,目前 MainActivity 中已经重写了,这是 Android Studio 自动帮我们完成的。setContentView( )方法给当前的 Activity 加载一个布局,一般传入一个布局文件的 id,项目中添加的任何资源都会在 R 文件中生成一个相应的资源 id。

      

        所有的 Activity 都要在 AndroidManifest.xml 中进行注册才能生效 Android Studio 自动完成了对 MainActivity 的注册,打开 app/src/main/AndroidManifest.xml;

        Activity 的注册声明要放在<application> 标签内,通过<activity>标签来对 Activity 进行注册,android:name 来指定注册哪一个 Activity。程序配置主 Activity 配置的方法就是在<activity>标签的内部加入<intent-filter>标签,并在这个标签里添加<action android:name="android.intent.action.MAIN"/>和<category android:name="android.intent.category.LUANCHR"/>这两句声明即可

        除此之外,还可以使用 android:label 指定 Activity 中标题栏的内容,给主 Activity 指定的 label 不仅会成为标题栏的内容,还会成为启动器(Launtcher)中应用程序显示的名称。

<activity
            android:name=".MainActivity"
            android:label="This is MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

tip:如果你的应用程序中没有声明任何一个 Activity 作为主 Activity ,这个程序仍然是可以正常安装的,只是你无法在启动器中看到或者打开这个程序。这种程序一般是作为第三方服务供给其他应用在内部进行调用的。

3、启动模拟器运行项目

        由于Android Studio自动生成了很多东西,所以现在项目已经直接可以运行。在运行前需要创建一个Android模拟器

        ①点击右侧Device Manager,然后点击Create device,选择Phone以及Pixel2,点击next。

    ②选择之前要先下载,然后点击next,取一个名字AVD Name,(可以按需求修改一些配置)点击Finish,就创建好了。

③点击运行

4、Activity 的基本用法

(1)在 Activity 中使用 Toast

        Toast 是 Android 系统提供的一种非常好的提醒方式,在程序中可由使用它将一些短小的信息通知给用户,这些信息会在一段时间后自动消失,并且不会占用任何屏幕空间。

        ①打开 activity_main.xml,将根元素改成 LinearLayout ,删除 TextView ,在里面添加一个按钮;

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button 1"/>

</LinearLayout>

         ②打开 MainActivity ,将按钮的点击事件作为 Toast 的触发点

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

    // findViewById()方法返回的是一个继承自View的泛型对象  
        val button1 : Button = findViewById(R.id.button1)

    // 注册一个监听器,点击按钮是就会执行监听器中的 onClick()方法
        button1.setOnClickListener { 
            Toast.makeText(this,"You clicked Button 1",Toast.LENGTH_SHORT).show()
        }
    }
}

        ③运行项目,点击界面上的按钮

        使用Kotlin编写的Android项目在app/build.gradle文件的头部默认引入了一个kotlin-android-extension插件,这个插件会根据布局文件中定义的控件id自动生成一个具有相同名称的变量,我们可以在Activity里直接使用这个变量,而不再调用findViewById( )方法了。

        在Android Studio4.1以前我们新建kotlin项目ide会自动给我们引入该插件的引用,但是4.1以后就不再默认引入了,这个时候如果想再使用该插件,需要手动引入。

        打开app/build.gradle文件,在plugins下添加如下代码:(添加完后点击 Sync now

id 'kotlin-android-extensions'

        现在 MainActivity 中的代码可以简化为:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        
        button1.setOnClickListener {
            Toast.makeText(this,"You clicked Button 1",Toast.LENGTH_SHORT).show()
        }
    }
}

(2)在 Activity 中使用 Menu

① 在res目录下新建一个menu文件夹,res -> New -> Dirctory -> 命名"menu" -> ok

② 右键menu文件夹 -> New -> Menu resource file -> 命名为"main"

③ 在main.xml中添加代码

        id属性是给菜单项指定唯一的标识符,创建了两个菜单项

        android:title 给这个菜单项指定一个名称

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

④ 回到 MainActivity 重写 onCreateOptionMenu( ) 方法,将菜单显示出来(Ctrl + O)

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        button1.setOnClickListener {
            Toast.makeText(this,"You clicked Button 1",Toast.LENGTH_SHORT).show()
        }
    }

    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
       /* menuInflater实际上调用了父类的getMenuInflate()方法
        得到一个MenuInflater对象,再调用inflate()方法
        两个参数,第一个用于指定我们通过哪一个资源文件来创建菜单
        第二个用于指定我们的菜单项得添加到那一个Menu对象中
        返回true表示允许创建的菜单显示出来
        */
        menuInflater.inflate(R.menu.main,menu)
        return true
    }
}

⑤ 定义菜单响应事件,在 MainActivity 中重写onOptionsItemSelected( )方法

override fun onOptionsItemSelected(item: MenuItem): Boolean {
        //语法糖:item.getItemId()
        when(item.itemId){
            R.id.add_item -> Toast.makeText(this,"You clicked Add",Toast.LENGTH_SHORT).show()
            R.id.remove_item -> Toast.makeText(this,"You clicked Remove",Toast.LENGTH_SHORT).show()
        }
        return true
    }

⑥ 运行项目,点击模拟器右上角的三个竖点,点击Add 或 Remove会弹出对应的 Toast

(3)销毁一个 Activity

① 按一下 Back 键就可以销毁当前的 Activity

② Activity 类提供了一个 finish( )方法,调用一下就可以销毁当前的 Activity

// 点击一下按钮,当前的 Activity 就被成功销毁了 和按下 Back 键的效果是一样的
button1.setOnClickListner{
    finish()
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值