移动应用-Android-开发指南

Android-UI开发指南

  • Android Studio调试
  • UI设计
    • UI框架
    • 布局Layout
    • 文本框
  • android的活动
    • Activity基本概念
    • Activity的生命周期
    • Activity栈
    • 创建Activity
    • 管理Activity
    • Activity间传递数据
  • Fragment
  • Adapter
  • RecyclerView
  • RecyclerView Adapter(适配器)
  • 事件
    • setOnItemLongClickListener()方法

Android Studio调试

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

UI设计

UI框架

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

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

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

布局Layout

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

1.线性布局 LinearLayout在这里插入图片描述

  • 排列方式(orientation) 有横竖两种方向的,水平和垂直
    在xml文件中:
android:orientation="vertical"   // 垂直排列
android:orientation="horizontal" // 水平排列

在java代码中:

linearLayout.setOrientation(LinearLayout.VERTICAL);  // 设置垂直排列
linearLayout.setOrientation(LinearLayout.HORIZONTAL);// 设置水平排列
  • 这里需要注意:
android:orientation="vertical",子View使用layout_gravity在垂直方向上的设定无效
android:orientation="horizontal",子View使用layout_gravity在水平方向上的设定无效
  • 摆放位置(gravity/layout_gravity)

gravity是针对当前 控件里面 内容 的摆放,
如果是容器,则针对的是容器里面子view的摆放;
如果是控件,则针对的是控件里面内容的摆放。

layout_gravity是指当前控件在 父控件里面 的摆放位置,
不过需要注意的一点是父控件设置的gravity的级别要低于子控件设置的layout_gravity。

  • 权重(layout_weight)
    layout_weight
    在LinearLayout布局之中,权重也是一个很重要的属性。简单来说就是按比例来分配控件占用父控件的大小。

若C-child表示子布局声明的大小,B-blank表示剩余布局的大小,P-percent表示子布局占据父布局剩余布局的比例,则子布局最终的实际大小R-reality为:

R = C + B * P

在这里插入图片描述

我们来按照公式来计算

 R = C + B * P = 0dp + (B-0dp-0dp) * (1/2) = (1/2)B

也就是父布局的1/2。

  • weightSum
    LinearLayout有一个权重数量的标记:weightSum。
    在LinearLayout中没有声明weightSum时,
    默认的就是各个控件权重的总和。

  • 0dp与wrap_content
    谷歌官方建议子布局的layout_width使用0dp,来分比例显示布局,
    和wrap_content大同小异,当使用layout_weight时,都表示占据剩余宽度或高度的比重。

但两者有明显区别。

使用0dp时,要考虑所分配的布局宽度是否小于控件实际宽度

  • B是剩余布局的大小 = 父布局大小 - 子控件大小之和

    B = C - (C + C) = -C;

    R = C + B * P = C + (-C) * (1/3) = 2/3C
    这里的C就是父布局的大小也就是match_parent。

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

三个属性都用来适应视图的 水平或 垂直大小,
一个以视图的 内容或尺寸 为基础的 布局比
精确地指定视图范围更加方便。

1)fill_parent

设置一个构件的布局为fill_parent将强制性地使构件扩展,
以填充布局单元内尽可能多的空间。
这跟Windows控件的dockstyle属性大体一致。
设置一个顶部布局或控件为fill_parent将强制性让它布满整个屏幕。

2) wrap_content

设置一个视图的尺寸为wrap_content将强制性地使视图扩展以显示全部内容。
以TextView和ImageView控件为例,
设置为wrap_content将完整显示其内部的文本和图像。
布局元素将根据内容更改大小。
设置一个视图的尺寸为wrap_content大体等同于设置Windows控件的Autosize属性为True。

3)match_parent
Android2.2中match_parent和fill_parent是一个意思 .
两个参数意思一样,match_parent更贴切,
于是从2.2开始两个词都可以用。
那么如果考虑低版本的使用情况你就需要用fill_parent了

文本框

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

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

android的活动

在这里插入图片描述

Activity基本概念

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

Activity的生命周期

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

Activity栈

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

创建Activity

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

管理Activity

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

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

Activity间传递数据

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

Fragment

Adapter

负责将数据绑定到View上

RecyclerView

RecyclerView是用于展示大量数据集合的高效控件

RecyclerView Adapter(适配器)

是Android开发中用于管理RecyclerView的重要组件之一。

主要完成以下几个任务:

创建ViewHolder:在RecyclerView中,每个子项都需要一个ViewHolder来显示数据。Adapter负责创建和管理ViewHolder对象,通常通过继承RecyclerView.Adapter类来实现自定义的Adapter,并重写其中的方法。

