andrio复习

news2024/11/17 16:18:07

第2章 Android常见界面布局

View

View与ViewGroup

View:按钮(Button)、文本框(TextView)和图像视图(ImageView)等
ViewGroup:LinearLayout、RelativeLayout、FrameLayout等都是ViewGroup的具体实现,它们用作不同类型的布局容器。

界面布局的编写方式

RelativeLayout相对布局

使用xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout    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"
    tools:context=".MainActivity">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="使用XML布局文件控制UI界面"
        android:textColor="#ff0000"
        android:textSize="18sp"
        android:layout_centerInParent="true"/>
</RelativeLayout>

使用java

RelativeLayout relativeLayout = new RelativeLayout(this);
RelativeLayout.LayoutParams params =  new RelativeLayout.LayoutParams(
                                                                 RelativeLayout.LayoutParams.WRAP_CONTENT,
                                                                 RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.CENTER_IN_PARENT);  //设置布局中的控件居中显示
TextView textView = new TextView(this);                       //创建TextView控件
textView.setText("Java 代码实现界面布局");                     //设置TextView的文字内容
textView.setTextColor(Color.RED);                                  //设置TextView的文字颜色
textView.setTextSize(18);                                                //设置TextView的文字大小
relativeLayout.addView(textView, params);                  //添加TextView对象和TextView的布局属性
setContentView(relativeLayout);                                  //设置在Activity中显示RelativeLayout

常见界面布局

布局的通用属性

在这里插入图片描述
android:id

  1. 用于设置当前布局的唯一标识。
  2. 在XML文件中它的属性值是通过“@+id/属性名称”定义

android:layout_width

  1. 用于设置布局的宽度,其值可以是具体的尺寸,如50dp、30dp等,
  2. 系统定义的值有fill_parent、match_parent和wrap_content。

RelativeLayout相对布局

RelativeLayout通过相对定位的方式指定子控件的位置。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="20dp">

    <!-- 按钮1 -->
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按钮1"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="160dp"/>

    <!-- 按钮2 -->
    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按钮2"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/button1"
        android:layout_marginTop="60dp" />

    <!-- 按钮3 -->
    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按钮3"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true" />

</RelativeLayout>

在这里插入图片描述

控件的属性
在这里插入图片描述

LinearLayout 线性布局

指定布局内的子控件水平或垂直排列。
android:orientation属性的可选值为vertical和horizontal。
(1) vertical:从上到下垂直排列。
(2)horizontal:从左到右水平排列。
android:layout_weight属性。
(1)该属性被称为权重,通过设置该属性值,可使布局内的控件按照权重比显示大小。
(2)在进行屏幕适配时起到关键作用。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
<!--layout_width="0dp",不能wrap_content,否则layout_weight将失去作用-->
    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="按钮1" />

    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="按钮2" />
    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:text="按钮三" />
</LinearLayout>

在这里插入图片描述

TableLayout(表格布局)

采用行、列的形式来管理控件,添加TableRow布局或控件来控制表格的行数
ableLayout继承自LinearLayout,因此它完全支持LinearLayout所支持的属性
TableLayout继承自LinearLayout,因此它完全支持LinearLayout所支持的属性

表格布局属性
在这里插入图片描述
表格布局中控件的常用属性
在这里插入图片描述

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
       属性 = "属性值">
       <TableRow>
             UI控件
       </TableRow>
        UI控件
        ......
</TableLayout>

FrameLayout 帧布局

用于在屏幕上创建一块空白区域
在这里插入图片描述

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="20dp"
    android:foreground="@drawable/clound"
    android:foregroundGravity="clip_horizontal"
    >
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="@android:dimen/app_icon_size"
    android:text="按钮1"></Button>

</FrameLayout >

在这里插入图片描述

ConstraintLayout(约束布局)

适合使用可视化的方式编写界面布局
相对定位
在这里插入图片描述
在这里插入图片描述

第3章 Android常见界面控件

简单控件的使用

TextView

在这里插入图片描述
在这里插入图片描述

EditText

用于显示编辑框,它是TextView的子类,用户可在此控件中输入信息
在这里插入图片描述

Button

表示按钮,它继承自TextView控件,既可以显示文本,又可以显示图片,同时也允许用户通过点击来执行操作
Button控件设置点击事件的方式有三种

通过在布局文件中指定onClick属性的方式设置Button控件的点击事件
<Button
     ......
     android:onClick="click" />
通过使用匿名内部类的方式设置Button控件的点击事件
btn.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {
          //实现点击事件的代码
     }
});
(3)通过将Activity实现OnClickListener接口的方式设置Button控件的点击事件
public class Activity extends AppCompatActivity implements View.OnClickListener{
     @Override
     protected void onCreate(Bundle savedInstanceState) {
          ......
         btn.setOnClickListener(this);                            // 设置Button控件的点击监听事件
     }
     @Override
     public void onClick(View view) {
          // 实现点击事件的代码
     }
}

