Android app开发布局以及简单控件总结

Android app开发布局

在安卓开发中,布局是构建用户界面的基石。各种布局类型各具特色,适用于不同的场景和需求。以下是安卓开发中常见布局的详细介绍:

  1. 线性布局(LinearLayout)

orientation属性值为horizontal时,内部视图在水平方向从左往右排列。

orientation属性值为vertical时,内部视图在垂直方向从上往下排列。

如果不指定orientation属性,则LinearLayout默认水平方向排列。

线性布局允许子视图以水平或垂直方向排列。线性布局好比是用一根线把它内部视图串起来,故而内部视图之间的排序是固定的,要么从左到右,要么从上到下排列。
在XML文件中,LinearLayout通过属性android:orienttation区分两种方向,其中从左到右排列叫做水平方向,属性值为horizontal;从上到下排列叫作垂直方向,属性值为vertical。
默认为水平方向排列。  除了方向之外,线性布局还有一个权重的概念。所谓权重,指的是线性布局的下级视图各自拥有的多大比例的宽和高。

它的特点是简单直观,适用于元素间呈线性关系的情况。例如,在一个水平的线性布局中,可以放置多个按钮,使它们依次排列。

适用场景:创建简单的界面,如登录界面的输入框和按钮的排列。

适合线性分布的场景,如几个按钮横向摆一排,也比较适合一个布局适配所有分辨率(weight属性)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Text 1" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Text 2" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button 1" />

</LinearLayout>

上面有一个垂直方向的线性布局,然后在这个线性布局中放置了两个文本视图(TextView)和一个按钮(Button)。这些视图元素会按照从上到下的顺序排列。如果想改变排列方向,可以将android:orientation属性的值改为"horizontal",这样视图元素就会按照从左到右的顺序排列。

  1. 约束布局(ConstraintLayout)

约束布局是安卓开发中的高级布局,它允许子视图通过相互之间的约束关系来确定位置。约束布局可以灵活地创建复杂的界面,并减少嵌套层级,提高性能。

适用场景:复杂界面的构建,如带有多个视图和动态布局的页面。

这个可以说是最强的布局了,创建布局默认的就是这个。

打开design模式,随便拖几个按钮进去,点击魔术棒建立约束。ok完成布局,代码也自动生成好了

<?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">


    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="246dp"
        android:layout_marginTop="107dp"
        android:text="按钮"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="172dp"
        android:layout_marginBottom="125dp"
        android:text="Button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent" />

    <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="115dp"
        android:text="Button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

接下来,打开一个虚拟机运行一下,如图:

  1. 表格布局(TableLayout)

表格布局将子视图组织成行和列的形式,类似于HTML中的表格。它适用展示结构化数据,如列表或网络。

适用场景:表格形态的场景,比如一行一行的很有规律。

<?xml version="1.0" encoding="utf-8"?>
<TableLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:collapseColumns=""
 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="第1个"
        />
    <TableRow>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="第一个"
            />
 
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="第二个"
            />
    </TableRow>
 
    <TableRow>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="第一个"
            />
    </TableRow>
 
</TableLayout>

可以看成类似excel的表格一样的布局,通常结合<TableRow>一起使用。 

  1. 帧布局(FrameLayout)

帧视图将所有子视图堆叠在一起,只有最顶层的视图可见。它通常用于覆盖和显示叠加效果。

适用场景:实现弹窗、卡片翻转等交互效果。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">
 
    <FrameLayout
        android:layout_width="400dp"
        android:layout_height="400dp"
        android:background="#ff0000"
        />
    <FrameLayout
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:background="#ffff00"
        android:foreground="@drawable/a"
        />
 
    <FrameLayout
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:background="#00ff00"/>
 
</FrameLayout>

  1. 相对布局(Relative Layout)

相对布局允许子视图根据其他视图的位置来定位自己。它可以根据父视图或其他子视图的边缘来进行对齐。

适用场景:创建复杂的布局,其中视图的位置相互依赖。

