Android开发帮助技巧(适用于入门)二

news/2025/4/1 6:15:43/

Android配置配置清单,Gradle构建文件,外部化资源部分。

(一)配置清单AndroidManifest.xml

use-permission和uses-feature和application属于同等级节点。

android:allowBackup

是否允许应用参与备份和恢复基础架构。如果将此属性设为 false,则永远不会为该应用执行备份或恢复,即使是采用全系统备份方法也不例外(这种备份方法通常会通过 adb 保存所有应用数据)。此属性的默认值为 true。 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="cn.basicconstruction.example"><uses-permission android:name="android.permission.INTERNET"/><uses-feature android:name="android.hardware.nfc" android:required="false"/><applicationandroid:allowBackup="false"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.Example"><activity android:name=".MainActivity" android:launchMode="singleTask"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activity android:name=".Act2"></activity></application>
</manifest>

上面是一个AndroidManifest.xml文件,主要解释几个简单点。

allowBackup在程序编写阶段最好不要设置为true.设置为false是卸载app时,会删除掉App所使用的数据库,而对于数据库随着程序的更改时,会出现数据库异常。(数据库参数改变等)导致老旧数据库不匹配。事实上,除非为了公司编写app,这个选项设置为false是有好处的,可以在一定程度上节约手机空间。

activity节点。

应用的每个Activity都需要一个activity标签,并使用android:name属性来指示Activity的类名。如果尝试启动未包含在配置清单中的Activity,则会触发运行时异常。

启动模式

android:launchMode="singleTask"

这个属性指的是此Activity只会存在一个实例,在回退栈中只会有一个实例。

有关应如何启动 Activity 的指令。共有四种模式可与 Intent 对象中的 Activity 标记(FLAG_ACTIVITY_* 常量)协同工作,以确定在调用 Activity 处理 Intent 时应执行的操作。这些模式是:

standard
singleTop
singleTask
singleInstance

默认模式是“standard”。

用例启动模式多个实例?注释
大多数 Activity 的正常启动standard默认。系统始终会在目标任务中创建新的 Activity 实例,并向其传送 Intent。
singleTop视情况而定如果目标任务的顶部已存在 Activity 实例,则系统会通过调用该实例的 onNewIntent() 方法向其传送 Intent,而非创建新的 Activity 实例。
专用启动
(不建议在一般情况下使用)
singleTask系统会在新任务的根位置创建 Activity 并向其传送 Intent。不过,如果已存在 Activity 实例,则系统会调用该实例的 onNewIntent() 方法(而非创建新的 Activity 实例),向其传送 Intent。
singleInstance与“singleTask"”相同,只是系统不会将任何其他 Activity 启动到包含实例的任务中。该 Activity 始终是其任务中的唯一 Activity。

https://developer.android.com/guide/topics/manifest/activity-element

详情在上行链接

(二)Gradle 构建:暂无

(三)外部化资源

在所有情况下,资源文件名应该只包含小写字母,数字,句点(.)和下划线(_)符号。

1.简单值

支持的简单值包括字符串,颜色,尺寸,样式,布尔值或整数值,以及字符串数组或类型化数组。所有这些简单值都存储在res/values文件夹中的xml文件中。

在example.xml文件中可以包含不同类型的简单值,但是按照惯例,为了清醒且可读,每种类型的资源通常会存储在单独的文件中,例如res/values/strings.xml文件中就只包含字符串资源。

(1).字符串

res/values/strings.xml

<resources><string name="app_name">Example</string><string name="button">Button</string><string name="exam1">\"hello world\\</string><string name="exam2"><u>hello</u></string>
</resources>

如上图所示,字符串资源由strings标签指定。

如果需要使用,单引号,双引号和反斜杠,需要在前面加上一个反斜杠(\)表示转义。

Android支持简单的文本样式,因此可以使用HTML的<b>,<i>和<u>标签分别对文本字符串的某些部分应用粗体,斜体和下划线效果。

忽略:STring.format和定义复数形式,这些可以在代码中实现,而不必依赖于xml规则。

(2)颜色

colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources><color name="purple_200">#FFBB86FC</color><color name="purple_500">#FF6200EE</color><color name="purple_700">#FF3700B3</color><color name="teal_200">#FF03DAC5</color><color name="teal_700">#FF018786</color><color name="black">#FF000000</color><color name="white">#FFFFFFFF</color><color name="t1">#abc</color><color name="t2">#aabbcc</color><color name="t3">#8abc</color><color name="t4">#88aabbcc</color>
</resources>

可以使用color标签定义新的颜色资源,使用#符号后跟Alpha(可选)通道指定颜色值,然后使用一个或两个十六进制数字指定红色,绿色和蓝色值。

#rgb

