【安卓开发】【二】活动Activity

Android开发之Activity Android开发学习笔记。文中记录了Android开发中的三个常用组件:Activity(活动)、Broadcast(广播)、Service(服务),以及如何在组件之间传递消息数据。 阅读详情

一、手动创建Activity

1.找到项目包的位置:app/src/main/java/com.xxxx.xxx目录

右键包->New->Activity->Empty Activity


取消Generate Layout File和Launcher Activity,第一个是创建一个对应的布局,第二个是将这个新创建的Activity默认为当前项目的主活动。

    

创建一个新的Activity都会默认重新父类的OnCreate()方法

package com.movieproject.yj.mproject;

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

public class Main2Activity extends AppCompatActivity {

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

二、创建布局

右击app/src/main/res目录->New->Directory


创建一个layout目录


创建一个新的布局:New->Layout resource file



Design是当前可视化布局编辑器,可以浏览布局以及拖放编辑布局。

Text是通过XML文件的方式来编辑布局


加入一个button元素,match_parent表示让当前元素和父元素一样宽,wrap_content表示当前元素的高度只要能刚好包含里面的内容就好

<?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:id="@+id/button_01"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button 1"
        />
</LinearLayout>
在android上基本不用拖动的方式来布局的,这对你以后没什么好处。还是老老实实学习xml布局吧,以后你就知道为什么拖不可取了。

然后我们在MainActivity中SetContentView(),设置成R.layout.first_layout,调用这个方法来给当前的活动加载一个布局

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.first_layout);
    }
}

三、AndroidManifest文件中注册活动

1.所有的活动都要在这个xml中进行注册才能生效

在Activity标签中我们使用android:name来指定具体注册哪个Activity,这里的.MainActivity就是我们要注册的,其实这是com.example.activitytest.MainActivity的缩写,因为前面包名已经通过package指定的,所以可以省略掉

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity" />
    </application>

</manifest>

2.我们现在需要将这个Activity设置成主活动

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity"
            android:label="This is FirstActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    </application>

</manifest>

我们可以通过运行键来看我们的运行结果


如果没有虚拟设备的话,需要按照提示安装一个,跟装AndroidSDK差不多


四、使用Toast

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

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

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

五、使用Menu

1.首先在res目录下新建一个menu文件夹,再在menu文件夹下新建一个叫做main的菜单文件

右键->New->Menu resource file



加上一些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>

2.接着回到MainActivity中去重写OnCreateOptionsMenu()方法,快捷键Ctrl+O


public class MainActivity extends AppCompatActivity {

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

getMenuInflater()方法能够得到MenuInflater对象,调用inflate()方法就可以给当前活动创建菜单了。这个方法两个参数:第一个用于指定我们通过哪一个资源文件夹创建菜单,第二个参数用于指定我们的菜单项将添加到哪一个Menu对象当中。返回值true表示允许创建的菜单显示出来,反之则不显示。

3.重写OnOptionsIntemSelected()方法

public class MainActivity extends AppCompatActivity {

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.add_item:
                Toast.makeText(this,"You click add",Toast.LENGTH_SHORT).show();
                break;
            case R.id.remove_item:
                Toast.makeText(MainActivity.this,"You click remove",Toast.LENGTH_SHORT).show();
                break;
            default:
        }
        return true;
    }

六、销毁一个活动

1.一个简单的做法,按Back键就可以销毁当前的活动了

2.通过代码调用finish()方法也是一样的

        button1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                finish();
            }
        });

七、显式Intent

创建一个新的活动


这样默认的就会创建出一个新的活动以及布局,同时代码中会使用这个布局,然后我们的AndroidManifest.xml也会自动生成这个活动的配置


    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="This is FirstActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

接下来进入主题:Intent

Intent是安卓程序中各组件之间进行交互的一种重要方式,不仅可以致命当前组件想要执行的动作,还可以在不同组件之间传递数据。Intent一般可被用于启动活动、启动服务以及发送广播等场景。

Intent大致可分为两种:显式Intent和隐式Intent

Intent哟u多个构造函数,new Intent(Context context,Class cls),第一个参数Context表示提供一个启动活动的上下文,第二参数Class则是指定想要启动的目标活动,然后通过Activity类中的startActivity()方法进行活动的跳转

        button1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this,SecondActivity.class);
                startActivity(intent);
            }
        });

七、隐式Intent

Intent的用法更多的事隐式用法

1.通过action和category打开一个活动

打开AndroidManifest.xml,设置secondActivity的属性

        <activity android:name=".SecondActivity">
            <intent-filter>
                <action android:name="hahaha.exsample.com.activityapplication.ACTION_START" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        button1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                Intent intent = new Intent("hahaha.exsample.com.activityapplication.ACTION_START");
                //category 默认就是DEFAULT,所以不需要再次指定了
                startActivity(intent);
            }
        });