界面上Button控件较少:前两种方式;
界面上Button控件较多:第三种方式实现控件的点击事件。

ImageView

表示图片,它继承自View,可以加载各种图片资源。
在这里插入图片描述

RadioButton 单选按钮

表示单选按钮,它是Button的子类。每一个单选按钮都有“选中”和“未选中”两种状态,这两种状态是通过android:checked属性指定的

<RadioGroup
         android:属性名称 ="属性值"
         ......>
	<RadioButton
	       android:属性名称 ="属性值"
                         ...... />
         ......
<RadioGroup/>

CheckBox 复选框

复选框,它是Button的子类,用于实现多选功能。每一个复选框都有“选中”和“未选中”两种状态,这两种状态是通过android:checked属性指定的

Toast 提示信息

轻量级信息提醒机制,用于向用户提示即时消息,它显示在应用程序界面的最上层,显示一段时间后自动消失不会打断当前操作,也不获得焦点

Toast.makeText(Context,Text,Time).show();

关于makeText()方法中参数的相关介绍具体如下:

  • Context:表示应用程序环境的信息,即当前组件的上下文环境。
  • Text:表示提示的字符串信息。
  • Time:表示显示信息的时长,其属性值包括Toast.LENGTH_SHORT和Toast.LENGTH_LONG,分别表示显示较短时间和较长时间。
Toast.makeText(MainActivity.this, "WIFI已断开", Toast.LENGTH_SHORT).show();

列表控件的使用 ListView控件或RecyclerView

ListView

以列表的形式展示数据内容,并且能够根据列表的高度自适应屏幕显示。
在这里插入图片描述

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
        ......>
       <ListView
            android:id="@+id/lv_list"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:listSelector="#fefefefe"
            android:scrollbars="none">
       </ListView>
</RelativeLayout>
Adapter

数据适配器是数据与视图之间的桥梁,将复杂的数据转换成用户可以接受的方式进行呈现。

  • BaseAdapter:基本的适配器
  • SimpleAdapter:继承自BaseAdapter(Map)
  • ArrayAdapter:也是BaseAdapter的子类(数组)

1、BaseAdapter
BaseAdapter,顾名思义,是基本的适配器。它实际上是一个抽象类,通常在自定义适配器时会继承BaseAdapter,该类拥有四个抽象方法,根据这几个抽象方法对ListView控件进行数据适配。BaseAdapter中的4个抽象方法如下表所示。
在这里插入图片描述
2、SimpleAdapter

  public SimpleAdapter(Context context, List<? extends Map<String, ?>> data,int resource, 
  String[] from, int[] to);

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ListView listView = findViewById(R.id.listView);
        List<Map<String, String>> data = new ArrayList<>();

        HashMap<String, String> item1 = new HashMap<>();
        item1.put("city", "北京");
        item1.put("population", "2154万");
        data.add(item1);

        HashMap<String, String> item2 = new HashMap<>();
        item2.put("city", "上海");
        item2.put("population", "2424万");
        data.add(item2);

        String[] from = {"city", "population"};
        int[] to = {R.id.text1, R.id.text2};

        SimpleAdapter adapter = new SimpleAdapter(
                this,
                data,
                R.layout.custom_list_item,
                from,
                to);

        listView.setAdapter(adapter);
    }

在SimpleAdapter()构造方法中的五个参数的含义如下:

  • context:表示上下文对象。
  • data:数据集合,data中的每一项对应ListView控件中的条目数据。
  • resource:条目布局的资源id。
  • from:Map集合中的key值。
  • to:条目布局中对应的控件。

3、ArrayAdapter

   public ArrayAdapter(Context context,int resource,int textViewResourceId, List<T> objects);
   ArrayAdapter<String> adapter = new ArrayAdapter<>(
                this,
                android.R.layout.simple_list_item_1,
                cities);

RecyclerView

RecyclerView比ListView更加强大

自定义View

出现不满足需求的情况。此时我们可以通过自定义View的方式实现。

public class Customview extends View{
       public Customview(Context context) {
            super(context);
       }
       public Customview(Context context, AttributeSet attrs) {
            super(context, attrs);
       }
}

自定义View的3种方法

  • onMeasure():用于测量尺寸
  • onDraw() 绘制图像
  • onLayout(): 指定布局中子控件的位置

第4章 程序活动单元Activity

四种主要的应用组件,它们的中文名称分别是:
Activity - 活动
Service - 服务
ContentProvider - 内容提供者
BroadcastReceiver - 广播接收器

Activity是一个负责与用户交互的组件,每个Android应用中都会用Activity来显示界面以及处理界面上一些控件的事件

Activity生命周期的作用

