《第一行代码》第二版学习笔记(11)——最佳的UI体验

文章目录

  • 一、Toolbar
  • 二、滑动菜单
    • 1、DrawerLayout——抽屉
    • 2、NavigationView
  • 三、悬浮按钮和可交互提示
    • 1、FloatingActionButton——悬浮按钮
    • 2、Snackbar——提示工具
    • 3、CoordinatorLayout
  • 四、卡片式布局
    • 1、cardView
    • 2、AppBarLayout
  • 五、下拉刷新——SwipeRefreshLayout
  • 六、可折叠式标题栏_CollapsingToolbarLayout

一、Toolbar

引入依赖在这里插入图片描述

二、滑动菜单

1、DrawerLayout——抽屉

是一个布局,在布局中允许放入两个直接子控件,第一个子控件是主屏幕中显示的内容,第二个子控件是滑动菜单中显示的内容。

2、NavigationView

  <com.google.android.material.navigation.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:menu="@menu/nav_menu"
        app:headerLayout="@layout/nav_header" />

三、悬浮按钮和可交互提示

1、FloatingActionButton——悬浮按钮

<com.google.android.material.floatingactionbutton.FloatingActionButton
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_margin="16dp"
    android:id="@+id/fab"
    android:src="@drawable/ic_done"
    app:elevation="8dp"
    />

2、Snackbar——提示工具

在Toast的基础上加入可交互的按钮,当用户点击按钮的时候可以做一些额外的操作。

button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Snackbar.make(v,"Data deleted",Snackbar.LENGTH_SHORT)
                        .setAction("Undo", new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(MainActivity.this,"Data restored",Toast.LENGTH_SHORT).show();
                    }
                }).show();
                Toast.makeText(MainActivity.this,"FAB clicked",Toast.LENGTH_SHORT).show();
            }
        });

3、CoordinatorLayout

加强版的FrameLayout,能监听所有子控件的各种事件,然后自动帮助我们做出最为合理的响应。

四、卡片式布局

1、cardView

implementation 'com.github.bumptech.glide:glide:3.7.0

2、AppBarLayout

解决RecyclerView遮挡ToolBar:

  • 将ToolBar嵌套到AppBarLayout中
  • 给RecyclerView指定一个布局行为
 app:layout_behavior="@string/appbar_scrolling_view_behavior

五、下拉刷新——SwipeRefreshLayout

下拉刷新RecyclerView中的元素,将RecyclerView嵌套在SwipeRefreshLayout中,布局行为也放在SwipeRefreshLayout中
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0

 <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:id="@+id/swipe_refresh"
refreshLayout = findViewById(R.id.swipe_refresh);
        refreshLayout.setColorSchemeResources(com.google.android.material.R.color.design_default_color_on_primary);
        refreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                refreshFruits();
            }
        });

六、可折叠式标题栏_CollapsingToolbarLayout

CollapsingToolbarLayout不能独立存在,只能作为AppBarLayout的子布局使用,而AppBarLayout又必须是CoordinatorLayout的子布局。
实战布局:
水果详情的展示页面:水果标题栏+水果内容详情。标题栏将由普通的标题栏加上图片组合而成。

<androidx.coordinatorlayout.widget.CoordinatorLayout
	...
	 <com.google.android.material.appbar.AppBarLayout
	 	...
	 	 <com.google.android.material.appbar.CollapsingToolbarLayout
	 	 ...
	 	 </com.google.android.material.appbar.CollapsingToolbarLayout>
	  </com.google.android.material.appbar.AppBarLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

不管是NestedScrollView还是ScrollView,它们的内部都只允许存在一个直接子布局。

分割线——————————————————————————————————

欧酷天气也开发完成啦,《第一行代码》真的超级适合安卓新手入门,讲解非常通俗易懂,好像郭霖老师在我身边讲解,局部-整体的方式让读者一步一步的看到安卓的全貌,在学习的过程中穿插案例让我更好的理解运用该功能的使用。感谢郭霖老师,感谢各位帮助我解决的up。第一阶段到这里,接下来将更加深入的学习安卓,去理解封装背后的原理。wow小萌新一直在路上。冲鸭! wowwow!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

