Android应用界面

概述:由于学校原因,估计会考,曹某人就浅学一下。

目录

View概念

创建和使用布局文件

相对布局

线性布局

水平线性布局

垂直线性布局

表格布局

帧布局

扁平化布局

Android控件详解

AdapterView及其子类

ListView

Adapter接口

SimpleAdapter


View概念

安卓中的View是所有UI控件的基类,它代表着屏幕上的一个矩形区域,用于展示数据和接收用户事件。

  1. UI控件的基础:在Android开发中,View是构建用户界面的基本元素。无论是文本框(TextView)、按钮(Button)还是图片展示(ImageView),它们都是View的子类。
  2. 继承关系:所有的UI组件都从android.view.View类继承,这使得它们具有了显示视图的能力。ViewGroup也是View的一个子类,它代表了一组View的集合。
  3. 位置和大小:View的位置和大小由其四个顶点的坐标决定,这些坐标对应于View的top、left、right、bottom四个属性。
  4. 自定义View:开发者可以通过自定义View来创建独特的UI组件,以满足特定的设计需求。这包括创建不同形状、颜色和交互方式的视图。
  5. 事件传递:View不仅负责展示数据,还负责处理用户的交互事件,如点击、滑动等。
  6. 布局管理:ViewGroup是一种特殊的View,它可以包含其他View或ViewGroup,并负责其子元素的布局管理。常见的ViewGroup包括线性布局(LinearLayout)、相对布局(RelativeLayout)等。
  7. 可视化控件:在Android系统中,任何可视化控件都需要从android.view.View类继承。这意味着所有的UI组件,无论是标准的还是自定义的,都是View的实例或子类。

很抽象,接下来搞具体的

创建和使用布局文件

创建一个layout xml 文件

点击finish即可

这里先了解布局的概念

布局有七种形式,相对布局、线性布局、表格布局、网格布局、帧布局、绝对布局、扁平化布局

这下面这张图展示了常用的布局

扁平化布局、线性布局水平、线性布局垂直、栈布局、表格布局(估计教材也是老的,kotlin对我而言相当简单)记住常用也是最好用的就是扁平化布局,别听那些乱的

各布局的标签

RelativeLayout
LinearLayout
TableLayout
GridLayout
FrameLayout
AbsoluteLayout
ConstraintLayout

我就讲一下常用的

相对布局

将上面第一种拖拽过去,创建那个文件的时候默认是线性布局,点击Code来到代码地方

手动修改代码即可,一般就改个标签,我就不贴代码了

点击design,回到示图,加几个按钮看效果,同理还是拖拽方式

会发现重合在一起了,查看代码,点击code即可

这种的还要手动去搞相对位置,一般不用这个布局,之所以讲是因为书上写了。我提一下

线性布局

水平线性布局

拖拽按钮呈现

垂直线性布局

第一步:先将布局修改,回到代码地方,进行标签修改

拖拽按钮呈现

表格布局

第一步:先将布局修改,回到代码地方,进行标签修改

第二步:拖拽tablerow

帧布局

第一步:先将布局修改,回到代码地方,进行标签修改

第二步:拖拽button

扁平化布局

第一步:先将布局修改,回到代码地方,进行标签修改

第二步:拖拽button

Android控件详解

Android控件是构成用户界面的基本元素,它们可以响应用户的交互并显示相应的内容。以下是一些常用的Android控件及其详解:

  1. TextView:用于显示文本信息。它是最常用的控件之一,可以显示静态文本或者动态更新的文本内容。TextView支持多种文本样式和属性设置,如字体大小、颜色、对齐方式等。
  2. Button:按钮控件,用于触发点击事件。用户可以点击按钮来执行某个操作,如提交表单、打开新页面等。
  3. EditText:编辑框控件,允许用户输入和编辑文本信息。它通常用于表单中,用于收集用户输入的数据。
  4. CheckBox:复选框控件,允许用户从多个选项中选择一项或多项。它适用于需要用户做出多个选择的情况。
  5. RadioButton:单选按钮控件,通常与RadioGroup一起使用,允许用户在一组选项中选择一个。
  6. ProgressBar:进度条控件,用于显示操作的进度。它可以用来指示加载、下载或其他需要等待的操作进度。
  7. ImageView:用于显示图片的控件。它可以显示网络图片或本地资源图片,并支持图片的缩放和裁剪。
  8. ListView:列表视图控件,用于显示一个列表项集合。它非常适用于展示长列表数据,并且可以滚动查看。
  9. RecyclerView:一个更灵活的列表视图控件,用于替代传统的ListView和GridView。它提供了更好的性能和更丰富的布局管理能力。
  10. Fragment:片段控件,代表应用中的一个部分或一块功能模块,可以在活动中动态添加和替换。
  11. Dialog:对话框控件,用于在屏幕上显示一个临时的窗口,通常用于提示用户进行决策或显示额外信息。
  12. Spinner:下拉列表控件,允许用户从一个列表中选择一个选项。
  13. SeekBar:滑动条控件,允许用户通过滑动来选择一个范围内的值。
  14. Switch:开关控件,用于表示开/关状态的切换。
  15. TabLayout:标签布局控件,通常与ViewPager一起使用,用于实现可滑动的页面和顶部的标签导航。
  16. ViewPager:页面视图控件,允许用户在左右滑动时切换不同的页面。
  17. Toolbar:工具栏控件,用于提供应用的导航和操作按钮。
  18. FloatingActionButton:浮动操作按钮,通常用于表示应用的主要或核心操作。
  19. CardView:卡片视图控件,用于创建具有圆角和阴影效果的卡片式布局。
  20. ConstraintLayout:约束布局控件,允许开发者通过创建视图之间的约束来构建复杂的布局。

