android中如何新建一个activity,《Android Activity》活动的介绍和创建

Activity 是什么

Android 有四大组件:Activity、Service、Broadcast Receiver 和 Content Provider。

Activity,活动,即用来承载用户界面的容器,Android 四大组件之一。我们在 APP 里面看到的页面就需要一个 Activity,页面之间的跳转就是 Activity 之间的跳转。比如,登陆页面是一个 LoginActivity,注册页面是一个 RegisterActivity,当我们需要从登陆页面跳转到注册页面时,也就是 LoginActivity 通过 Intent 跳转到 RegisterActivity。

默认生成的 MainActivity

我们新建一个 Android 项目时,通过会默认生成一个 Activity,叫 MainActivity,这个 MainActivity 就是此时这个项目唯一的页面,也是 APP 的启动页面,不过你可以根据自己的需求新建其它的 Activity。

为什么说此时的 MainActivity 就是 APP 的启动页面呢?我们可以打开 AndroidManifest.xml 文件,任何一个 Activity 都需要在这个文件里面配置,我们会看到这样的代码:

package="com.example.skypan.myapplication">

android:allowBackup="true"

android:icon="@mipmap/ic_launcher"

android:label="@string/app_name"

android:roundIcon="@mipmap/ic_launcher_round"

android:supportsRtl="true"

android:theme="@style/AppTheme">

package 是程序的包名,在 application 标签中我们看到有 MainActivity,其中:

这几行代码的意思是,选择 MainActivity 作为程序的主页面,且点击桌面图标时可以启动这个页面,如果你需要把其它的 Activity 作为主页面,可以把这几行代码移过去。

如果我们此时新建了一个其它的 Activity,比如 LoginActivity,那么我们需要在这个文件中注册:

package="com.example.skypan.myapplication">

android:allowBackup="true"

android:icon="@mipmap/ic_launcher"

android:label="@string/app_name"

android:roundIcon="@mipmap/ic_launcher_round"

android:supportsRtl="true"

android:theme="@style/AppTheme">

正如上面所说,每新建一个 Activity 都需要在这个文件中注册,初学者容易忘记。

大家有没有发现这么一行代码:android:name=".MainActivity",这是 Activity 的名字,且名字必须是完整的路径名,.MainActivity 是一种简写形式,意思就是“.”前面是包名,只有包名路径可以用“.”表示,其它的必须写完整路径,这里也可以写成 “com.example.skypan.myapplication. MainActivity”。

我们在这个文件中还可以配置 Activity 的其它属性,例如启动模式、横屏竖屏等等:

android:name=".LoginActivity"

android:launchMode="standard"

android:screenOrientation="portrait">

我们再看看 MainActivity 这个类:

package com.example.skypan.myapplication;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

}

我们发现 MainActivity 继承的并不是 Activtiy,而是 AppCompatActivity。这是因为 AppCompatActivity 是 android.support.v7 包下面的兼容类,我们还可能继承别的以 *Activity 为后缀的类,但是它们的最终父类一定是 Activity。我们查看源码发现,AppCompatActivity 的继承关系如下图:

c7a79bcdca04

MainActivity 里面有一个重要的方法 onCreate,我们大部分事情都在这个方法里面实现。setContentView(R.layout.activity_main) 是设置 Activity 的布局文件,也就是这个页面长什么样子,绝大多数情况下我们都需要写上这句,因为我们每个 Activity 基本都需要一个视图,当然,也有不需要的。activity_main 就是这个 Activity 的布局文件,在 res/layout 文件夹下面,是一个 xml 文件,我们通过 R.layout.xxx 来使用。

我们如何来新建一个 Activity

有两种方式。

第一种比较简单,直接通过右键选项来新建,这种方式会帮我们把 layout 文件,和 AndroidManifest.xml 文件都配置好,一步到位。

c7a79bcdca04

c7a79bcdca04

点击 Finish 按钮,就会帮我们把所有文件都生成好:

c7a79bcdca04

第二种方式是我们自己创建各个文件,这两种方式在实际开发中都很常用。

1、新建一个类继承 AppCompatActivity,并重写 onCreate 方法。

2、在 res/layout 文件夹下新建一个 layout 布局文件。