2.指定多个category

        <activity android:name=".SecondActivity">
            <intent-filter>
                <action android:name="hahaha.exsample.com.activityapplication.ACTION_START" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="hahaha.exsample.com.activityapplication.MY_CATEGORY" />
            </intent-filter>
        </activity>
        button1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                Intent intent = new Intent("hahaha.exsample.com.activityapplication.ACTION_START");
                intent.addCategory("hahaha.exsample.com.activityapplication.MY_CATEGORY");
                startActivity(intent);
            }
        });

3.打开网址

        button1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setData(Uri.parse("https://www.jd.com/"));
                startActivity(intent);
            }
        });

我们还可以在<intent-filter>标签中再设置一个<data>标签,用于更精确地指定当前活动能够相应什么类型的数据,<data>标签可以配置一下内容:

android:scheme用于指定数据的协议部分,比如http

android:host用于指定数据的主机名部分,比如www.baidu.com

android:port用于指定数据的端口部分,一般紧随在主机名之后

android:path用于指定主机名和端口之后的部分,如一段网址中跟在域名之后的内容

android:mimeType用于指定可以处理的数据类型,允许使用通配符的方式进行指定

只有<data>标签中指定的内容和Intent中携带的Data完全一致时,当前活动才能够响应该Intent

        <activity android:name=".SecondActivity">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="http" />
            </intent-filter>
        </activity>

直接通过之前方法打开这个活动

        button1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                Intent intent = new Intent("android.intent.action.VIEW");
                startActivity(intent);
            }
        });

除了http协议外,我们还可以指定很多其他协议,比如geo表示显示地理位置、tel表示拨打电话。




安卓activity(活动)启动模式详解 启动模式简介: 1、standard 标准模式,也是默认模式,如果launchMode不设置的话,默认是此模式,每次启动都会创建一个实例,比如a-a-a-a,活动a启动活动a,按返回键的话是a-a-a-a,有4个a活动实例。 2、singleTop 栈顶复用模式,如果启动的活动已经处于栈顶,则不会创建新的实例,而是复用栈顶活动,比如a-a-a-a,按返回键的话会直接退... 阅读详情

相关推荐

安卓Android ·移动应用开发 创建第一个Android项目

可以选择我们的模拟器,甚至我们可以通过手机屏幕共享的方式,把手机的开发者模式打开等操作,下载到本机手机之中,可以0距离的感受,程序之美。

m0_74154295的博客 7317

Android Studio中布局文件(如activity_main.xml)设计视图&代码视图相互切换

刚开始学Android,学《第一行代码》让打开布局文件并将其切换为“Text视图”,到这儿就没跟上,于是百度怎么转换,可能是版本原因吧,总和找到的帖子上说的不一样,但好在是有共同之处的,最终我找到了转换的图标。 这就是我的布局文件,以及它一开始打开的样子。 然后你可以对比看看,布局文件打开后,文件名下面比别的文件多一栏,就是我框出来的部分。这一栏最右边的三个小图标就是实现转换的图标啦。 ...

Sophorae的博客 2万+

焦距与视差的关系及其对深度估计的影响

焦距在立体视觉中的作用至关重要,它直接影响视差的大小,从而影响深度估计的精度。焦距越长,视差差异越大,物体的深度估计就越精确。这一关系使得焦距长的相机在一些需要高精度深度估计的应用场景中更加优越。了解焦距与视差的关系,对于优化相机配置和提升深度估计精度具有重要意义。在实践中,选择合适的焦距对于获得精确的深度信息至关重要,特别是在自动驾驶、虚拟现实、三维重建等领域,精确的深度估计能够提供更好的用户体验和技术支持。

计算机科学与技术专业学生的成长之路 1674

AndroidStudio使用入门

AndroidStudio使用入门1_AndroidStudio activity的基本使用1.1_MainActivity和activity_main的初识1.2_Activity的清单文件简介1.3_几种重要文件的介绍1.4_基本布局的认识与使用1.4.1_RelativeLayout(相对布局)1.4.2_线性布局2_控件的使用2.1_通用属性2.2_TextView的使用2.3_Button的使用 1_AndroidStudio activity的基本使用 log.v("","");//在控制面板输

qq_43907296的博客 2433

LC-3 机器语言 指令集

生活本就沉闷,但跑起来就有风

笔记 1万+

ElaticSearchUtil工具类封装

package com.xxx.util; import org.elasticsearch.action.admin.cluster.state.ClusterStateResponse; import org.elasticsearch.action.admin.indices.analyze.AnalyzeAction; import org.elasticsearch.action.ad

