关于安卓开发的阶段性学习总结

关于安卓开发的阶段性学习总结

首先就是关于我对安卓开发中各种布局的理解

  • 线性布局

    在安卓开发中,线性布局(LinearLayout)是一种常见的布局方式,它可以将控件在线性方向上依次排列,通常有水平线性布局和垂直线性布局两种方式。通过android:orientation属性可以设置线性布局的方向,属性值有垂直(vertical)和水平(horizontal)两种。

线性布局的优点是简单直观,适合用于排列具有相同方向的控件。它可以通过设置layout_weight属性来控制各个控件在布局中的相对大小。此外,还可以通过android:gravity属性来控制控件内的内容位置,常用的是居中对齐显示。

在使用线性布局时,需要注意一些问题,例如当组件排列到头后不会换行,可能会导致部分组件无法显示。同时,还需要注意代码的拼写和语法错误,以避免出现布局显示异常的情况。

示例代码:

<?xml version="1.0" encoding="utf-8"?>

<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="这是第一个控件" />

    <Button

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="这是按钮" />

</LinearLayout>

    

  • 约束布局

   安卓中的约束布局(ConstraintLayout)是一种相对布局方式,它不提供绝对值的布局,而是通过设置控件之间的相对位置和约束关系来确定布局。它提供了丰富的属性和功能,例如对齐、权重、基线对齐、宽高比等,可以实现各种复杂的布局效果。

与其他布局方式相比,约束布局具有以下优点:

扁平的层次结构:约束布局可以减少布局的嵌套,提高应用的性能;

响应式设计:可以通过设置约束来实现响应式布局,使应用在不同的屏幕尺寸下都能保持良好的显示效果;

灵活的布局:可以通过设置约束来实现各种复杂的布局效果,例如瀑布流、网格布局等;

可视化编辑:可以通过可视化工具来编辑约束布局,提高开发效率。

在使用约束布局时,需要注意以下几点:

约束布局不支持绝对位置,所有的位置都是相对的;

约束布局中的约束关系是相互的,一个控件的位置不仅取决于它自己的约束,还取决于其他控件的约束;

约束布局中的约束关系可以通过可视化工具来编辑,也可以通过代码来设置。

示例代码:

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

    tools:context=".ConstraintActivity">

    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="hello world"

        // 下一行开始约束位置

        app:layout_constraintBottom_toBottomOf="parent"

        app:layout_constraintLeft_toLeftOf="parent"

        app:layout_constraintRight_toRightOf="parent"

        app:layout_constraintTop_toTopOf="parent"

        android:id="@+id/text1" />

</androidx.constraintlayout.widget.ConstraintLayout>

  • 表格布局

安卓中的表格布局(TableLayout)是一种以表格形式排列控件的布局管理器,它将控件组织成行和列的形式。以下是对安卓中表格布局的理解:

基本概念:

TableLayout 继承了 LinearLayout,因此它的本质仍然是线性布局管理器。

每次向 TableLayout 中添加一个TableRow,该TableRow 就是一个表格行,TableRow 也是容器,可以不断地添加其他组件,每添加一个子组件该表格就增加一列。

如果直接向 TableLayout 中添加组件,那么这个组件将直接占用一行。

在表格布局中,列的宽度由该列中最宽的那个单元格决定,整个表格布局的宽度则取决于父容器的宽度(默认总是占满父容器本身)。

常用属性:

stretchColumns:设置被拉伸的列的序号,从 0 开始。

collapseColumns:隐藏指定列的序号,多个列用逗号分隔。

特点:

适合有规则的布局,例如列表、表格等。

可以方便地实现多行多列的布局效果。

列数由控件最多的一行决定。

通过使用表格布局,可以使界面更加整洁、有序,并且易于管理和维护。在实际应用中,可以根据具体需求调整表格的行数、列数、单元格宽度等属性,以达到最佳的布局效果。

示例代码:

<TableLayout

    android:layout_width="match_parent"

    android:layout_height="wrap_content">

    <TableRow>

        <TextView

            android:text="1"

            android:textSize="20sp"

            android:padding="10dp" />

        <TextView

            android:text="2"

            android:textSize="20sp"

            android:padding="10dp" />

        <TextView

            android:text="3"

            android:textSize="20sp"

            android:padding="10dp" />

    </TableRow>

    <TableRow>

        <TextView

            android:text="4"

            android:textSize="20sp"

            android:padding="10dp" />

        <TextView

            android:text="5"

            android:textSize="20sp"

            android:padding="10dp" />

        <TextView

            android:text="6"

            android:textSize="20sp"

            android:padding="10dp" />

    </TableRow>

  • 帧布局