#rrggbb

#argb

#aarrggbb

4,尺寸

尺寸通常在样式和布局资源中引用。它们对于定义布局值非常有用。

要指定尺寸资源,请使用dimen标签,指定尺寸值,后跟描述尺寸的单位。

dp(密度无关像素)

sp(可伸缩像素)

px(屏幕像素)

in(物理英寸)

pt(物理点)

mm(物理毫米)

尽管可以使用这些度量单位来定义尺寸,但最好还是使用dp和sp。这些选择允许使用相对比例来定义尺寸,这些比例考虑了不同的屏幕分辨率和密度,以简化在不同硬件上的缩放。

可伸缩像素在定义字体大小时特别合适,因为如果用户更改系统字体大小,他们会自动缩放。

<?xml version="1.0" encoding="utf-8"?>
<resources><dimen name="match_parent_widget_margin">16dp</dimen>
</resources>

(4)样式和主题(省略)

(5)使用资源

<1>在代码中使用资源

在应用中,可以使用静态R类访问代码中的资源。R是一个构建生成类,在构建项目时被创建。

R中的每个子类都将关联的资源公开为变量,变量名与资源标识符相匹配。

如R.id.xx   R.string.xx  R.mipmap.xx

忽略部分,以更快的向前出发。

<2>.在资源中引用资源

事实上,我们一般只会创建一个包,甚至我们也可以使得只使用一个包。

类似于

android:text="@strings/hello"

<3>.使用系统资源

<4>引用当前主题的颜色

<5>为不同的语言和硬件创建资源

可选()右击values,选择new resource file,在下面根据什么选择变体


http://www.ppmy.cn/news/310760.html

相关文章

【php + MySQL + Android】Android登陆界面设计(1)

前言 自己要做一个Android App&#xff0c;涉及到服务器端的用户数据管理&#xff0c;而网络上的的资源往往是只讲一个方面。所以自己每完成一段工作&#xff0c;会将开发过程记录下来&#xff0c;并供大家参考&#xff0c;相关文章放在专栏 【php MySQL Android】。 如果…

Jetpack Compose 初体验(上),retrofit原理面试

声明 Typography 对象&#xff0c;然后给 Text 添加 style 属性&#xff0c;来控制文字的样式。 Preview(showBackground true) Composable fun VerticalText() { val typography MaterialTheme.typography Column( modifier Modifier.padding(16.dp) ) { Image( painter …

scnu校赛去年题

求两个数的公约数有多少个 #include<iostream> #include<bits/stdc.h> using namespace std; int gcd(int a,int b){return b?gcd(b,a%b):a; } int main(){int T,a,b;cin>>T;while(T--){int ans1;cin>>a>>b;int ggcd(a,b);if(g1){cout<<…

STM32F10xx串口通信

一、通信方式相关 1.1 并行通信 1.2 串行通信 串行通信的通信方式&#xff1a; 常见的串行通信接口&#xff1a; STM32的串口通信接口 USART&#xff1a;通用异步收发器UART&#xff1a;通用同步异步收发器STM32F10x大容量系列芯片&#xff0c;包含3个USART&#xff08;支持异…

Android Compose Bloom 项目实战 (一) : 项目说明与配置

1. 项目介绍 Bloom是谷歌 AndroidDevChallenge (Android 开发挑战赛) 中的一期活动&#xff0c;目的是为了推广Compose&#xff0c;非常适合用来练手&#xff0c;通过这个项目&#xff0c;我们可以很好的入门Compose。本文介绍了如何从零开始&#xff0c;开发这个Compose项目。…

2020年第11届蓝桥杯国赛javaC组

6.2020国赛javaC组 https://blog.csdn.net/qq_43449564/article/details/109841937 https://blog.csdn.net/imreal_/article/details/114272929 https://www.dtmao.cc/news_show_375163.shtml C 扩散 import java.util.LinkedList; import java.util.Queue; //定义每一个点…

Jetpack Compose 初体验(上),flutter人脸识别系统

fun VerticalText() { Column( modifier Modifier.padding(16.dp) ) { Text(“Hello World!”) Text(“Hello Again World!”) Text(“How old are you, World!”) } } 现在&#xff0c;为了让界面看起来不那么单调&#xff0c;我们给这个界面加上下面这一张图片。 ![](Compo…

Jetpack Compose 初体验(上),hashmap为什么是线程不安全的

2.布局 我们编写的应用界面几乎任何时候都不会是简简单单的单一的控件&#xff0c;而是一定数量的独立控件在空间上的一种组合。 首先&#xff0c;我们就盲猜&#xff0c;如果我想竖直方向排列三个文字组件&#xff0c;肯定不是像下面这样随便组合三个 Text 控件。它怎么可能…