android学习笔记(三)

1、AndroidManifest.xml的解读:

XML 复制代码
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <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.Myview"
        tools:targetApi="31">
        <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>
    </application>

</manifest>

Android应用的清单文件(Manifest文件),用于声明应用的各种组件和配置信息。
1. 清单文件的根元素是<manifest>,并声明了android和tools这两个命名空间。
2. 使用权限<uses-permission>声明了读取外部存储的权限android.permission.READ_EXTERNAL_STORAGE。
3. 在<application>元素中指定了应用的各种属性:
   - android:allowBackup="true" 表示应用允许通过Android Backup Service备份。
   - android:dataExtractionRules="@xml/data_extraction_rules" 指定了用于数据提取规则的XML文件。
   - android:fullBackupContent="@xml/backup_rules" 指定了用于完全备份的XML文件。
   - android:icon="@mipmap/ic_launcher" 指定了应用的图标。
   - android:label="@string/app_name" 指定了应用的名称。
   - android:roundIcon="@mipmap/ic_launcher_round" 指定了应用的圆形图标。
   - android:supportsRtl="true" 表示应用支持从右到左的布局方向。
   - android:theme="@style/Theme.Myview" 指定了应用的主题。
   - tools:targetApi="31" 表示使用的目标API级别为31。
4. <activity>元素声明了一个活动(Activity)组件:
   - android:name=".MainActivity" 指定了活动类的名称为MainActivity。
   - android:exported="true" 表示此活动可以被其他应用程序调用。
   - 在<intent-filter>中声明了该活动是应用的入口:
     - <action android:name="android.intent.action.MAIN" /> 表示该活动是应用的主要入口点。
     - <category android:name="android.intent.category.LAUNCHER" /> 表示该活动在启动时显示在启动器上,即应用图标点击后启动的界面。

清单文件中声明应用的基本属性、权限、图标、入口活动等信息,是Android应用开发中必不可少的配置文件。

2、 activity_main.xml的解读:

XML 复制代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</RelativeLayout>

布局说明:使用`RelativeLayout`作为根布局,并包含一个`ListView`作为子元素。

1. `<?xml version="1.0" encoding="utf-8"?>`:XML文件的声明,指定了XML版本和编码。
2. `<RelativeLayout>`:根布局元素,用于指定子元素之间的相对位置关系。
   - `xmlns:android="http://schemas.android.com/apk/res/android"`:指定了Android的命名空间。
   - `xmlns:app="http://schemas.android.com/apk/res-auto"`:指定了自定义属性的命名空间。
   - `xmlns:tools="http://schemas.android.com/tools"`:指定了布局编辑器使用的命名空间。
   - `android:layout_width="match_parent"`:指定布局的宽度为与父布局相匹配。
   - `android:layout_height="match_parent"`:指定布局的高度为与父布局相匹配。
   - `tools:context=".MainActivity"`:用于在设计时为布局提供上下文信息。
3. `<ListView>`:`RelativeLayout`的子元素,表示一个列表视图组件。
   - `android:id="@+id/listView"`:指定该`ListView`的ID为"listView",用于在Java代码中查找该视图。
   - `android:layout_width="match_parent"`:指定`ListView`的宽度与父布局相匹配。
   - `android:layout_height="match_parent"`:指定`ListView`的高度与父布局相匹配。

布局文件用一个`RelativeLayout`作为根布局,其中嵌套了一个`ListView`作为列表视图组件,占据了整个父布局的空间。

3、colors.xml的解读:

XML 复制代码
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="black">#FF000000</color>
    <color name="white">#FFFFFFFF</color>
</resources>

XML资源文件,用于定义颜色资源。
1. `<?xml version="1.0" encoding="utf-8"?>`:XML文件的声明,指定了XML版本和编码。
2. `<resources>`:根元素,用于包含其他资源项。
3. `<color>`:定义颜色资源的元素。
   - `name="black"`:指定颜色资源的名称为"black"。
   - `#FF000000`:颜色值,表示黑色。颜色值的格式是`#AARRGGBB`,其中`AA`代表透明度,`RR`代表红色分量,`GG`代表绿色分量,`BB`代表蓝色分量。
