Android四大组件之actiivity

时间:2022-10-21 20:35:35

1.Acitivity

  Activity是Android一个非常重要的用户接口(四大组件之一),是可见的,主要是用户和应用程序之间进行交互的接口。在每个Activity中都可以放很多控件,所以也可以把Activity看作控件的容器,简单来说就是Android的UI部分。

2.Activity生命周期

  • onCreate:主要执行初始化工作,比如用setContentView加载布局界面
  • onStart:Activity由不可见变为可见,但是不在前台,不可以与用户进行交互
  • onResume:使Activity位于返回栈的顶端,并出现在前台,可与用户进行交互
  • onRestart:Activity的重启,由不可见变为可见
  • onPause:表明Activity正在停止,正常情况下onStop会紧接着调用。但是也有特殊情况,若这个时候需要快速的挥刀当前Activity,那么onResume也会被调用。这个方法的执行一定要快,不然会影响栈顶的Activity的使用。
  • onStop:Activity由部分不可见变为完全不可见,可做一些重量级的回收工作,同样不能很耗时。
  • onDestory:销毁Activity并释放资源。

 其中onCreate和onDestory为完整的生命周期,onStart和onStop为可见生命周期,onResume和onPause为前台生命周期。

3.给按钮添加事件的简单案例

package com.example.helloworld;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); Button button = (Button) this.findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener(){
public void onClick(View v){
//Toast t = Toast.makeText(context, text, duration);
/* Context字面意思上下文,Activity中我们直接用this代替,
而到了一个button的onClick(View view)等方法时,
我们用this时就会报错,改用ActivityName.this,
主要原因是因为实现Context的类主要有Android特有的几个模型,
Activity、Service以及BroadcastReceiver。*/ Toast t = Toast.makeText(MainActivity.this, "哈哈哈", Toast.LENGTH_LONG);
t.show();
}
}); } }

4. 我们可以去activity_main.xml中看xml如何配置的

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context="${relativePackage}.${activityClass}" >

<TextView
  android:id="@+id/textView1"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="@string/hello_world" />

<Button
  android:id="@+id/button1"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_alignParentLeft="true"
  android:layout_below="@+id/textView1"
  android:layout_marginLeft="23dp"
  android:text="你好" />

<Button
  android:id="@+id/button2"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_alignBaseline="@+id/button1"
  android:layout_alignBottom="@+id/button1"
  android:layout_centerHorizontal="true"
  android:text="Button2" />

</RelativeLayout>

  

RelativeLayout

  首先RelativeLayout的意思是指明了这个布局管理器是相对布局,是不是很像DIV的CSS属性。

   xmlns:android="http://schemas.android.com/apk/res/android"

   xmlns:tools="http://schemas.android.com/tools"

   这两句主要是schemas声明,不多解释了啊。

    android:layout_width是设置布局占屏幕的宽度,android:layout_height是设置布局占屏幕的高度,等于号后面的match_parent其实从Android 2.2开始FILL_PARENT改名为MATCH_PARENT 也就是占满屏幕的意思。

TextView

  下面是TextView里的属性介绍,有两个和上面一样的属性:

  android:layout_width:布局宽度,值是"wrap_content",代表根据内容自动拉伸;

  android:layout_height:布局高度,值是"wrap_content",代表根据内容自动拉伸;

  android:text:这个属性是上面没有的,表示这个Text 的文本,有点类似HTML里input的values属性啊:)值是"@string/hello_world" 这个@string代表的是从res/values/strings.xml里后      面的hello_world在哪里呢?我们来看下代码:

    

<?xml version="1.0" encoding="utf-8"?>
<resources> <string name="app_name">NI Hao</string>
<string name="hello_world">Hello world!</string> </resources>

  

  app_name:这个Android应用的名字

  action_settings:这个暂时还不知道是干嘛的,有知道的告诉我哈

  hello_world:这是我们自定义的一个Text

  到此,我们明白了,原来MainActivity可以调用这些资源的。

  

5.这个歌程序的效果是(左图) 点击你好后(右图)

  Android四大组件之actiivityAndroid四大组件之actiivity

  明天继续!

  