会飞的狼 6295

Android09_Activity及其生命周期

Activity及其生命周期 一、Activity初步认识:【创建、配置、启动Activity】 (一)、创建Activity: 创建Activity:继承于Activity或其子类,重写onCreate()方法。 (二)、Activity的注册配置: 作为四大组件之一的Activity,必须要在AndroidManifest清单文

雷家二少 772

数学建模更新10(蒙特卡罗模拟)

蒙特卡罗模拟一.目录二.引例1:布丰投针实验1.投针步骤2.思路3. 历史实验者二.蒙特卡罗模拟概述1.定义2.提出3.原理4.讨论三.应用实例1.三门问题【1】问题【2】代码2.模拟排队问题【1】题目【2】引入参数【3】总结题目信息【4】过程可视化【5】一些推导公式【6】代码3.有约束的非线性规划问题【1】问题的分类【2】例子【3】推导过程【4】代码 一.目录 二.引例1:布丰投针实验 1.投针步骤 步骤: 1:取一张白纸,在上面画出许多条间距为a的平行线 2:去一根长度为l的针,随机的向纸张上投掷n次

沉晨尘宸的博客 3043

Android基础 | Activity间进行数据传递

1、打开新的Activity,并传递若干个参数给它 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { ....... button.setOnClickListener(new View.OnClickListen

水陌轻寒 581

树莓派安装snowboy

1、树莓派换源 参考链接:https://blog.youkuaiyun.com/qq_43556844/article/details/113615915 2、更新pip3 参考链接:https://blog.youkuaiyun.com/qq_43556844/article/details/113616214 3、存取麦克风 我们使用PortAudio作为音频输入/输出的跨平台支持。我们还使用sox作为快速实用程序来检查麦克风设置是否正确。 sudo apt-get install python-pyaudio python

qq_43556844的博客 1923

HMC5883L磁力计在STM32F4上的I2C驱动与数据校准实战

本文详细介绍了HMC5883L磁力计在STM32F4平台上的I2C驱动开发与数据校准实战。通过解析寄存器配置、数据读取处理和椭圆拟合校准算法,帮助开发者实现精准的地磁测量,特别适用于无人机导航和机器人系统中的航向确定与陀螺仪漂移修正。

2y3u4i5o6p的博客 1039

如何查看Androidstudio中activity_main.xml的源代码

如何查看Androidstudio中activity_main.xml的源代码 首先打开Androidstudio中activity_main.xml,如图所示: 当你想要查看代码时确不知道在哪里找,请看下面的截图即可找到: 到此就是找到代码的过程。 帮到你的给我点赞哦! ...

MIT372的博客 2万+

ABAP Cloud 开发教程的文章目录

本教程涵盖 ABAP 云端 Client 处理、多租户架构、ABAP Cloud开发、动态编程优化、SQL语法改进等技术主题。最新版本1.0.0(更新至2025-12-12),包含197篇文章,重点文章包括《ABAP Client Handling与隔离机制》《ABAP Platform 2021泛型编程》《SAP BTP ABAP多租户应用开发》等,为开发者提供从基础到进阶的实战指南。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1821

Android个人笔记(四)退出程序 & 启动活动的最佳写法

退出程序 在某一个Activity中想要完全退出程序:用一个集合类对所有Activity进行管理 //新建一个ActivityCollector类作为活动管理器 public class ActivityCollector{ public static List<Activity> activities = new ArrayList<>(); public static void addActivity(Activity activity){ activities.add(

Mango_steen的博客 140

【WorkBuddy专栏14】专家不是「换皮」——角色切换、训练机制与自我进化深度拆解

WorkBuddy专栏14】专家不是「换皮」——角色切换、训练机制与自我进化深度拆解

AI人人懂 594

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

如何判断这个activity是否可见?

getWindow().getDecorView().getWindowVisibility():获取Activity的根视图(DecorView)的可见性状态。请注意,getUserVisibleHint()在FragmentPagerAdapter或FragmentStatePagerAdapter等场景下更为适用,因为这些适配器会自动管理Fragment的可见性。isFinishing():检查Activity是否正处于结束(finishing)过程中。

chezabo6116的博客 1201

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

存在栈中的Activity与static数据

activity1跳转到activity2中 activity1中使用某静态类中某static属性存储相关的数据,在activity2中对static的值进行改变,点击返回按钮,回到acitivity1中,发现activity1中的数据没有改变。 activity1跳到activity2中后,处于挂起状态,被压入到栈中,当返回后activity2从栈顶弹出,activity1获取到焦点,但...

老赵的工具箱 (本博客都是原创,转载请注明出处) 236

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

安卓活动Activity

这里调用了setContentView()方法来给当前的Activity加载一个布局,而在setContentView()方法中,我们一般会传入一个布局文件的id。项目中添加的任何资源都会在R文件中生成一个相应的资源id,因此刚才创建的first_layout.xml布局的id现在已经添加到R文件中了。findViewById()方法获取在布局文件中定义的元素,这里传入R.id.button1来得到按钮的实例,它返回的是一个view对象所以要转换成button。设置成主Activity时,必须为true。

君子慎独,不欺暗室。卑以自牧,含章可贞。 1413

Android开发之程序活动单元Activity【1】

本文学自宁传奇老师,仅供学习和参考,禁止用作任何商业用途!Android中的四大组件分别是活动Activity、服务Service、内容提供器ContentProvider、广播接收器BroadercastReceiverActivity是一个负责和用户交互的组件、每个Android应用中都会用Activity来显示界面以及处理界面上一些控件的时间Intent【意图】:程序中各组件间进行交互的一种重要方式。它不仅可以指定当前组件要执行的动作,还可以在不同组件之间进行数据传递。

缘友一世的博客 6992

【安卓基础4】Activity(二)

一、Activity四大启动模式、任务栈、默认启动模式 Standard、栈顶复用模式 SingleTop、栈内复用模式 SingleTask、单实例模式 SingleInstance、组合示例、启动模式的一般使用场景、启动模式设置方法、1.清单文件Manifest、2.动态设置、二、在活动之间传递消息、Intent、Intent是什么?、Intent的组成部分、显示Intent、隐式Intent、启动内部Activity、主要特征:、用法示例:、向下一个Activity传递数据、putExtra()传字符

丨康有为丨的博客 2649

Android之 Activity活动详解

activity活动页面详解

qq_29848853的博客 5万+

安卓开发之Activity活动

1.活动的四种状态 1.1运行状态 当一个活动位于返回栈的栈顶时,这时活动就处于运行状态。系统最不愿意回收的就是处于运行状态的活动,因为这会带来非常差的用户体验。 1.2暂停状态 当一个活动不再处于栈顶位置,但仍然可见时,这时活动就进入了暂停状态。你可能会觉得既然活动已经不在栈顶了,还怎么会可见呢?这是因为并不是每一个活动都会占满整个屏幕的,比如对话框形式的活动只会占用屏幕中间的部分区域,你很快就会在后面看到这种活动。 处于暂停状态的活动仍然是完全存活着的,系统也不愿意去回收这种活动(因为它还是可见

taka_is_beauty的博客 398

安卓学习笔记(二)活动Activity

总结《第一行代码》Android学习笔记(二)活动Activity活动(Activity)Toast的使用Menu的使用销毁活动使用Intent实现活动的转移和数据传递1.使用显式Intent2.使用隐式Intent3.隐式Intent的更多用法4.向下一个活动传递数据5.向上一个活动传递数据活动的生命周期活动的回收后数据丢失问题活动的启动模式1.standard2.singleTop3.sing...

qq_36271550的博客 577

Android studio如何新建activity 安卓新建活动

下面 的 方法/步骤 是教会大家 : 1.新建Activity项目 2.在已经建好的项目中新建一个Activity 安卓程序中都是由一个个activity组成,每个activity表示一个完整的用户活动,各种活动来完成用户的需求。我们需要很熟练的建立并编辑activity,下面小编就来介绍一下如何新建activity。 一 : 工具/原料 Android studio工具 二 : 方法/步...

qq_42818575的博客 6444

Android安卓中Activity活动生命周期

文章目录前言活动的状态常规情况下的生命周期典型情况下的生命周期一些例外情况的生命周期异常情况下的生命周期总结 前言 Activity作为安卓四大组件之一,平常我们接触得最多得也是activity,所以很有必要详细了解一下他的详细生命周期。这篇文章定位是有一点安卓基础的,所以还完全不了解的可以先去学习一下activity。这篇文章主要是讲活动的生命周期。 活动的生命周期,人有胎儿期,青春期,老年期一...

一只修仙的猿 669

Android开发-Activity(活动)

目录 1. Activity概念 2. Activity的创建 3. Activity的生命周期 3.1 生命周期状态 3.2 生命周期方法 3.3 横竖屏切换时的生命周期 4. Activity的启动模式 4.1 Android中的任务栈 4.2 Activity的4中启动模式 5. Activity的销毁 6. Activity之间的跳转 6.1 Int...

云上道人的博客 5710
上一篇: 【安卓开发】【一】初识安卓
下一篇: UGUI UI事件通用脚本
HelloCLanguage
博客等级 码龄10年 10粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值