4. `<color>`:定义另一个颜色资源。
   - `name="white"`:指定颜色资源的名称为"white"。
   - `#FFFFFFFF`:颜色值,表示白色。

这个XML资源文件定义了两个颜色资源,分别是黑色和白色,可以在项目的其他地方引用这些颜色资源而不需要重复定义颜色值。

4、strings.xml的解读:

XML 复制代码
<resources>
    <string name="app_name">Myview</string>
</resources>

XML资源文件,用于定义字符串资源。
1. `<resources>`:根元素,用于包含其他资源项。
2. `<string>`:定义字符串资源的元素。
   - `name="app_name"`:指定字符串资源的名称为"app_name",用于标识该字符串资源。
   - `Myview`:具体的字符串值,表示应用程序的名称为"Myview"。

这个XML资源文件定义了一个字符串资源,即应用程序的名称为"Myview"。可以在应用程序的其他部分引用这个字符串资源,而不需要硬编码字符串值。

5、themes.xml(night)的解读:

XML 复制代码
<resources xmlns:tools="http://schemas.android.com/tools">
    <style name="Base.Theme.Myview" parent="Theme.Material3.DayNight.NoActionBar">
    </style>
</resources>

用于定义Android应用程序的主题样式。
<resources>标签是根元素,定义了所有资源的容器。
xmlns:tools="http://schemas.android.com/tools"是一个命名空间声明,用于引入工具的命名空间。

定义一个名为Base.Theme.Myview的主题样式,该样式继承自Theme.Material3.DayNight.NoActionBar主题。表示Base.Theme.Myview主题将继承Theme.Material3.DayNight.NoActionBar主题的一些特性和属性,同时还可以自定义一些额外的样式设置。
该代码并没有定义任何具体的样式属性,只是声明了一个新的主题样式。在实际开发中,需要在此基础上添加相关的样式属性和设置以实现所需的界面效果。

6、 themes.xml的解读:

XML 复制代码
<resources xmlns:tools="http://schemas.android.com/tools">
    <style name="Base.Theme.Myview" parent="Theme.Material3.DayNight.NoActionBar">
    </style>
</resources>

1. `<resources xmlns:tools="http://schemas.android.com/tools">`:根元素,指定了命名空间`tools`,用于引用相关工具。
2. `<style>`:定义样式资源的元素。
   - `name="Base.Theme.Myview"`:定义了一个名为"Base.Theme.Myview"的样式资源,但没有具体的样式属性或内容。
   - `parent="Theme.Material3.DayNight.NoActionBar"`:指定该样式资源的父样式为"Theme.Material3.DayNight.NoActionBar",表示该样式继承自该父样式。
3. `<style name="Theme.Myview" parent="Base.Theme.Myview" />`:定义了另一个样式资源,名为"Theme.Myview",且继承自"Base.Theme.Myview",但没有额外的样式属性或内容。
4. `</style>`:样式资源的结束标签。

这个XML资源文件定义了两个主题样式,一个是基础应用程序主题样式"Base.Theme.Myview",
另一个是"Theme.Myview",后者继承自前者,但没有为它们设置具体的样式属性。
相关推荐
千里马学框架3 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台3 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone3 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
致远ccc3 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
ttyyttemo3 天前
Kotlin 协程中的 Job 结构化并发与取消
android
sun0077003 天前
tbox 4g/5g切换,导致wan ip 改变,导致车机旧网络不可用。需要重启车机才行
android
其实防守也摸鱼3 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
AFinalStone3 天前
Android7 SystemUI 源码解析(四)NavigationBar 导航栏与 SystemBars
android·systemui
JMchen3 天前
属性动画原理与高级动画实现
android·kotlin·canvas
AFinalStone3 天前
Android7 SystemUI 源码解析(二)启动流程深度解析
android·systemui