栈与递归的实现

1. 栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。 栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则&#x…

教你解决PUBG绝地求生登不进去 无法进入游戏 启动很慢的问题

尽管《绝地求生》&#xff08;PUBG&#xff09;以它那扣人心弦的战术竞技和逼真模拟的战场氛围风靡全球&#xff0c;揽获无数玩家的喜爱&#xff0c;但一些玩家在经历了一场血脉喷张的生存较量后&#xff0c;却不得不面对一个不那么愉悦的后续&#xff1a;游戏在结算阶段后出现…

docker学习笔记(五):harbor仓库搭建与简单应用

harbor私有仓库 简介 Docker容器应用的开发和运行离不开可靠的镜像管理&#xff0c;虽然Docker官方也提供了公共的镜像仓库&#xff0c;但是从安全和效率等方面考虑&#xff0c;部署私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管…

文献速递:深度学习医学影像心脏疾病检测与诊断--基于迁移学习的生成对抗网络用于静态和动态心脏PET的衰减校正

Title 题目 Transfer learning‑based attenuation correction for static and dynamic cardiac PET using a generative adversarial network 基于迁移学习的生成对抗网络用于静态和动态心脏PET的衰减校正 01 文献速递介绍 心脏正电子发射断层扫描&#xff08;PET&#xf…

JAVA入门1.1.0

前言&#xff1a; 不一样的编程——基于两个大前提&#xff0c;语言随便选一个&#xff0c;作者选java和c&#xff0c;在后续的内容会有c和java的共同使用 第一大前提&#xff1a;编程语言起源于语言 第二大前提&#xff1a;计算机理解不了语言的含义 这两大前提构成了不一样的…

Word设置代码块格式

前言 Word中无法像Markdown和LaTeX一样插入代码块&#xff0c;若要在Word中插入代码块可以手动设置代码块格式或自动粘贴代码块格式。若不追求完美高亮效果&#xff0c;可使用前者方案&#xff1b;若追求完美的高亮效果&#xff0c;可使用后者方案。下文介绍这2种方案。 手动…

渲染农场评测:6大热门云渲染平台全面比较

在3D行业中&#xff0c;选择一个合适的云渲染平台可能会令许多专业人士感到难以抉择。为此&#xff0c;我们精心准备了6家流行云渲染平台的详尽评测&#xff0c;旨在为您的决策过程提供实用的参考和支持。 目前&#xff0c;市面上主要的3D网络渲染平台包括六大服务商&#xff0…

SQL编程

用户变量的语法使用 #MySQL变量的定义与使用 #一、标识符命名规范 #1、字母加数字&#xff0c;但不允许使用数字开头 #2、不允许使用关键字或保留字 #3、符号只可以使用“_”或“$" #二、变量的声明 #set用于声明变量&#xff0c;update声明修改的表&#xff0c;set是声明…

OpenGL入门第三步:矩阵变换、坐标系统

1、矩阵变换 这里矩阵变换,使用4*4的矩阵,既可以表示位移,也可以表示缩放。 原因: 添加4维矩阵变量 initializeGL()函数:在着色器里面添加变换矩阵,改变坐标位置 设计一个随时间变换 ,所有重写TimerEvent 调用update触发paintGL()函数: 2、坐标系统

NSSCTF中的web学习(md5())

目录 MD5的学习 [BJDCTF 2020]easy_md5 [LitCTF 2023]Follow me and hack me [LitCTF 2023]Ping [SWPUCTF 2021 新生赛]easyupload3.0 [NSSCTF 2022 Spring Recruit]babyphp MD5的学习 md5()函数&#xff1a; md5($a)&#xff1a;返回a字符串的散列值 md5($a,TRUE)&…

C#中字典Dictionary与自定义类型CustomType之间的转换

C#中字典Dictionary与自定义类型CustomType之间的转换 思路&#xff1a; 可以使用反射System.Reflection来获取类的具体属性&#xff0c; 属性名称就映射字典的键Key。 新建控制台程序DictionaryCustomClassConversionDemo 第一步、新建关键转换类ConversionUtil。 类Con…