绑定数据到ViewHolder:Adapter中的onBindViewHolder()方法负责将数据与ViewHolder进行绑定。在该方法中,您可以获取当前位置的数据,并将其设置到ViewHolder的各个视图中。

定义Item视图类型:如果RecyclerView中存在多个不同的Item视图类型,Adapter可以通过重写getItemViewType()方法返回不同的视图类型,以便RecyclerView能够正确渲染不同类型的子项。

确定子项数量:Adapter需要实现getItemCount()方法来指定RecyclerView中子项的数量。

响应用户交互:通过Adapter可以为RecyclerView的子项添加点击事件、长按事件等交互操作。

总之,RecyclerView Adapter充当了RecyclerView与数据之间的桥梁,负责将数据展示到RecyclerView中,并处理与用户交互相关的操作。

事件

setOnItemLongClickListener()方法

 LinearLayout mainLayout = new LinearLayout(this);mainLayout.setOrientation(LinearLayout.VERTICAL);mainLayout.setBackgroundColor(0xFFF6F8FB);FrameLayout frameLayout = new FrameLayout(this);frameLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,0,1));mainLayout.addView(frameLayout);LinearLayout tabLayout = new LinearLayout(this);tabLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,dip2px(88)));tabLayout.setOrientation(LinearLayout.HORIZONTAL);tabLayout.setPadding(dip2px(15), 0, dip2px(15), dip2px(15));tabLayout.setBackgroundResource(R.drawable.sp_main_tab_n);mainLayout.addView(tabLayout);// 添加第一个TabFrameLayout tab1FrameLayout = new FrameLayout(this);tab1FrameLayout.setLayoutParams(new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT,1));tabLayout.addView(tab1FrameLayout);LinearLayout tab1Layout = new LinearLayout(this);tab1Layout.setId(R.id.tabLin5);tab1Layout.setLayoutParams(new LinearLayout.LayoutParams(dip2px(64),dip2px(56)));tab1Layout.setOrientation(LinearLayout.VERTICAL);tab1Layout.setGravity(Gravity.CENTER);tab1Layout.setBackgroundResource(R.drawable.sp_main_tab);tab1FrameLayout.addView(tab1Layout);ImageView tab1ImageView = new ImageView(this);tab1ImageView.setId(R.id.iv5);tab1ImageView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT));tab1ImageView.setImageResource(R.drawable.sp_home_tab5);tab1Layout.addView(tab1ImageView);TextView tab1TextView = new TextView(this);tab1TextView.setId(R.id.tv_tab5);tab1TextView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT));tab1TextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);tab1TextView.setGravity(Gravity.CENTER);tab1TextView.setTextColor(ContextCompat.getColor(this, R.color.s_main_tab_text));tab1TextView.setText(R.string.Contacts);tab1Layout.addView(tab1TextView);// 设置TabLayout置底显示LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) tabLayout.getLayoutParams();params.gravity = Gravity.BOTTOM;tabLayout.setLayoutParams(params);// 添加其他Tab的代码类似,省略setContentView(mainLayout);private int dip2px(float dpValue) {final float scale = getResources().getDisplayMetrics().density;return (int) (dpValue * scale + 0.5f);}

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

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

相关文章

Can 通信-协议

概述 CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO国际标准化的串行通信协议。 在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统 被开发了出来。由于…

uniapp快速入门系列(3)- CSS技巧与布局

章节三:CSS技巧与布局 1. uniapp中的样式编写2. 常见布局技巧与实例解析2.1 水平居中布局2.2 垂直居中布局2.3 等高布局2.4 响应式布局 3. CSS动画与过渡效果 在uniapp中,我们使用CSS来设置页面的样式和布局。本章将介绍一些在uniapp中常用的CSS技巧和布…

IDEA的使用(一)代码模块的导入、快捷使用、自定义 (IntelliJ IDEA 2022.1.3版本)

目录 1. IDEA项目结构 2. 模块的导入操作 2.1 正规操作 2.2 取巧操作 2.3 出现乱码 2.4 模块改名 3. 代码模板的使用 后缀补全(Postfix Completion)、实时模板(Live Templates)菜单里面什么介绍都有,可以自学&a…

4.02 用户中心-上传头像功能开发

详细内容请看下面地址: 地址:http://www.gxcode.top/code

林沛满-TCP 是如何避免被发送方分片的?

TCP 可以避免被发送方分片,是因为它主动把数据分成小段再交给网络层。最大的分段大小称为 MSS(Maximum Segment Size),它相当于把 MTU 刨去 IP头和 TCP 头之后的大小,所以一个 MSS 恰好能装进一个 MTU 中。 图4 图 4 …