在实际项目中,根据具体需求选择合适的布局是非常重要的。同时,合理组合使用多种布局也是常见的做法,以实现更复杂的界面效果。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:padding="10dp"
    >
    <RelativeLayout
        android:id="@+id/rl1"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#ff0000"
        android:layout_centerInParent="true"
        />
    <RelativeLayout
        android:layout_margin="0dp"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#00ff00"
        android:layout_toLeftOf="@+id/rl1"
        />
 
</RelativeLayout>

UI界面交互功能的实现方法

针对安卓系统中的App开发技术进行分析,提出了App技术发展的技术基础,结合这一基础,介绍了安卓系统App四大组件,分别为Activity、Service、Broadcast Receiver和Content Provider,并阐述如何在Windows系统中进行App开发。

在安卓开发中,实现UI界面交互功能时通过监听器来完成的。以下是一些常见交互功能的实现方法及其案例:

1.按钮点击事件

通过为按钮设置点击监听器,可以响应用户的点击操作。例如,在一个登录按钮上设置监听器,当用户点击按钮时触发登录逻辑。

实现方法:使用setOnClickListener()方法为按钮设置监听器,并在监听器的回调方法中实现相应的逻辑。

反思与改进:在实际开发中,我不断查阅文档和社区资源,以学习更多关于事件处理和监听器的最佳实践。同时,我也参与团队讨论,与小组同学和老师交流经验,不断提高自己的技能水平。

2.列表项点击事件

在列表视图(如RecyclerView)中,可以通过为列表项设置点击监听器来实现点击事件的响应。例如,在商品列表中,当用户点击某个商品时,跳转到该商品的详情页面。

实现方法:在适配器的onBindViewHolder()方法中为列表项视图设置点击监听器,并在监听器的回调方法中实现跳转逻辑。

3.滑动操作

滑动操作可以通过设置触摸监听器来实现。例如,在图片查看器中,用户可以通过滑动手指来切换图片。

实现方法:为视图设置触摸监听器,并在监听器的回调方法中处理滑动事件。通过判断滑动的方向和距离,可以实现不同的功能。

4.菜单项和对话框

菜单项和对话框的创建与响应可以通过安卓提供的API来实现。例如,通过创建选项菜单并为其设置监听器,可以响应用户的选择。同样,通过创建对话框并设置其按钮的监听器,可以处理用户的输入和响应。

实现方法:

对于菜单项,可以重写Activity的

onCreateOptionsMenu()方法来创建菜单,并在onOptionsItemSelected()方法中处理菜单项的点击事件。对于对话框,可以使用AlertDialog,Builder类来构建对话框,并为对话框的按钮设置监听器。

反思与改进:

在实现UI界面交互功能的过程中,我深刻体会到不断学习和实践的重要性。安卓开发社区提供了丰富的资源和文档,通过阅读这些资料,我可以快速掌握新的交互实现方法。同时,参与实际项目并与其他开发者合作,让我有机会将理论知识应用于实践,并不断积累经验和提升技能。

为了持续改进,我计划定期回顾和总结自己在项目中的经验和教训,将好的做法和遇到的问题记录下来,以便在未来的开发中能够更快地找到解决方案。此外,我还将继续关注安卓开发社区的最新动态和最佳实践,不断更新自己的知识和技能。

博客文档规范与问题分析能力

在撰写博客文档时,我始终注重文档的规范性和标准性。我会使用美观的格式、清晰的段落结构以及正确的语法和拼写,以确保文档易于阅读和理解。同时,我也会注意使用图表、示例代码等辅助材料来增强文档的可读性和说服力。

在问题分析方面,我习惯先对问题进行全面的梳理和归纳,明确问题的本质和关键点。然后,我会根据已有的知识和经验,提出可能的解决方案,并逐一分析它们的优缺点。最后,我会选择最适合当前场景的方案,并给出具体的实现步骤和注意事项。

通过这种方法,我能够更透彻地分析问题,并提出有效的解决方案。同时,通过不断反思。

总结,我也能够不断提升自己的问题分析能力和解决问题的能力。

综上所述,我对安卓开发中各种布局的理解以及 UI界面交互功能的实现方法都有较为深入的了解和实践经验。我将继续努力学习和提升自己的技能水平,为未来的项目开发提供更加优质的支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值