3、在 Activity 中引入该布局。

4、在 AndroidManifest.xml 文件中注册该 Activity。

1、新建一个类继承 AppCompatActivity,并重写 onCreate 方法。

c7a79bcdca04

c7a79bcdca04

贴士:填写 Superclass 的时候我们不需要从 android.support 开始写起,直接输入 AppCompat 会有提示让你选择的。

点击 OK 之后我们在 Test2Activity 中重写 onCreate 方法。同样,也不用一个字母一个字母的写,直接在大括号中输入 onCreate 会有提示让你选择的。

c7a79bcdca04

2、在 res/layout 文件夹下新建一个 layout 布局文件。

c7a79bcdca04

c7a79bcdca04

3、在 Activity 中引入该布局。

c7a79bcdca04

4、在 AndroidManifest.xml 文件中注册该 Activity。

c7a79bcdca04

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528809.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ffmpeg 音乐循环_[宜配屋]听图阁

ffmpeg -i out3.mp4 -i music3D.wav -filter_complex [1:a]alooploop-1:size2e09[out];[out][0:a]amix -ss 0 -t 60 -y out.mp4参数详细介绍:ffmpeg//输入视频,最好选一个大于一分钟的尝试-i out3.mp4//输入背景音,最好短一点,方便…

android qq红点,Android高仿QQ小红点功能

先给大家展示下效果图:绘制贝塞尔曲线:主要是当在一定范围内拖拽时算出固定圆和拖拽圆的外切直线以及对应的切点,就可以通过path.quadTo()来绘制二阶贝塞尔曲线了~整体思路:1、当小红点静止时,什么都不做,只…

modern android5.1,Modern摩登印

Modern摩登印可以帮助小伙伴们轻松制作手机相册,超多素材为你提供,支持个性化设置,将照片一秒变高大上的海报,还能支持音乐相册效果,超多原创音乐随你挑选,结合潮流相册模板,让你的作品更精美哦…

android1.6,令人遗憾的Android 1.6系统_戴尔 Mini5(Streak)_手机其它OS-中关村在线

令人遗憾的Android 1.6系统虽然Dell Streak上周五刚刚在美国地区上市,但实际上这款产品的开发时间已经很长了。早在去年Dell的Mini 3i上市之前这款被称之为Dell Mini 5的产品就已经出现在大家的视野之中,而当时其搭载的就是在当时看来还是十分先进的Andr…

java第七章jdbc课后简答题_javaEE简答题答案

