Android 第一课 Activity

以下说明基于Android Studio,简称AS。(红色字体为自行添加,注在醒目)

具体包括:

  • 创建活动

  •     创建项目
  •     加载布局
  •     在AndroidManifest文件中注册
  • 活动中使用(提醒)Toast
  • 在活动使用(菜单)menu
  • 销毁活动

所谓活动(Activity):是一种包含用户界面的组件,主要用于和用户进行交互。

        在Android Studio 内进行新建项目ActivityTest,项目报名默认为,com.example.ActivityTest,其余步骤默认即可。然后一个项目就创建完成。

  • 手动创建活动:

    步骤:创建项目(可以勾选Generate Layout File),假如此时已经创建好一个活动,及其对应的一个布局文件,然后默认重写onCreate()方法,->    布局文件已经创建好,编辑布局xml文件(比如可以添加一个Button,但是然后要在对应的Activity文件加载这个Button.)->所有的活动都要在AndroidManifest.xml中进行注册才能进行生效,但是AS已经自动将活动在AndroidManifest.xml中注册了->配置主活动,添加<action android:name="android.intent.action.MAIN" />以及 <category android:name="android.intent.category.LAUNCHER" />表示主活动。

    

    找到com.example.activity包右击新建Empty Activity,活动命名为FirstActivity,不要勾选Generate Layout File(会自动创建一个对应的布局文件Layout,在res目录的Layout目录下) 和Launcher Activity(会自动设置为当前项目的主活动),但要勾选Backwards Compatibility 表示选择向下兼容模式。然后完成创建。

        项目中的任何活动都应该重写Activity的onCreate()方法,这一步骤AS会帮我们自动完成,默认实现。代码如下:

package com.example.activitytest;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;public class FirstActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//调用了父类的onCreate()方法}
}

Android程序讲究逻辑和视图分离,最好每个活动对应一个布局,所谓布局是指用来显示界面内容的,因为上一步没有勾选Generate Layout File,所以我们要手动创建一个布局文件。右击res目录的layout的目录,新建Layout resource file,命名为first_layout,根元素默认为LinearLayout(线性布局)。

    在first_layout.xml文件下,Text通过XML文件的方式来编辑布局的,点击Text,看到如下代码:

<?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"><Buttonandroid:id="@+id/button_1"//当前元素的唯一标识符android:layout_width="wrap_content"//当前元素的宽度android:layout_height="match_parent" //当前元素的高度android:text="Button 1"/>//当前元素中显示的文字内容
</LinearLayout>

一个按钮就成功的显示出来了。接下来我们在活动中加载这个布局,返回到FirstActivity,在onCreat()方法中加入代码。

package com.example.activitytest;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class FirstActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.first_layout);//调用了setContenView()方法来给当前的活动加载一个布局,而在setContentView()方法中,我们一般会传入一个布局文件的id(项目中添加的任何资源都会在R文件中生成一个相应的资源id,只需要调用R.layout.first_layout就可以得到first_layout.xml布局的id)}
}

所有的活动都要在AndroidManifest.xml中进行注册才能进行生效,而FirstActivity已经在AndroidManifest.xml中注册过了,打开AndroidManifest.xml文件,如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.activitytest"><applicationandroid: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"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>*/ 注释符内先别在意。<activity android:name=".FirstActivity"></activity></application>
</manifest>

活动的注册声明要放<application>标签内,这里时通过<activity>来对活动进行注册。很明白:是AS自动完成了对FirstActivity的注册。<activity>标签中我们使用了android:name来指定具体注册哪一个活动,这里填入.FirstActivity(com.example.activitytest.FirstActivity的缩写)。这是由于最外层的<manifest>标签中已经通过package属性指定了程序的包名是com.example.activitytest。

    不过,仅仅注册了活动,程序是不能运行的,还没有为程序配置主活动,程序运行先从主活动开始。配置主活动的方法是在<activity>标签的内部加入<intent-filter>标签,并在这个标签中添加<action android:name="android.intent.action.MAIN" />以及<category android:name="android.intent.category.LAUNCHER" />这两句的声明即可。
这部分就是我们上面用注释符/**/注解掉的部分。除此之外,我们还可以是使用android:lable指定活动中标题栏的内容,标题栏是显示在活动最顶部的,给主动指定的lable不仅会成为标题栏的内容,还会成为启动器(Launcher)中应用程序显示的名称。再次打开AndroidManifest.XML文件,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.activitytest"><applicationandroid: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=".FirstActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application>
</manifest>

不出所料,现在程序无bug,已经可以开始运行。

  • 在活动中使用Toast

    Toast是一种非常好的提醒方式,在程序中可以使用它将一些短小的消息通知给用户,过一段时间会自动消失。在活动中使用Toast。首先定义一个弹出Toast触发点,正好界面有一个按钮,我们就让点击这个按钮的时候弹出一个Toast吧,在onCreat()方法中添加如下代码:

package com.example.activitytest;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;public class FirstActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.first_activity);Button button1 = (Button)findViewById(R.id.button_1);button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {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()方法为按钮注册一个监听器,点击按钮就会执行监听器中的onClick()方法。因此,弹出Toast的功能当然是在OnClick()中编辑

    Toast的用法灰常简单,用过静态方法makeText()创建出一个Toast对象,然后调用show()将Toast显示出来就可以了。

    makeText()方法需要传入3个参数,第一个参数是Context,就是Toast要求的上下文,由于活动本身就是一个Context对象,因此这里这要传入FirstActivity.this就行了。第二个参数是Toast显示的内容。第三个参数是Toast显示的时长,有两个内置常量可以选择Toast.LENGTH_SHORT和Toast.LENGTH_LONG。

重新运行,并点击按钮,如下图:


  • 在活动中使用menu

菜单(menu)作用节省空间。

右击res目录下new一个Directory,输入文件名menu。然后右击menu文件new一个Menu resource file 命名为main。点击完成。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:id="@+id/add_item"android:title="Add"/><itemandroid:id="@+id/remove_item"android:title="Remove"/>
</menu>

这里创建了两个菜单项,其中<item>标签就是用来创建具体的菜单项,然后通过android:id给这个菜单项指定一个唯一的标识符,通过android:title给这个菜单项指定一个名称。

然后回到FirstActivity来重写onCreatOptionMenu()方法,重写方法使用Ctrl+O,然后在onCreatOptionMenu()方法中编写如下代码:

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

通过getMenuInflater()方法能够得到MenuInflater对象,在调用它的inflate()方法,就可以给当前活动创建菜单了。inflate()方法接受两个参数,第一个参数用于指定我们通过哪一个资源文件来创建菜单,这里传入R.menu.main,可以理解为就是所在的目录地址。第二个参数用于指定我们的菜单项将添加到哪一个Menu对象当中,这里直接使用onCreateOptionsMenu()方法中传入的menu参数。然后给这个方法返回true,表示允许创建的菜单显示出来,如果返回false,表示创建菜单无法显示。

以上步骤,仅仅是让菜单显示出来,但是并不能真正的使用。因此还要定义菜单响应事件,在FirstActivity中重写onOptionsItemSelected()方法,代码如下:

public boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()){case R.id.add_item:Toast.makeText(this,"You clicked Add",Toast.LENGTH_SHORT).show();break;case R.id.remove_item:Toast.makeText(this,"You clicked Remove",Toast.LENGTH_SHORT).show();break;default:}return true;}

在onOptionsItemSelected()方法中,通过调用item.getItemId()来判断我们点击的是哪一个菜单项,然后给每一个菜单项一个逻辑处理,弹出一个Toast。运行之后,如下图,




  • 销毁一个活动

如何销毁一个活动呢?按一下back键就可以销毁当前的活动了,也可以使用另一种方法,Activity类提供了一个finish()方法,在活动中调用一下这个方法就可以销毁当前活动了。代码如下:

button1.setOnclickListener(new View.OnClickListener){@overridepublic void onClick(View v){  finish();  }
}



注:此次一系列android 文章,均有参考郭霖书籍《第一行代码》,再一次无法抑制对大牛的崇敬。








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

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

相关文章

figma设计_一种在Figma中跟踪设计迭代的简单方法

figma设计As designers, telling a good story is always part of the job. A great story engages the client with the journey of decision making; it shows your team the breadth and depth of the exploration; it also encourages us to reflect on our own design pro…

latex 插图 上下放_专辑插图中上下文中的文本

latex 插图 上下放Especially if, like me, you’re not properly educated in the world of visual design, typography, and all those other things that a formal education can bring. We’re kind of playing around until something fits right, and doesn’t feel jarr…

视觉感知_产品设计中的视觉感知

视觉感知The role of the UX designer has evolved immensely over time, but at its core, it remains the same- UX设计人员的角色随着时间的流逝而发生了巨大的变化&#xff0c;但从本质上讲&#xff0c;它保持不变- to deliver information to users in an effective mann…

pb 插入报列在此处不_获取有关[在此处插入问题]的事实

pb 插入报列在此处不Twitter’s recent move to put notices on tweets themselves is one of the most controversial social media features during our times. As a design technologist, I can’t help but wonder the decision-making process behind it. It’s a perfect…

设计模式_单实体模式

Singleton 三要素&#xff1a;private 构造函数、 public 静态方法、 public 静态变量 单实例模式的三种线程安全实现方式&#xff08;&#xff23;&#xff0b;&#xff0b;&#xff09; &#xff11; 懒汉模式&#xff1a;即第一次调用该类实例的时候才产生一个新的该类实例…

c++编写托管dll_教程:如何编写简单的网站并免费托管

c编写托管dll本教程适用于谁&#xff1f; (Who is this tutorial for?) This tutorial assumes no prior knowledge and is suitable for complete beginners as a first project 本教程假定您没有先验知识&#xff0c;并且适合初学者作为第一个项目 您将需要什么 (What you w…

浅述WinForm多线程编程与Control.Invoke的应用