启动状态、运行状态、暂停状态、停止状态和销毁状态
在这里插入图片描述
(1)onCreate():Activity创建时调用,通常做一些初始化设置。
(2)onStart():Activity即将可见时调用。
(3)onResume():Activity获取焦点时调用。
(4)onPause():当前Activity被其他Activity覆盖或屏幕锁屏时调用。
(5)onStop():Activity对用户不可见时调用。
(6)onRestart():Activity从停止状态到再次启动时调用。
(7)onDestroy():Activity销毁时调用。
在这里插入图片描述

Activity的创建、配置、启动和关闭的方式

创建activity

第一种:New”à“Activity”à“Empty Activity”选项,创建Activity
在这里插入图片描述

第二种:New”à“Java class”选项,创建一个SecondActivity类,然后将该类继承AppCompatActivity。
第二种方式创建的Activity需要手动在清单文件中配置创建的Activity。
AndroidManifest.xml文件的标签中配置SecondActivity

  <activity android:name=".SecondActivity" />

Activity的启动和关闭方式

启动

//希望从当前的 MainActivity 跳转到 SecondActivity
Intent intent = new Intent(MainActivity.this,SecondActivity.class);//Intent 是 Android 中用于各个组件之间进行交互的一个重要类
//启动 Activity
startActivity(intent); 

Intent和IntentFilter的用法

Activity之间的跳转与数据传递

任务栈和启动模式 Activity的任务栈和四种启动模

Fragment的使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1838852.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智慧校园综合解决方案:提供全方位的学校管理支持

在当今数字化时代&#xff0c;学校管理面临着越来越多的挑战&#xff0c;包括学生管理、教职员工管理、校园安全等。为了应对这些挑战&#xff0c;智慧校园综合解决方案应运而生。智慧校园综合解决方案融入了先进的信息技术&#xff0c;为学校带来了一场管理与教育模式的革新。…

欢迎 Stable Diffusion 3 加入 Diffusers

作为 Stability AI 的 Stable Diffusion 家族最新的模型&#xff0c;Stable Diffusion 3(SD3) 现已登陆 Hugging Face Hub&#xff0c;并且可用在 &#x1f9e8; Diffusers 中使用了。 Stable Diffusion 3https://stability.ai/news/stable-diffusion-3-research-paper 当前放出…

为什么Mid journey很容易就能做出很有氛围感的图而SD却容易做图很丑?

前言 6月12日&#xff0c;Midjourney更新了一项新的功能——模型个性化&#xff0c;这一项功能最重要的作用就是能够让生成的图像更加符合你自己的审美标准。就像每个艺术家都有自己的独特风格一样&#xff0c;有了这项模型个性化功能的加持&#xff0c;每个人都能生成具有鲜明…

Mcgs屏幕脚本程序

目录 1.脚本程序概述1.1 脚本程序简介1.2 脚本程序编辑环境 2.脚本程序语言要素2.1 变量和常量2.2 对象2.3 事件2.4 表达式2.5 联行符2.6 运算符2.7 系统函数 3. 基本语句3.1 赋值语句3.2 条件语句3.3 循环语句3.4 跳出语句3.5 退出语句3.6 注释语句3.7 声明语句3.6 命名规则 1…

uniapp运行到模拟器(联想模拟器)

记录一下uniapp项目运行到联想模拟器的流程 先配置一下模拟器端口 填写对应的adb路径&#xff0c;也就是模拟器安装路径下的adb.exe的路径 然后打开模拟器的设置&#xff0c;搜索版本找到版本号&#xff0c;多次点击打开开发者模式 进入开发者选项&#xff0c;打开USB调试 …

睿治数据治理平台焕新升级,推出全新建模与调度平台

在数据治理的浩瀚征途中&#xff0c;企业常常面临着数据冗余如同连绵山峦&#xff0c;使得关键信息的获取变得困难重重&#xff1b;在数据检索的海洋中&#xff0c;有时迷失方向&#xff0c;消耗大量时间精力&#xff0c;严重影响了运营效率&#xff1b;特别是在处理大规模数据…

开辟一个存储空间以存放一个结构体数据

在软件开发中&#xff0c;常常需要动态地分配和撤销内存空间&#xff0c;例如对动态链表中结点的插入与删除。在C语言中是利用库函数malloc和free来分配和撤销内存空间的。C提供了较简便而功能较强的运算符new和delete 来取代malloc和free函数。注意&#xff1a;new和delete是运…

一次完整的web渗透测试(文件上传getshell)

一、背景 日常空闲事件会进行一些公益SRC的挖掘&#xff0c;今天也是空闲&#xff0c;摸鱼有点浪费时间&#xff0c;那就拿几个公益SRC练练手&#xff08;有waf的我会直接跳过&#xff0c;毕竟没钱去挂代理&#xff09;。上号&#xff01; 二、测试过程 2.1、目录扫描 先给…

