Android笔记(一): Android活动组件的创建和配置

本文详细介绍了Android中的Activity组件,包括其功能、创建与配置方法,以及传统XML布局和JetPackCompose工具包的应用。展示了如何使用XML和ViewBinding定制界面,以及在AndroidManifest中进行配置。
摘要由CSDN通过智能技术生成

一、Activity组件概述

Activity组件是Android的四大基本组件之一,它的主要功能就是定义界面。大多数应用包含多个屏幕,这意味着它们包含多个Activity。通常,应用中的一个 Activity 会被指定为主Activity,这是用户启动应用时出现的第一个屏幕。然后,每个 Activity 可以启动另一个Activity,以执行不同的操作。 Activity 充当了应用与用户互动的入口点。 Activity提供窗口供应用在其中绘制界面。 一个 Activity 实现应用中的一个屏幕。

二、创建和配置Activity

Activity主要的功能就是定制移动应用的界面。当前,Activity主要有两种方式来定义界面:(1)传统结合XML布局文件定义Activity的界面;(2)谷歌公司主推的Compose工具包定义活动的界面。

2.1 传统结合采用XML布局文件定义活动界面

新建一个Android项目,因为本开发工具采用“Android Studio Giraffe | 2022.3.1 Patch 1”,创建新的项目模块,默认的主活动MainActivity是ComponentActivity的子类,采用支持Compose的界面呈现方式。将原有的MainActivity.kt删除。
因此,创建一个传统结合XML布局文件的活动,可以右击鼠标,在弹出的三级菜单,依次选择New->Activity->Empty Views Activity,如图1所示。在这里插入图片描述
这时会生成一个对应继承AppCompatActivity类的子活动类,例如MainActivity,代码如下:

class MainActivity : AppCompatActivity() {     
	override fun onCreate(savedInstanceState: Bundle?) {         
		super.onCreate(savedInstanceState)          
		setContentView(R.layout.activity_main)         
 }
}

自定义MainActivity对应的布局文件,如下所示:

<?xml version="1.0" encoding="utf-8" <androidx.constraintlayout.widget.ConstraintLayout     
     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"     
     android:background="@color/design_default_color_secondary"     
     tools:context=".MainActivity">      
     <TextView         
          android:id="@+id/textView"         
          android:layout_width="wrap_content"         
          android:layout_height="wrap_content"         
          android:text="Hello World"         
          android:textSize="30sp"         
          app:layout_constraintBottom_toBottomOf="parent"           
          app:layout_constraintEnd_toEndOf="parent"         
          app:layout_constraintStart_toStartOf="parent"         
          app:layout_constraintTop_toTopOf="parent" />  
</androidx.constraintlayout.widget.ConstraintLayout> 

定义活动后需要在AndroidManifest.xml文件中配置活动。特别是值得注意地是样式的配置,这是因为
最新的Android Studio默认支持Android JetPack Compose组件,因此默认样式定义格式不匹配,修改配置文件如下

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android">      
<application         
……  <!-- 省略 -->      
android:theme="@style/Theme.AppCompat">          
<activity             
	android:name=".MainActivity"             
	android:exported="true"             
	android:label="@string/app_name"             
	android:theme="@style/Theme.AppCompat">             
	<intent-filter>                 
		<action android:name="android.intent.action.MAIN" />                 
		<category android:name="android.intent.category.LAUNCHER" />             
	</intent-filter>         
</activity>     
</application> 
</manifest>

注意:上述的主题均将默认的样式修改为:

android:theme = “@style/Theme.AppCompat”

表示与AppCompatActvity子类保持一致。
如果需要对绑定的XML文件进行处理,这时需要获取XML配置的GUI控件,具体的处理方式有两种:
默认的结合findViewById访问GUI控件和利用ViewBinding来访问GUI控件。
(1)默认的结合findViewById访问GUI控件

class MainActivity : AppCompatActivity() {     
	override fun onCreate(savedInstanceState: Bundle?) {         
	super.onCreate(savedInstanceState)          
      
	setContentView(R.layout.activity_main)         //必须先调用,否则检索控件失败
	val textView  = findViewById<TextView>(R.id.textView);        
 	textView.setText("Hello Android World")     }      
 }
 }

(2)利用viewBinding来访问GUI控件
这需要在项目模块的build.gradle中设置允许使用viewBinding,形如:

android {

buildFeatures{
viewBinding true
}
}

这时修改活动MainActivity,代码如下:

class MainActivity : AppCompatActivity() {     
	override fun onCreate(savedInstanceState: Bundle?) {         
		super.onCreate(savedInstanceState)                
		val binding = ActivityMainBinding.inflate(layoutInflater)         
		binding.textView.text = "Hello Android World"        
		setContentView(binding.root)     
 	} 
}

运行结果如图2所示:

在这里插入图片描述

2.2 采用JetPack Compose组件定义界面

(1)新建一个项目模块。
(2)修改模块的build.gradle,增加允许使用compose的许可,如下所示:

android{

buildFeatures{
compose true
}
}

定义主活动MainActivity,代码如下:

class MainActivity : ComponentActivity() {     
override fun onCreate(savedInstanceState: Bundle?) {         
	super.onCreate(savedInstanceState)         
	setContent {             
		Ch03DemoTheme {                 
			Surface(                     
			modifier = Modifier.fillMaxSize(),                     
			color = Color(0x03,0xDA,0xC6)                 
			) {                     
				Greeting("Android World")                
 					}            
 				}         
}     
} 
} 
@Composable fun Greeting(name: String, modifier: Modifier = Modifier) {     
		Text(         
			text = "Hello $name!",         
			fontSize = 30.sp,         
			textAlign = TextAlign.Center,         
			modifier = modifier     
			)
 }

还需要将MainActivity配置在AndroidManifest.xml中。

<application android:theme="@style/Theme.Ch03Demo">         
<activity             
	android:name=".MainActivity"            
	android:exported="true"             
	android:label="@string/app_name"             
	android:theme="@style/Theme.Ch03Demo">             
	<intent-filter>                 
		<action android:name="android.intent.action.MAIN" />                  
		<category android:name="android.intent.category.LAUNCHER" />             
	</intent-filter>         
</activity>     
</application>  
</manifest>

运行结果如图3所示。
在这里插入图片描述
参考:

”Jetpack Compose 教程“ https://developer.android.google.cn/jetpack/compose/tutorial?hl=zh-cn

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值