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

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。Android笔记(一): Android活动组件的创建和配置,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

一、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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/195550.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!