Webmin在EPICS IOC启动中的应用

本文使用webmin启动远程工控机中的EPICS IOC&#xff0c;受控设备使用PI公司的六轴台以及相应的控制器C-887&#xff1a; 1&#xff09;控制器C-887 2) 六轴台&#xff1a; 3&#xff09;在工控机上安装用于与C-887控制器进行通信的EPICS IOC程序&#xff0c;安装结束后&#…

哪个城市的Delphier最多?Delphier平均年龄多大了?

先来看看哪个城市的Delphier最多&#xff1a; 北上广深不是白叫的&#xff0c; 大家想换工作&#xff0c;就去这些大城市&#xff0c;机会多。 有人会觉得奇怪&#xff0c;怎么才这么几个人&#xff1f; 因为以上数据统计基数为2000人&#xff0c; 根据微信公众号和QQ群得出…

基于jeecgboot-vue3的Flowable流程-业务表单

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 这个部分主要讲自定义业务表单的流程关联 1、挂接关联流程对话框代码 <!--挂载关联流程--><a-modal cancel"flowOpen false" :title"flowTitle" v-model:…

Linux系统:线程互斥

Linux系统&#xff1a;线程互斥 线程互斥互斥锁 mutex互斥锁原理 常见的锁死锁自旋锁 spinlock其它锁 线程互斥 讲解线程互斥前&#xff0c;先看到一个抢票案例&#xff1a; class customer { public:int _ticket_num 0;pthread_t _tid;string _name; };int g_ticket 10000…

酒店宾馆民宿预订管理系统(ThinkPHP+uniapp+uView)

便捷高效&#xff0c;轻松管理你的住宿预订&#x1f3e8; 基于ThinkPHPuniappuView开发的多门店民宿酒店预订管理系统&#xff0c;快速部署属于自己民宿酒店的预订小程序&#xff0c;包含预订、退房、WIFI连接、吐槽、周边信息等功能。​​ 一、引言&#xff1a;为何需要民宿…

安卓手机数据快速找回!2个视频恢复大师,助你还原视频

我们的手机成为了储存信息的海洋。但与此同时&#xff0c;也带来了一个不容忽视的问题&#xff1a;一旦手机中的视频资料丢失&#xff0c;我们该如何高效地找回呢&#xff1f;现在很多程序都能够有效地找回手机视频&#xff0c;本文将为您揭示这些视频恢复大师的神奇能力&#…

家用洗地机哪个好?选对洗地机,还你一个清爽的家,快来抄作业!

能够带来高效生活的洗地机已经成为现代家庭清洁的首选。如果你还在犹豫的话&#xff0c;不妨看看这篇文章&#xff0c;让我来带你感受科技清扫的魅力&#xff0c;轻松扫净灰尘污渍&#xff0c;重拾家居整洁。洗地机&#xff0c;不只清洁&#xff0c;更是一种高品质生活态度的选…

【数据结构与算法】对称矩阵,三角矩阵 详解

给出对称矩阵、三角矩阵的节省内存的存贮结构并写出相应的输入、输出算法。 对称矩阵和三角矩阵可以通过特殊的存储结构来节省内存。这种存储结构只存储矩阵的一部分元素&#xff0c;而不是全部元素。 对称矩阵&#xff1a;对于一个n阶对称矩阵&#xff0c;我们只需要存储主对…

大学物理绪论组收集和分析

目录 ​编辑 随机误差的估计 算术平均值的标准偏差 不确定度&#xff08;Uncertainty&#xff09;是测量学中的一个重要概念&#xff0c;用于表示测量结果的可靠程度。它反映了测量值可能偏离真值&#xff08;即被测量的客观真实值&#xff09;的程度。 A类不确定度的计算方…

访问0xdddddddd内存地址引发软件崩溃的实战问题排查

目录 1、问题描述 2、访问空指针或者野指针 3、C程序中常见的异常内存值 4、0xdddddddd内存访问违例问题分析与排查 4.1、初步分析 4.2、CConfMeidaConfigDlg窗口类对象是何时被销毁的&#xff1f; 4.3、为啥会访问到已经释放内存的CConfMeidaConfigDlg类对象&#xff1…

centOS Stream9配置NAT8网络

首先将VMware关机&#xff0c;添加网络适配器 启动虚拟机&#xff0c;查看ens192是否打开连接 安装的图形化需要查看右上角电源处网卡是否连接 最小化安装一般不会出现未连接的状态 使用ip a 查看 配置网卡文件 cd /etc/NetworkManager/system-connections/cd到当前目录下…

四维世景产品及研发部副总经理张静普受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 四维世景科技&#xff08;北京&#xff09;有限公司产品及研发部副总经理张静普先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“项目管理中的数字化实践及应用”。大会将于6月29-30日在北京举办&#xff0c;敬请关注…