Android四大组件之actiivity的更多相关文章

  1. Android四大组件——Activity

    Activity作为Android四大组件之一,也是其中最重要的一个组件.作为一个与用户交互的组件,我们可以把Activity比较成为windows系统上的一个文件夹窗口,是一个与用户交互的界面.再进 ...

  2. Android四大组件之一&OpenCurlyDoubleQuote;广播”

    前言 Android四大组件重要性已经不言而喻了,今天谈谈的是Android中的广播机制.在我们上学的时候,每个班级的教室里都会装有一个喇叭,这些喇叭都是接入到学校的广播室的,一旦有什么重要的通知,就 ...

  3. Android 四大组件 与 MVC 架构模式

    作为一个刚从JAVA转过来的Android程序员总会思考android MVC是什么样的? 首先,我们必须得说Android追寻着MVC架构,那就得先说一下MVC是个啥东西! 总体而来说MVC不能说是 ...

  4. android四大组件&lpar;简单总结&rpar;

    activity 一个Activity通常就是一个单独的屏幕(窗口) Activity之间通过Intent进行通信 android应用中每一个Activity都必须要在AndroidManifest. ...

  5. android四大组件之Broadcast

    广播的概念 现实中:我们常常使用电台通过发送广播发布消息,买个收音机,就能收听 Android:系统在产生某个事件时发送广播,应用程序使用广播接收者接收这个广播,就知道系统产生了什么事件.Androi ...

  6. Android 四大组件之再论service

    service常见的有2种方式,本地service以及remote service. 这2种的生命周期,同activity的通信方式等,都不相同. 关于这2种service如何使用,这里不做介绍,只是 ...

  7. Android四大组件及activity的四大启动模式

    Android四大组件 1. 广播接收者的两种类型: (1)系统广播接收者,就是继承BroadcastReceiver这个类,然后还要在清单文件中注册,注册之后给他一个action.当系统发生了这个a ...

  8. Android成长日记-Android四大组件之Service组件的学习

    1.什么是Service? Service是Android四大组件中与Activity最相似的组件,它们都代表可执行的程序,Service与Activity的区别在于:Service一直在后台运行,它 ...

  9. Android四大组件之Activity&lpar;活动&rpar;及其布局的创建与加载布局

    Android四大组件之Activity(活动)及其布局的创建与加载布局 什么是Activity ? 活动(Activity)是包含用户界面的组件,主要用于和用户进行交互的,一个应用程序中可以包含零个 ...

随机推荐

  1. cmake 编译 c&plus;&plus; dll 的一个例子&lpar;更新2:增加 python 调用方法&rpar;

    CMakeLists.txt project(xxx) add_library(xxx SHARED xxx.cpp) add_executable(yyy yyy.cpp) target_link_ ...

  2. python 小知识

    PYTHONPATH是Python搜索路径,默认我们import的模块都会从PYTHONPATH里面寻找. 使用下面的代码可以打印PYTHONPATH: print(os.sys.path) impr ...

  3. Spring MVC 学习笔记(整理)

    SpringMVC学习 1.概述 Spring MVC是一种基于Java实现MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行解耦,基于请求-响应模型帮助我们 ...

  4. JavaBean 反射机制实现自动配置数据

    声明:该版本是没完成的.该博文只做记录代码用 String memberType(String name) throws Exception { return getType(getClass().g ...

  5. Hive中yyyymmdd和yyyy-mm-dd日期之间的切换

    以2017-12-05和20171205相互转换为例说明 方法1: from_unixtime+ unix_timestamp --20171205转成2017-12-05 ','yyyymmdd') ...

  6. web优化(二)

    上次说到js的阻塞dom渲染可能出现的白屏现象,所以对于js我们需要一些优化.首先我们可以模仿通信中的时分的概念,使用 setTime()来执行一段js代码然后渲染页面然后再执行一段js代码,这样可以 ...

  7. git 的 origin 的含义

    我们从progit 一书中可以看到: 远程仓库名字 “origin” 与分支名字 “master” 一样,在 Git 中并没有任何特别的含义一样. 同时“master”是当你运行git init时默认 ...

  8. SD从零开始62-63,不完全日志,业务伙伴及业务伙伴确定

    [原创] SD从零开始62 不完全日志 不完全日志Incompletion log 一个不完全日志是销售凭证中对你公司重要的而还没有在系统中输入的所有数据的清单: 你可以在配置中为不完全日志定义这些数 ...

  9. 任意输入一串字符串,求该字符串中字符的出现次数并打印出来,如输入&OpenCurlyDoubleQuote;bcaba”输出:b 2 c 1 a 2

    前言:其实我还是有点不懂,有点郁闷了,算了直接把代码放上去把. 方法一: Scanner input=new Scanner(System.in); System.out.println(" ...

  10. Linux命令之man

    man命令 用处:就是一个文档帮助手册 用法:在终端中输入man加上你想知道的命令,按Q退出man命令 示例: (我想知道pwd的用法) (我想知道ls命令的用法)