AdapterView及其子类

AdapterView是Android中用于显示列表数据的抽象基类,其子类包括ListView、GridView和Spinner等

ListView

我举个例子

第一步:编写示图代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ListView
        android:id="@+id/listview1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:divider="#C4C4V4"
        android:entries="@array/teacher_name"
        android:dividerHeight="1dp">
        
    </ListView>
</LinearLayout>

第二步:在values下创建并编写arrays.xml文件

arrays.xml代码

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="teacher_name">
        <item>zhangsan</item>
        <item>wangwu</item>
        <item>lisi</item>
        <item>zhaoliu</item>
    </string-array>
    
</resources>

在改一下主类即可

运行结果:

AdapterView及其子类在Android开发中扮演着至关重要的角色,它们主要用于展示集合数据。以下是对这些组件的详细介绍:

  • AdapterView:作为一个抽象基类,它本身不可直接实例化。它继承自ViewGroup,本质上是一个容器,可以包含多个列表项。这些列表项是由一个称为Adapter的数据适配器提供,通过调用setAdapter()方法来设置。
  • ListView:是AdapterView的一个具体实现,以垂直滚动列表的形式展示数据。每个列表项通常是一个简单的布局,如TextView或ImageView。ListView通过使用Adapter来桥接数据源和视图,使得数据可以在屏幕上动态显示。
  • GridView:同样继承自AdapterView,但是它是以网格形式展示数据。与ListView不同的是,GridView将数据项按照二维网格排列,适合展示图片等需要网格布局的数据。
  • Spinner:也是AdapterView的一个子类,它提供了一个下拉列表,用户可以从中选择一个选项。Spinner通常用于实现单项选择的功能,例如选择国家、语言等。
  • 其他子类:除了上述三个常用的子类外,还有一些其他的子类,如AdsListView、AdsSpinner、AdapterViewAnimator等,但它们在实际开发中使用较少。

在实际应用中,开发者需要根据具体的应用场景选择合适的AdapterView子类来实现数据展示的功能。例如,如果想要展示一个图片库,可能会选择GridView;如果是显示一系列的文本或者混合内容,则可能会选择ListView。而Spinner则适用于需要用户从一组选项中做出选择的情况。

Adapter接口

基于ArrayAdapter创建ListView

第一步:屏蔽arrays.xml数据或者删除

第二步:在layout.xml进行修改

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ListView
        android:id="@+id/listview1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:dividerHeight="1dp">

    </ListView>
</LinearLayout>

第三步:在主类进行修改

package com.example.damn;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout);
        ListView listView=(ListView) findViewById(R.id.listview1);
        String[] arr={"章节1","章节2","章节3"};
        ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, androidx.appcompat.R.layout.support_simple_spinner_dropdown_item,arr);
        listView.setAdapter(adapter);
    }
}

运行结果展示:

SimpleAdapter

实现左边图片右边字的效果

在layout目录里面新建一个list_item_layout.xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TextView
            android:id="@+id/name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="16sp"/>

        <TextView
            android:id="@+id/dexc"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="16sp"/>
    </LinearLayout>

</LinearLayout>

activity_main.xml文件

<?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">
<ListView
    android:id="@+id/listview"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"/>
</LinearLayout>

修改主类代码

package com.example.damn;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MainActivity extends AppCompatActivity {
    private String[] name={"zhangsan","wangwu","zhaoliu"};
    private String[] desc={"唱歌","跳舞","打球"};
    private int[] icon=new int[]{R.mipmap.ic_launcher,R.mipmap.ic_launcher,R.mipmap.ic_launcher};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView listView=(ListView) findViewById(R.id.listview);
        List<Map<String,Object>> list=new ArrayList<>();
        for (int i=0;i<name.length;i++){
            Map<String,Object> listitem=new HashMap<>();
            listitem.put("icon",icon[i]);
            listitem.put("name",name[i]);
            listitem.put("desc",desc[i]);
            list.add(listitem);
        }
        SimpleAdapter adapter=new SimpleAdapter(this,list,R.layout.list_item_layout,new String[]{"name","icon","desc"},
                new int[]{R.id.name,R.id.icon,R.id.dexc});
        listView.setAdapter(adapter);
    }
}

运行效果

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nanshaws

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值