唐老师讲电赛

dc-dc电源布局要点

存档&改造【04】二维码操作入口设置细节自动刷新设置后的交互式网格内容的隐藏

因为数据库中没有数据无法查看设置效果,于是自己创建了个测试数据表,用来给demo测试 -- 二维码操作入口设置 create table JM_QR_CODE(QR_CODE_ID NUMBER generated as identity primary key,SYSTEM_ID NUMBER(20) not null,IS_ENAB…

iceberg简介004_iceberg和其他数据湖框架的对比---​​数据湖Apache Iceberg工作笔记0004

然后来看一下iceberg和其他数据湖框架的对比这里可以看到hudi支持的多一点对吧,但是 iceberg有自己的优势,并且他们都支持timeline 也就是时间旅行对吧. 然后这个图是显示了,数据湖三剑客的开源时间,以及火热程度,可以对比一下看看.

R语言R包详解——stringr包:字符处理

R语言 R语言R包详解——stringr包:字符处理 一切用法皆以说明书为准,想要了解该包,请多查阅说明书或者查看底层算法。 文章目录 R语言一、安装与加载R包二、函数简介三、函数详解3.1、str_c: 字符串拼接3.2、str_trim: 去掉字符串的空格和TA…

win1011安装MG-SOFT+MIB+Browser+v10b

文章目录 安装MG-SOFTSNMP服务配置安装MG-SOFT启动MIB-Browser以及错误解决MIB Browser使用 安装MG-SOFT win10和win11安装基本一样,所以参照下面的操作即可! SNMP服务配置 打开设置,应用和功能,可选功能,选择添加功…

java项目中git的.ignore文件设置

在Git中,ignore是用来指定Git应该忽略的故意不被追踪的文件。它并不影响已经被Git追踪的文件。我们可以通过.ignore文件在Git中指定要忽略的文件。 当我们执行git add命令时,Git会检查.gitignore文件,并自动忽略这些文件和目录。这样可以避免…

归纳所猜半结论推出完整结论:CF1592F1

https://www.luogu.com.cn/problem/CF1592F1 场上猜了个结论,感觉只会操作1。然后被样例1hack了。然后就猜如果 ( n , m ) (n,m) (n,m) 为1则翻转4操作,被#14hack了。然后就猜4操作只会进行一次,然后就不知道怎么做下去了。 上面猜的结论都…

计算机网络 面试题

PART1 1.TCP和UDP的区别是什么? 2.TCP报文首部格式是什么? 3.TCP三次握手的过程 4.为什么TCP要三次握手? 5.TCP三次握手的数据报可以携带数据吗? 6.半连接队列是什么? 7.SYN 洪泛攻击是什么? 8.TCP…

Http请求响应 Ajax 过滤器

10/10/2023 近期总结: 最近学的后端部署,web服务器运行,各种请求响应,内容很多,学的很乱,还是需要好好整理,前面JavaSE内容还没有完全掌握,再加上一边刷题,感觉压力很大哈…

Postman接口测试学习之常用断言

什么是断言? 断言——就是结果中的特定属性或值与预期做对比,如果一致,则用例通过,如果不一致,断言失败,用例失败。断言,是一个完整测试用例所不可或缺的一部分,没有断言的测试用例…

MAX30102心率血氧传感器

MAX30102心率血氧传感器介绍 背景基本功能基本结构基本原理采集方法直通式采集方法反射式采集方法 血氧采集原理Beer-Lambert 定理皮肤组织模型血氧测量过程AC / DC 的计算 心率采集原理 实验结果代码走读资源链接 背景 目前,基本上所有的可穿戴式设备都集成了心率…

【Java 进阶篇】CSS盒子模型详解

CSS盒子模型是网页布局的基础之一,它定义了HTML元素在页面上的占用空间和相互关系。理解CSS盒子模型对于构建各种类型的网页布局至关重要。在本文中,我们将深入探讨CSS盒子模型的各个方面,包括盒子模型的概念、属性和如何使用它们来控制元素的…

[idekCTF 2022]Paywall - LFI+伪协议+filter_chain

[idekCTF 2022]Paywall 一、解题流程(一)、分析(二)、解题 二、思考总结 一、解题流程 (一)、分析 点击source可以看到源码,其中关键部分:if (isset($_GET[p])) {$article_content…

JVM 参数

JVM 参数类型大致分为以下几类: 标准参数(-):保证在所有的 JVM 实现都支持的参数非标准参数(-X):通用的,特定于 HotSpot 虚拟机的参数,这些参数不保证在所有 JVM 实现中…