结合AI,快速上手安卓开发
作者:信息家 |
发布时间:2026/1/5 14:52:02
安卓开发总览
安卓开发主要包括两个部分:界面和逻辑,其实也就是xml+java(activity)
xml-标记是描绘界面;java-用来书写逻辑
Activity 是 Android 应用的基本组成单元,代表一个屏幕。
创建一个新的安卓页面需要三个步骤:
1,在layout目录下创建布局文件
2,activity
3,在清单文件中注册
安卓XML布局
xml必须以<?xml version="1.0" encoding="utf-8"?>开头 编码格式可以自定义 一般都是utf-8
cdata: 原样输出 不解析
常见布局:
1. LinearLayout(线性布局) 按水平(horizontal)或垂直(vertical)方向依次排列子控件,支持layout_weight按比例分配空间。 优点:结构简单,易于理解,适合一维排列。 缺点:嵌套过多会影响性能。 示例:
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView android:text="标题"/>
<Button android:text="按钮"/>
</LinearLayout>
2. RelativeLayout(相对布局) 通过相对父容器或其他控件的位置关系来布局,如layout_below、layout_centerInParent等。 优点:减少嵌套,灵活定位。 缺点:复杂依赖关系可能降低可维护性。
3. FrameLayout(帧布局) 所有子控件默认叠加在左上角,后添加的控件覆盖前面的控件。 优点:适合做层叠效果(如图片覆盖文字)。 缺点:不适合复杂排列。
4. TableLayout(表格布局) 按行列组织控件,列宽由该列最宽控件决定,可用stretchColumns、shrinkColumns调整列宽。 优点:适合表格数据展示。 缺点:灵活性较低。
5. ConstraintLayout(约束布局) 通过约束(Constraint)定义控件相对位置,支持链式布局(Chains)、比例(Bias)、权重(Weighted Chain)。 优点:减少嵌套,适配性强,适合复杂响应式布局。 缺点:XML编写相对复杂,推荐配合可视化编辑器。
选择建议:
- 简单线性排列 → LinearLayout
- 精确相对定位 → RelativeLayout
- 层叠效果 → FrameLayout
- 表格数据 → TableLayout
- 复杂自适应布局 → ConstraintLayout
实践1:LinearLayout内部左右两个元素 左侧固定 右侧占满
android:layout_weight="1"
android:layout_width="0dp"
实践2:圆角
<androidx.cardview.widget.CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:cardCornerRadius="40dp"
app:cardElevation="0dp">
<ImageView
android:id="@+id/image_view"
android:layout_width="40dp"
android:layout_height="40dp"
android:scaleType="centerCrop"
android:src="@drawable/img1" />
</androidx.cardview.widget.CardView>
实践3:Fragment
在实际开发中很多应用界面需要重复使用,那么这个时候就需要Fragment。Fragment拥有自己的生命周期,能接收自己的输入事件,并且可以在 Activity 运行时被添加或移除,需要一个java文件+xml布局文件。(前端的component)
创建Fragment
onCreateView: 建并返回 Fragment 的视图
onViewCreated: 当视图创建完成后调用,在这里进行初始化和查找View
// 以 Kotlin 为例,Java 语法类似
class MyExampleFragment : Fragment() {
// 关键方法:创建并返回 Fragment 的视图
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// 使用 LayoutInflater 将 XML 布局文件“膨胀”成 View 对象
return inflater.inflate(R.layout.fragment_my_example, container, false)
}
// 另一个重要方法:当视图创建完成后调用,在这里进行初始化和查找View
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// 例如,找到布局中的按钮并设置点击事件
val myButton: Button = view.findViewById(R.id.my_button)
myButton.setOnClickListener {
// 处理点击事件
Toast.makeText(activity, "Fragment Button Clicked!", Toast.LENGTH_SHORT).show()
}
}
}
将 Fragment 添加到 Activity 中
有两种方式:在 XML 布局中静态添加 和 在代码中动态添加。
方式一:静态添加(在 XML 中)
在 Activity 的布局文件中使用 <fragment> 标签。这种方式简单但不灵活,Fragment 一旦添加就无法在运行时移除。
<LinearLayout ...>
<fragment
android:name="com.example.myapp.MyExampleFragment" // 你的 Fragment 类的全路径名
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
方式二:动态添加(在代码中)
这是最常用、最强大的方式。它允许你在运行时添加、移除、替换 Fragment。
核心概念:
- FragmentManager:负责管理 Fragment(
supportFragmentManager)。 - FragmentTransaction:执行添加、移除、替换等操作。
Activity 的布局需要提供一个容器
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container" // 就是这个容器!
android:layout_width="match_parent"
android:layout_height="match_parent" />
Activity 中的代码
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 1. 获取 FragmentManager
val fragmentManager = supportFragmentManager
// 2. 开始一个事务 (FragmentTransaction)
val fragmentTransaction = fragmentManager.beginTransaction()
// 3. 创建一个 Fragment 实例
val myFragment = MyExampleFragment()
// 4. 执行操作:将 Fragment 添加到布局中的某个容器(通常是一个 FrameLayout)
// R.id.fragment_container 是 Activity 布局中的一个 ViewGroup,用来盛放 Fragment
fragmentTransaction.add(R.id.fragment_container, myFragment)
// (可选)添加到返回栈,这样用户按返回键可以回到上一个 Fragment 状态
fragmentTransaction.addToBackStack(null)
// 5. 提交事务
fragmentTransaction.commit()
}
}