在WinForm开发中&#xff0c;我们通常不希望当窗体上点了某个按钮执行某个业务的时候&#xff0c;窗体就被卡死了&#xff0c;直到该业务执行完毕后才缓过来。一个最直接的方法便是使用多线程。多线程编程的方式在WinForm开发中必不可少。本文介绍在WinForm开发中如何使用多线程…

设计 色彩 构图 创意_我们可以从时尚的创意方向中学到色彩

设计 色彩 构图 创意The application of fashion as a form of aesthetic expression is a notion familiar to many. Every day, we curate ourselves with inspiration from rising trends, a perception of our personal preferences, and regards to practicality in the c…

Android 第六课 4种基本布局之LinearLayout和Relativelayout

看完控件&#xff0c;紧接着看布局&#xff0c;布局是可以来放置控件&#xff0c;管理控件的。布局里也可以嵌套布局。我们新建项目UILayoutTest项目&#xff0c;活动名和布局名选择默认。加入活动及其对应的布局已经创建完成。线性布局(LinearLayout)android:layout_gravity属…

如何在UI设计中制作完美阴影

重点 (Top highlight)Shadows are everywhere in modern UI Designs. They are one of the most essential part of the UI elements right behind the fill, stroke, and cornder radius. &#x1f609;现代UI设计中到处都有阴影。 它们是UI元素中最重要的部分之一&#xff0c…

微软2013年校园实习生招聘笔试题及答案

原文&#xff1a; http://www.wangkaimin.com/2013/04/07/%e5%be%ae%e8%bd%af2013%e5%b9%b4%e6%a0%a1%e5%9b%ad%e5%ae%9e%e4%b9%a0%e7%94%9f%e6%8b%9b%e8%81%98%e7%ac%94%e8%af%95%e9%a2%98%e5%8f%8a%e7%ad%94%e6%a1%88/#more-195 1. Which of following calling convension(s)…

Android 第七课 4种基本布局之FrameLayout和百分比布局

FrameLayout&#xff08;帧布局&#xff09;&#xff0c;她没有方便的定位方式&#xff0c;所有的控件都会默认摆放在布局的左上角。 修改activity_main.xml中的代码&#xff0c;如下&#xff1a; <?xml version"1.0" encoding"utf-8"?> <Frame…

mongodb 群集图_群集和重叠条形图

mongodb 群集图为什么和如何 (Why & How) 1.- Clustered Bar Charts1.- 集群条形图 AKA: grouped, side-by-side, multiset [bar charts, bar graphs, column charts]AKA &#xff1a;分组&#xff0c;并排&#xff0c;多组[条形图&#xff0c;条形图&#xff0c;柱形图] …

Android 第八课 创建自定义控件

常用控件和布局的继承结构&#xff0c;如下图&#xff1a; &#xff08;待续。。。。&#xff09; 所有的控件都是直接或间接继承自View的&#xff0c;所用的所有布局都是直接或间接继承自ViewGroup的&#xff0c;View是Android中最基本的一种UI组件&#xff0c;它可以在屏幕上…

figma下载_搬到Figma对我意味着什么

figma下载A couple of years ago, amidst the boom of new design and prototyping software, I was pretty reluctant to fight on the Figma/Sketch cold war. I was working on a relatively small design team and, after years helping to design products, well sold on …

Android 第九课 常用控件-------ListView

ListView允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内&#xff0c;同时屏幕上原有数据将会滚动出屏幕。 1、ListView简单用法 如何将ListView将你要显示的大量内容关联起来呢&#xff1f;这是个很重要的问题。 1、首先我们必须先将数据提供好&#xff0c;因为你的…

浅析SQL Server 2005中的主动式通知机制

一、引言 在开发多人同时访问的Web应用程序&#xff08;其实不只这类程序&#xff09;时&#xff0c;开发人员往往会在缓存策略的设计上狠下功夫。这是因为&#xff0c;如果将这种环境下不常变更的数据临时存放在应用程序服务器或是用户机器上的话&#xff0c;可以避免频繁地往…

Android 第十二课 使用LitePal操作数据库(记得阅读最后面的注意事项哦)

一、LitePal简介 1、(新建项目LitePalTest)正式接触第一个开源库---LitePalLitePal是一款开源的Android 数据库框架&#xff0c;它采用了对象关系映射&#xff08;ORM&#xff09;的模式。2、配置LitePal&#xff0c;编辑app/build.gradle文件&#xff0c;在dependencies闭包中…

解决关于登录校园网显示不在IP段的问题方案(要看注意事项哦!)

有时&#xff0c;登录校园网&#xff0c;账号和密码都显示正确&#xff0c;但是却显示出“账号只能在指定IP段登录”的问题。 那我们就提供了一个解决方案&#xff1a; 使用WinR,并在输入框&#xff0c;输入cmd命令&#xff1a;&#xff08;如下&#xff09;接着输入&#xff1…

页面返回顶部(方法比较)

下面就说下简单的返回顶部效果的代码实现&#xff0c;附注释说明。 1. 最简单的静态返回顶部&#xff0c;点击直接跳转页面顶部&#xff0c;常见于固定放置在页面底部返回顶部功能 方法一&#xff1a;用命名锚点击返回到顶部预设的id为top的元素 html代码 <a href"#top…