一、简答题(30分,6题*5分)(一)第一章概述1.三层体系结构的优点有哪些?p2(1)安全性高(2)易维护(3)快速响应(4)系统扩展灵活2.两层体系结构的缺点有哪些?p2-3(1)安全性低(2)部署困难(3)消耗系统资源3.简述Java EE的“组件-容器”编程思想。(P5&…

jupyter配置到服务器_服务器端jupyter notebook映射到本地浏览器的操作

1、远程服务器上安装jupyter notebook(配置jupyter_notebook_config.py文件)sudo pip install jupyter2、远程服务器(8890端口,没有下面括号中内容默认在服务器8888端口打开jupyter notebook,下面将使用默认端口8888)启动jupyter notebookjup…

android 控制word,Android使用POI进行Word操作(一)

操作步骤步骤一:引用相关POI库步骤二:创建POI中的word文件对象步骤三:调用word文件对象的方法对文件进行操作步骤一:引用相关的POI库吐槽一下,这一步是最坑的本人尝试了很多版本组合,最新的版本提示class重…

go编译so win10_windows搭建Go语言交叉编译环境

我的环境:64位 windows 10go version go1.9.1 windows/amd641. 安装MinGW-w64我的系统是64位win10,早期版本的MinGW我安装后编译go的相关工具会一路报错,换成mingw-w64就可以顺利编译,下载地址:http://sourceforge.net…

android car bt模块,大谷蓝牙小车BT Car/Android Car手机控制 重力控制小车 安卓操控小车...

产品介绍:Android蓝牙遥控小车平台。是通过Android手机以蓝牙方式操控小车前进后退左转右转等,具有重力感应操控、触摸屏虚拟操控、虚拟摇杆三种控制模式。并且还具有呼吸灯、电源指示灯、蓝牙连接指示灯、速度等级指示灯等状态指示。小车自带锂电池及US…

html语言怎么设计出来的,(正式)网页设计语言HTML.ppt

(正式)网页设计语言HTML第二章网页设计语言HTML HTML基础知识 页面基本信息和布局 文本修饰 超文本链接 表格 图像 表单 多媒体 什么是HTML? HTML是Hyper Text Markup Language的英文缩写,翻译为“超文本标识语言”。它是一种用来制作超文本文档的简单标…

Dijkstra(迪杰斯特拉)算法总结

知识概览 Dijkstra算法适用于解决所有边权都是正数的最短路问题。Dijkstra算法分为朴素的Dijkstra算法和堆优化版的Dijkstra算法。朴素的Dijkstra算法时间复杂度为,适用于稠密图。堆优化版的Dijkstra算法时间复杂度为,适用于稀疏图。稠密图的边数m和是一…

二元二次方程例题_二元二次方程组-解法-例题

对“二一”型二元二次方程组中形如的方程组,可以根据一元二次方程根与系数的关系,把x、y看做一元二次方程z2-azb0的两个根,解这个方程,求得的z1和z2的值,就是x、y的值。当x1z1时,y1z2;当x2z2时&…

wxwidget编译安装_wxWidgets的安装编译、相关配置、问题分析处理

一、介绍部分 (win7 下的 GUI 效果图见 本篇文章的最后部分截图2张)wxWidgets是一个开源的跨平台的C构架库(framework),它可以提供GUI(图形用户界面)和其它工具。目前的2.x版本支持所有版本的Windows、带GTK或Motif的Unix和MacOS。相当于大家熟悉的 VC。二、wxWidge…

馀承东发布鸿蒙,鸿蒙系统一无是处?鸿蒙有何优势?

华为方面官宣,将于6月2日晚8点,举行鸿蒙操作系统及华为全场景新品发布会,届时,大家期待已久的鸿蒙操作系统也将正式亮相。鸿蒙OS有别于传统OS,具有四大技术特性,这也是鸿蒙的四大优越之处。首先&#xff0c…

html 鼠标图标做成动画效果,怎么实现鼠标经过图标动画效果

学习前端的小伙伴们你知道鼠标经过图标动画效果如何实现吗?不知道的话跟着小编一起来学习标经过图标动画效果怎么实现把。今天就为大家分享一组时尚而简单的鼠标经过图标动画效果。构建HTML基本结构在本示例当中用到的HTML结构极其简单,在一个大的div容器中放了几个…

netty心跳过程中 发送消息失败_Netty 4.0 实现心跳检测和断线重连

arg0.pipeline().addLast("ping", new IdleStateHandler(25, 15, 10,TimeUnit.SECONDS));这个处理器,它的作用就是用来检测客户端的读取超时的,该类的第一个参数是指定读操作空闲秒数,第二个参数是指定写操作的空闲秒数&#xff0c…

校验html输入值为电话号码,js验证输入是否为手机号码或电话号码示例

代码如下:String.prototype.Trim function() {var m this.match(/^\s*(\S(\s\S)*)\s*$/);return (m null) ? "" : m[1];}String.prototype.isMobile function() {return (/^(?:13\d|15[89])-?\d{5}(\d{3}|\*{3})$/.test(this.Trim()));}String.prototype.isTe…

pcs层到mac层_mac层

ETSI TS 102 887-2-2013 电磁兼容与无线频谱事务(ERM).近程设备.智能测量无线接入协议.第2部分:数据链路层(MAC子层) 版本1.1.1ETSI TS 102 887-2-2013 电磁兼容与无线频谱事务(ERM).近程设备.智能测量无线接入协议.第2部分:数据链路层(MAC子层) 版本1.1.1ETSI TS 136 321-2013…

html表格中怎么将背景颜色虚化,如何在Photoshop中制作效果惊艳模糊背景!

把背景模糊一下,有时,效果会令人非常惊艳,但是,你知道如何在Photoshop中模糊背景吗? 在今天的教程中,我们将告诉大家,如何使背景模糊,而又不会使我们的主体周围出现光晕。在这个过程…

python 切片步长_python切片步长

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台&…