GB2312发码测试

编码表&#xff1a;https://www.toolhelper.cn/Encoding/GB2312 GB2312 编码表 GB 2312 标准由中国国家标准总局 1980 年发布&#xff0c;GB 即国标&#xff0c;共收录 6763 个汉字&#xff0c;其中一级汉字 3755 个&#xff0c;二级汉字 3008 个。 GB 2312 的出现&#xff0…

领导关怀 | 西湖区委常委韩斌等一行领导调研创邻科技

5月8日&#xff0c;西湖区委常委韩斌、紫金港科技城管委会党委委员、副主任陈杰、西湖区委办副主任韩鹰等一行领导走访创邻科技&#xff0c;关心企业发展近况。创邻科技COO吴菁、CTO周研陪同参观交流。 韩斌常委一行首先参观了企业荣誉展示区和办公区。参观过程中&#xff0c;…

3D Gaussian Splatting for Real-Time Radiance Field Rendering 论文阅读

如此热门的项目&#xff0c;网络上有很多大牛分析了这篇文章的做法&#xff0c;在这里简单记录一下个人粗浅的理解。 关于各种数学表达式的推导&#xff0c;论文和参考资料中都提供了较为详细的解读&#xff0c;本人能力有限&#xff0c;这一部分理解不够深刻&#xff0c;先不做…

Git 如何管理标签命令(tag)

1.查看本地仓库tag --1.查看本地仓库tag UserDESKTOP-2NRT2ST MINGW64 /e/GITROOT/STARiBOSS/STARiBOSS-5GCA (gw_frontend_master) $ git tag 1stBossUpgrade V10.0.1_20220224_test V10.0.1_20220301_test tag-gwfrontend-V1.0.12-230625 tag-gw_frontend-23.08.29 tag-gw_f…

【python基础】python经典题目100题

文章目录 前言初阶题目1.字符串2.列表3.元组4.字典5.运算6.random 模块7.open函数8.time模块时间9.其他 进阶题目 前言 本文主要是python经典题目100题&#xff0c;适合入门的新手。仅作自己学习的记录。 初阶题目 1.字符串 题目1&#xff1a;怎么找出序列中的最⼤最⼩值&am…

360极速浏览器X全新Chromium内核极致顺滑,绿色便携版 v22.3.1002.64

01 软件介绍 360极速浏览器X是一款基于Chromium 95的高级双核浏览器&#xff0c;支持IE内核&#xff0c;并优化了用户体验与性能。包括无广告弹窗&#xff0c;新增的阅读模式&#xff0c;个性化标签页壁纸&#xff0c;以及专业导航功能&#xff0c;旨在提供更快、更高效的浏览…

Ubuntu意外断电vmdk损坏--打不开磁盘“***.vmdk”或它所依赖的某个快照磁盘。

背景&#xff1a;电脑资源管理器崩溃卡死&#xff0c;强行断电重启&#xff0c;结果虚拟机打不开了&#xff0c;提示打不开磁盘“***.vmdk”或它所依赖的某个快照磁盘。 删除lck文件&#xff1a;失败vmware-vdiskmanager修复 &#xff1a;提示无法修复最终用 VMFS Recovery挂载…

找不到vcruntime140_1.dll怎么办,介绍5种简单有效的解决方法

当您的电脑系统提示找不到vcruntime140_1.dll文件时&#xff0c;这通常意味着系统在尝试运行某个应用程序或游戏时&#xff0c;无法定位到这个至关重要的动态链接库&#xff08;DLL&#xff09;文件。此情况可能源于几个不同的原因&#xff0c;包括但不限于&#xff1a;文件被误…

中信证券:量子产业蓄势待发,看好相关投资机会!

在1994年&#xff0c;数学家彼得肖尔&#xff08;Peter Shor&#xff09;首次提出了现在广为人知的肖尔算法&#xff0c;那时许多人认为量子计算机的概念遥不可及、纯属幻想。然而&#xff0c;到了2024年&#xff0c;全球正深入探讨量子科技在现实世界的应用&#xff0c;以及所…
最新文章