news 2026/6/14 18:18:39

程序基本知识

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
程序基本知识

总目录

基本程序框架:

一个Android apk 由一个标准的Android 项目结构生成,像Android Studio一样的集成开发环境能够生成标准的项目目录结构,通过编辑该目录结构,我们能够设计出可运行的Android 软件。

一个标准的Android 项目目录结构

Project(项目根目录) gradle (配置目录) app (核心) src (源代码存放目录) main java (java源代码目录) com project projectname 许多.java文件 res (程序使用的资源) ...(各种文件夹,每个文件夹代表一种类型的资源,每个文件夹包含许多.xml文件,定义了各种资源) AndroidManifest.xml (一个用于注册的配置文件)

已经省略了其他目录。显然,一个安卓项目包含三个基本部分

java源代码定义了软件的活动,行为
资源(res)定义了软件运行过程中需要的文件
配置(gradle, AndroidManifest.xml)定义了程序使用的安卓系统版本,程序的名称,程序的组件等等

下面介绍这三个组件,以及Activity的概念

Activity(这是后面才会涉及的概念,然而,此处产生一个概念是有好处的)

一个Android 软件在运行过程中通常会产生一个Activity,Activity 是安卓程序的生命周期,它定义了一个程序的行为,功能。一个Activity本质上是一个java基类,在java目录中可以通过添加java类并继承Activity基类实现

例如,添加一个java 类,名称为MyActivity.java

package com.example.name; //Android studio会自动生成包名 //Android studio 会自动引入相应的包 import android.content.Intent; import android.os.Bundle; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; //这里继承一个名为AppCompatActivity 的基类 public class MyActivity extends AppCompatActivity { //重载onCreate 方法,该方法在Activity被创建的时候被调用 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EdgeToEdge.enable(this); //以上是默认配置,暂时忽略 setContentView(R.layout.main); //此处设置所用的布局文件 } }

在上述代码中,创建了一个Activity,这个Activity 指定了一个布局文件main.xml。当这个Activity被运行时,会产生一个界面,界面中显示的内容就由这个布局文件main.xml规定

值得注意的是,我们并不是使用 main.xml 的文件路径,而是使用了R.layout.main。这是因为这个布局文件在res/layout/ 目录中,凡是在res目录中的资源都会在一个名为R.java 的文件中产生一个id,id的类型是整型。这个id是由Android Studio自动产生的,不需要我们自己手动添加id。例如,我们在res/mipmap 目录中放置了一张名为 background.jpg 的文件,我们可以直接在代码中调用R.mipmap.background来使用这张图片。

AndroidManifest.xml

我们注意到如果创建了多个Activity类,在软件启动的时候,会先启动哪一个呢?

在AndroidManifest.xml中指定了最先启动的Activity。在下面的AndroidManifest.xml文件中,我们先忽视application等其他的标签,只关注activity标签,可见有两个Activity,分别名为MainActivity和TestActivity。可以注意到MainActivity中还包含一个<intent-filter>标签,正是这个标签使得这个mainActivity在程序启动的时候最先启动

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" > <application android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" android:fullBackupContent="@xml/backup_rules" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.Hhy" > <activity android:name=".MainActivity" android:exported="true" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".TestActivity" android:exported="true"> </activity> </application> </manifest>

资源(res目录)

这个目录包含了多种资源,可以是音频,视频,图片,文本,样式等等

这里先介绍布局文件资源

在一个布局文件中,通常也是由xml 标签规定界面中要显示什么控件,例如,在res/layout 中,我们创建了一个main.xml 文件

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="你好,世界"/> </LinearLayout>

这种代码非常容易理解,这段代码明显规定了一个LinearLayout布局,并在布局中添加了一个文本控件。

我们在MainActivity.java 中使用了这个布局文件,那么在软件启动后可以在界面中看到你好,世界的文本。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 4:02:31

Z变换:离散控制系统的核心数学工具

这是一个非常核心的信号与控制系统问题。我将系统地解释Z变换的原理、本质和作用&#xff0c;力求清晰深入。一、原理&#xff1a;从连续到离散的桥梁要理解Z变换&#xff0c;首先要明白它解决的问题背景。控制系统的数字化&#xff1a;现代控制系统&#xff08;如机器人、数控…

作者头像 李华
网站建设 2026/6/15 13:40:21

魔鬼魔王通达信主图 源码 有买卖提示

{}N1:7; LC:REF(CLOSE,1); X:SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100,COLORYELLOW,LINETHICK1; 魔鬼:DRAWLINE(X>HHV(X,N1),X,X<LLV(X,N1),X,1),COLOR00FF00; 魔王:DRAWLINE(X>HHV(X,N1),X,X<LLV(X,N1),1,X),COLOR00FF00; TJ0:X魔王; TJ1:X魔鬼; T…

作者头像 李华
网站建设 2026/6/14 4:11:19

庄散资金流 增加震仓副图、源码、贴图

{}JJ:(HIGHLOWCLOSE)/3; QJ0:AMOUNT/IF(HIGHLOW,4,HIGH-LOW); 主买:ABS(QJ0*(JJ-MIN(CLOSE,OPEN))),COLORRED,LINETHICK0; 主卖:(QJ0*(MIN(OPEN,CLOSE)-LOW)),COLORLIBLUE,LINETHICK0; 散买:(QJ0*(HIGH-MAX(OPEN,CLOSE))),LINETHICK0; 散卖:ABS(QJ0*(MAX(CLOSE,OPEN)-JJ)),COLO…

作者头像 李华
网站建设 2026/6/8 16:02:35

通达信自用资金流指标 源码

{}VAR1:AMOUNT/((HIGH-LOW)*2-ABS(CLOSE-OPEN)); 流入亿:IF(CLOSE>OPEN,VAR1*(HIGH-LOW),IF(CLOSE<OPEN,VAR1*((HIGH-OPEN)(CLOSE-LOW)),AMOUNT/2))/100000000,COLORRED,NODRAW; 流出亿:IF(CLOSE>OPEN,0-VAR1*((HIGH-CLOSE)(OPEN-LOW)),IF(CLOSE<OPEN,0-VAR1*(HIGH…

作者头像 李华
网站建设 2026/6/11 13:18:02

10、用Python构建移动应用与Web应用全攻略

用Python构建移动应用与Web应用全攻略 Python凭借其简洁性和强大的功能,在软件开发领域占据着重要地位。它不仅可以用于构建移动应用,还能轻松打造功能完备的Web应用。本文将详细介绍如何使用Python进行移动应用和Web应用的开发。 1. 构建Kivy Android应用 在构建Kivy Andr…

作者头像 李华
网站建设 2026/6/14 11:11:00

多模态AI推理技术演进:从视觉感知到认知思维的范式跃迁

多模态AI推理技术演进&#xff1a;从视觉感知到认知思维的范式跃迁 【免费下载链接】ERNIE-4.5-VL-28B-A3B-Base-Paddle 项目地址: https://ai.gitcode.com/hf_mirrors/baidu/ERNIE-4.5-VL-28B-A3B-Base-Paddle 在人工智能多模态交互领域&#xff0c;技术演进正从简单的…

作者头像 李华