第一个程序的解析

首先 ,看看我们的第一个项目的目录结构

Android程序入口

世界上的每一个C程序都有以下几行代码
Main方法

但是在Android应用程序中,应用程序的起点。可以是任何注册活动。

主活动标记

[Activity(Label = "@string/app_name", Theme = "@style/AppTheme.NoActionBar", MainLauncher = true)]
public class MainActivity : AppCompatActivityCode language: CSS (css)

我们这个类没有静态main方法,它只有一个OnCreate方法。

MainLauncher = true:这个标注告诉框架,当前这个活动是主活动。底层封装的main方法就会调用这个活动。

using System;
using Android.App;
using Android.Widget;
using Android.OS;
using Android.Support.Design.Widget;
using Android.Support.V7.App;
using Android.Views;
using Android.Util;
using Android.Bluetooth;
using Android.Content;

namespace FirstDemo
{
	[Activity(Label = "@string/app_name", Theme = "@style/AppTheme.NoActionBar", MainLauncher = true)]
	public class MainActivity : AppCompatActivity
	{
                 //活动创建时调用
		protected override void OnCreate(Bundle savedInstanceState)
		{
Code language: C# (cs)

OnCreate 方法

protected override void OnCreate(Bundle savedInstanceState)Code language: JavaScript (javascript)

这个方法就是活动被创建的时候调用,每一个活动都拥有自己的生命周期。

Android MVC模式

Android属于MVC开发模式:

  1. Activity(活动类)→ 控制器 Controller
  2. xml/axml文档 → 视图 View

Activity生命周期状态

  1. RUNNING(运行中):活动在屏幕前台,获得焦点
  2. PAUSED(暂停):可见,但失去焦点;例:被悬浮弹窗遮挡
  3. STOPPED(停止):完全不可见,页面被覆盖跳转
  4. KILLED(销毁):系统内存不足,回收杀死进程;活动彻底销毁

状态流转:用户启动Activity → RUNNING;弹窗遮挡→PAUSED;页面跳转→STOPPED;内存不足→KILLED。

重写 OnCreate() 完整代码(Xamarin.Android)

protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);

    //配置使用的布局视图
    SetContentView(Resource.Layout.activity_main);

    //通过ID获取工具栏对象
    Android.Support.V7.Widget.Toolbar toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);

    //设置工具栏对象
    SetSupportActionBar(toolbar);

    //获取浮动按钮(信件图标)
    FloatingActionButton fab = FindViewById<FloatingActionButton>(Resource.Id.fab);

    //给按钮注册事件方法
    fab.Click += FabOnClick;
}Code language: JavaScript (javascript)

Resources 视图资源

资源包含:图片、图标、字符串、视图布局等。

  • 布局文件存放在 layout 目录
  • 布局文件示例:activity_main.axml

原生Android使用.xml布局,Xamarin‑Android使用.axml

总结

  1. Android没有静态Main函数MainLauncher=true标记的Activity就是程序入口;底层框架内部封装main。
  2. OnCreate:Activity创建时执行,必须调用base.OnCreate(savedInstanceState)
  3. SetContentView():绑定布局axml/xml,把视图加载到页面。
  4. MVC:Activity做控制器,axml/xml做视图。
  5. Activity四大状态:RUNNING、PAUSED、STOPPED、KILLED。
  6. 资源全部放在Resources文件夹,通过Resource.xxx.xxx访问。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注