安卓开发中的帧布局(FrameLayout)是一种比较简单的布局方式,它为每个加入其中的控件创建一个空白区域(称为一帧,每个控件占据一帧)。采用帧布局方式设计界面时,只能在屏幕左上角显示一个控件,如果添加多个控件,这些控件会按照顺序在屏幕的左上角重叠显示。

帧布局的大小由控件中最大的子控件决定,如果控件的大小一样大的话,那么同一时刻就只能看到最上面的那个组件。虽然默认会将控件放置在左上角,但是可以通过layout_gravity属性,指定到其他的位置。

帧布局没有任何的定位方式,因此它的应用场景并不多,通常在一些需要重叠显示的场景下才会使用。例如,可以使用帧布局来实现类似唱片播放器的界面,将多个图像或按钮层叠显示。

示例代码:

<FrameLayout

    xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent">

    <TextView

        android:layout_width="100dp"

        android:layout_height="100dp"

        android:background="#ff0000"

        android:text="控件 1" />

    <TextView

        android:layout_width="80dp"

        android:layout_height="80dp"

        android:background="#00ff00"

        android:text="控件 2"

        android:layout_gravity="bottom|right" />

</FrameLayout>

  • 相对布局

安卓开发中的相对布局(RelativeLayout)是一种根据父容器和兄弟控件作为参照来确定控件位置的布局方式。

相对布局的特点包括:

灵活性高:能够最大程度保证在各种屏幕类型的手机上正确显示界面布局。

可自由拖拽:可以在设计视图里面自由拖拽,灵活性很强,适合比较简单的拖拽。

示例代码:

<RelativeLayout

    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"

    tools:context=".MainActivity">

    <TextView

        android:layout_width="100dp"

        android:layout_height="100dp"

        android:background="#ff0000"

        android:text="控件 1" />

    <TextView

        android:layout_width="80dp"

        android:layout_height="80dp"

        android:background="#00ff00"

        android:layout_toLeftOf="@id/textView"

        android:text="控件 2" />

</RelativeLayout>

接下来是对UI界面的总节

以下是对 UI 界面交互功能实现方法的总结:

按钮点击事件:

在代码中为按钮设置点击事件监听器,如 OnClickListener,在其中编写点击后的具体逻辑。

列表项点击事件:

为列表(如 ListView 或 RecyclerView)设置适配器,并在适配器中处理列表项的点击事件。

滑动操作:

可以使用各种滑动组件,如 ScrollView 等,根据其特性来实现界面的滑动效果。

菜单项:

在菜单资源文件中定义菜单项,在活动或片段中重写相关方法来处理菜单项的点击。

对话框:

可以使用 AlertDialog.Builder 来创建各种类型的对话框,如提示、确认等,设置按钮和相关事件处理。

总的来说,这些交互功能的实现通常涉及到对各种 UI 组件属性的设置、事件监听器的添加以及相关逻辑代码的编写,以实现用户与界面之间良好的交互体验。

示例代码:

按钮点击事件:

Button button = findViewById(R.id.button);

button.setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View v) {

        // 点击后的操作

        Toast.makeText(MainActivity.this, "按钮被点击了", Toast.LENGTH_SHORT).show();

    }

});

列表项点击事件:

recyclerView.addOnItemTouchListener(new RecyclerView.SimpleOnItemTouchListener() {

    @Override

    public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {

        return false;

    }

    @Override

    public void onTouchEvent(RecyclerView rv, MotionEvent e) {

    }

    @Override

    public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

    }

    @Override

    public boolean onSingleTapUp(MotionEvent e) {

        // 获取点击项的位置等信息进行处理

        return true;

    }

});

菜单项:

@Override

public boolean onCreateOptionsMenu(Menu menu) {

    MenuInflater inflater = getMenuInflater();

    inflater.inflate(R.menu.menu_main, menu);

    return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {

        case R.id.item1:

            // 菜单项 1 的操作

            break;

        case R.id.item2:

            // 菜单项 2 的操作

            break;

    }

    return super.onOptionsItemSelected(ite);

}

对话框(简单提示对话框):

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setTitle("提示");

builder.setMessage("这是一个提示信息");

builder.setPositiveButton("确定", null);

AlertDialog dialog = builder.create();

dialog.show();

在这阶段的学习中,我感觉到了一丝的力不从心,针对这种情况,我首先觉得应该努力培养对安卓开发学习的兴趣,毕竟兴趣是学习最大的老师,只有对安卓开发的学习产生了兴趣,这样才能在接下来的学习过程中感受到提高;然后,我觉得,安卓开发是一个团队的事,要秉承着众人拾薪火焰高的理念,多点增加团队讨论,向更优秀的人去取经去学习,只有这样才能提高的更快,也对我后续的学习生活有很大的帮助,只有多做项目才能让自己的安卓开发技能水平提高。

大数据与计算机学院  计算机科学与技术6班 朱威蓉 202302150760

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值