版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Android高级界面设计第4章学习目标掌握Android高级UI布局的使用方法(★);掌握Android高级UI组件的使用场景与方法(★);了解MaterialDesign设计理念了解自定义View2023/12/132第4章Android高级界面设计内容大纲MaterialDesign设计理念Android的高级布局Android的高级控件自定义View2023/12/133第4章Android高级界面设计上次课回顾什么是MaterialDesignConstraintLayout的相对布局如何设置什么是CoordinatorLayout,如何与AppBarLayout组合什么是DrawerLayout2023/12/134第4章Android高级界面设计4.3高级UI组件内容大纲RecyclerViewCardViewFloatingActionButtonNavigationViewViewPagerToolbar2023/12/136第4章Android高级界面设计RecyclerViewRecyclerView是用于大量数据集合的可滚动的列表容器,是ListView的替代控件优点:高效且灵活,高度解耦可以使用和重用有限的视图元素可以快速更新变化的数据提供三种不同的布局管理LayoutManager提供各种动画及分割线ItemDecoration、ItemAnimator,实现转场效果缺点:需自定义列表分割线需自定义实现列表的点击事件2023/12/137第4章Android高级界面设计RecyclerView组件数据Data:无需关心数据来源可滚动的列表项集合
—RecyclerViewUI界面的布局管理—Recyclerview.LayoutManager
RecyclerView连接数据的适配器—RecyclerView.Adapter每个列表项布局—XMLfile显示列表项的每个控件的信息—RecyclerView.ViewHolder2023/12/13第4章Android高级界面设计8RecyclerView的布局管理每种ViewGroup都有一个布局管理器,用于定位每个列表项的位置,可以重用对于用户不可见的列表项内置的布局管理器,它们都继承自LayoutManangerLinearLayoutManangerGridLayoutManangerStaggeredGridLayout2023/12/13第4章Android高级界面设计9RecyclerView的布局LinearLayoutManagerGridLayoutManagerStaggeredGridLayoutManager2023/12/13第4章Android高级界面设计10RecyclerView.AdapterAdapter作为视图和数据之间的中介,管理在数据更改时创建、更新、添加和删除列表项ViewHolder为适配器准备每个列表项的视图和数据,它在XML资源文件中指定布局,实现点击功能2023/12/13第4章Android高级界面设计11RecyclerView.AdapterRecyclerView.Adapter需要重写以下三个方法onCreateViewHolder():此方法通过inflate()方法将列表项item布局编译为View对象,返回以这个对象为参数的ViewHolder对象。onBindViewHolder():此方法主要将数据渲染到列表项的ViewHolder的View控件中;getItemCount():此方法类似于ListView的BaseAdapter适配器的getCount()方法,即数据的总条目。2023/12/13第4章Android高级界面设计12item的点击事件RecyclerView.Adapter本身没有ListView的OnItemClick点击事件的监听器解决方案设置ViewHolder的itemView的OnClick事件监听,通过setTag()存储itemView对象信息Adpater类自定义内部事件接口,定义事件处理的回调方法,参数为被点击item的位置;Activity或Fragment类实现或创建该接口的对象,实现回调方法;当item被点击时调用该接口的回调方法,将位置信息传递给回调方法实现RecyclerView的onItemTouchListener接口,通过GestureDetectorCompat类进行手势的拦截和响应,然后GestureDetectorCompat交给实现了OnGestureListener接口的SimpleOnGestureListener实现,调用逻辑相对较为复杂2023/12/13第4章Android高级界面设计13RecyclerView.Adapter的数据更新notifyDataSetChanged():通知更新adapter的记录集notifyItemAdded(position):通知在position位置添加了记录notifyItemChanged(position):通知修改了postion位置的记录notifyItemRemoved(position):通知删除了position位置的记录notifyItemMoved(position):通知移动了position位置的记录notifyAll():通知记录集发生了更新2023/12/13第4章Android高级界面设计14item的滑动删除和拖曳ItemTouchHelper:处理拖曳和滑动删除的实现类ItemTouchHelperitemTouchHelper=newItemTouchHelper(newItemTouchHelper.Callback());itemTouchHelper.attachToRecyclerView(recyclerView);回调接口Callback的方法onMove():长按拖曳的回调getMovementFlags():设置拖曳、滑动方向onSwiped():滑动删除的回调2023/12/13第4章Android高级界面设计15实现RecyclerView实现步骤添加RecyclerView的依赖项布局添加RecyclerView给每个Item创建XML布局文件创建继承自RecyclerView.Adapter的适配器类创建继承自RecyclerView.ViewHolder的列表项类在Activity的onCreate()方法中使用适配器和布局管理器创建RecyclerView对象案例:D0404_RecyclerView2023/12/13第4章Android高级界面设计16实现下拉刷新依赖库:androidx.swiperefreshlayout:swiperefreshlayout:1.1.0使用SwiperefreshLayout作为RecyclerView的父布局设置它的OnRefreshListener监听器,加载数据以及刷新adapter2023/12/13第4章Android高级界面设计17RecyclerView的原理解析2023/12/13第4章Android高级界面设计18RecyclerView的四级缓存2023/12/13第4章Android高级界面设计19一级缓存:屏幕内缓存Scrap,返回布局及内容都有效的ViewHolder,无需onCreateViewHolder和onBindViewHolder。当列表滑动出屏幕时,ViewHolder会被缓存在mCachedViews,其大小由mViewCacheMax决定,默认为2,可通过RecyclerView的setItemViewCacheSize()动态设置二级缓存:直接返回View,继承ViewCacheExtension类实现自定义缓存三级缓存:返回布局有效、内容无效的ViewHolder,需要调用onBindViewHolder,ViewHolder首先缓存在mCachedViews中,当超过后就添加到RecyclerViewPool中界面刷新的缓存处理2023/12/13第4章Android高级界面设计20notifyItemChange(position)被更新的Item放入ChangeScrap,不需要onCreateViewHolder,需要调用onBindViewHoldernotifyDataSetChange()0~4放入RecyclerPool,不需要onCreateViewHolder,但全部需要onBindViewHolder更新position=1的数据滚动的缓存处理2023/12/13第4章Android高级界面设计21向上滑动的缓存处理2023/12/13第4章Android高级界面设计22CardViewCardView是Google官方发布的MaterialDesign风格的卡片布局控件CardView控件用于实现立体的卡片,提供圆角、阴影等特效CardView继承自FrameLayout类,可以理解为带圆角阴影和水波纹效果的FrameLayout布局常用属性:属性属性含义app:cardBackgroundColor设置背景颜色app:cardCornerRadius设置圆角半径app:cardElevation设置z轴的阴影深度app:cardMaxElevation设置z轴的最大高度值app:contentPadding设置内容与边距的间隔app:cardUseCompatPadding设置Android5.0及以上版本是否添加padding,默认值为falseAndroid5.0以下默认添加paddingapp:cardPreventConrerOverlap是否给content添加padding来阻止与圆角重叠,默认值为true案例:D0404_RecyclerView/item_fruit_card.xmlFloatingActionButton2023/12/13第4章Android高级界面设计23FloatingActionButton是一种浮动的圆形按钮,具有一些独特的动态效果,比如变形、弹出、位移等,代表着在当前页面上用户的特定操作,简称为FAB与普通按钮相比,FAB能为应用程序带来更加丰富炫丽的界面效果及用户体验FAB继承自ImageView,具备ImageView的所有属性属性含义取值app:backgroundTint边框背景颜色颜色值app:tint图标颜色,无法修改图片颜色颜色值app:rippleColor点击时的涟漪颜色颜色值app:borderWidthfab的边框大小通常设为0dpapp:elevation默认状态的Z轴的阴影大小默认值:6dpapp:pressedTranslationZ点击状态的Z轴的偏移量默认值:12dpapp:fabSizefab的大小auto、normal(56dp)、mini(40dp)app:srcfab的图标符合Design设计的图标大小为24dpapp:layout_anchor设置锚点
app:layout_anchorGravity设置相对锚点的位置bottom、center、top等FloatingActionButton常用方法voidshow():显示按钮voidhide():隐藏按钮booleanisShown():返回显示状态voidsetOnClickListener(OnClickListener):设置单击监听器最佳实践按照标准设定尺寸,不要轻易修改它的样式点击和按压的时候,加深焦点的颜色表示这是一个点击不要过度使用FAB,应用于当前页面最主要的操作,每个页面最好只有一个FABFAB的颜色比较抢眼,最好对其设定一些积极的操作,如:创建、分享等,避免轻微和破坏性的操作,如:删除等推荐只使用一个FAB,如果需要多个操作,可以点击后将它展开显示更多操作按钮案例:D0404_RecyclerView/item_fruit_card.xml2023/12/13第4章Android高级界面设计24NavigationView2023/12/13第4章Android高级界面设计25NavigationView是遵循MaterialDesign设计风格的菜单导航类,用来规范侧滑菜单的基本样式包括头部布局headerLayout和内容菜单menu两部分,配合DrawerLayout、Toolbar实现侧滑抽屉式菜单功能NavigationView的使用和普通的侧滑菜单基本相同,只需要在DrawLayout中添加即可案例:D0403_DrawerLayout2023/12/13第4章Android高级界面设计26NavigationViewNavigationView常用属性及方法属性名称含义描述app:insetForeground="@android:color/transparent"沉浸式展示app:headerLayout="@layout/nav_header"添加Header布局app:menu="@menu/nav_menu"添加标签Item的菜单android:layout_gravity="start"左侧拉出NavigationView方法名称含义描述addHeaderView(Viewview)将视图添加为导航菜单的标题removeHeaderView(Viewview)删除已添加的标题视图setItemBackgroundResource(intresId)设置菜单项的背景inflateMenu(intresId)在此导航视图中添加菜单资源setItemTextColor(ColorStateListtextColor)设置菜单项使用的文本颜色setItemIconTintList(ColorStateListtint)设置菜单项使用Icon的颜色setNavigationItemSelectedListener(NavigationViewlistener)设置菜单项选中的监听器ViewPager是Android的一个自带动画效果的视图滑动切换组件,可以通过手势滑动完成View的切换,主要用于App的引导页或图片轮播等。ViewPager的特性ViewPager类继承自ViewGroup类,它实际是一个容器,可以在其中添加其它View控件ViewPager类需要一个Adapter适配器绑定视图,主要使用PagerAdapter适配器类ViewPager经常与Fragment共同使用PagerAdapter适配器的主要方法getCount():获取ViewPager一共有多少页面isViewFromObject(View,Object):确定页面View是否与instantiateItem()方法返回的key对象相关联instantiateItem(ViewGroup,int):创建给定位置的页面,适配器将创建的View添加到给定的容器container中destroyItem(ViewGroup,int,Object):移除给定位置的页面2023/12/13第4章Android高级界面设计27ViewPager2023/12/13第4章Android高级界面设计28ViewPagerViewPager常用方法方法名称方法含义setAdapter(PagerAdapter)将ViewPager与适配器进行绑定addOnPageChangeListener(ViewPager.OnPageChangeListener)添加Pager滑动的监听器removeOnPageChangeListener(ViewPager.OnPageChangeListener)移除监听器clearOnPageChangeListener()清除监听器setCurrentItem(int,boolean)控制页面直接跳转到指定位置的界面getCurrentItem()获取当前页面的索引setPageTransformer(boolean,ViewPager.PageTransformer)设置滑动动画,如:翻转、渐近渐出setOffscreenPageLimit(int)设置当前页面左右两侧缓存的页面数量常用组合TabLayout+ViewPager+Fragment可以用来进行分页滑动展示ToolbarToolbar是在Android5.0推出的MaterialDesign风格的导航控件,它比ActionBar更具设计弹性,官方推荐使用Toolbar取代ActionBarToolbar与ActionBar不同之处在于,ActionBar独立于布局之外,会固定在界面顶部,但Toolbar直接在布局文件中定义,可以在界面布局结构中依照需求任意配置,可以跟着ScrollView滚动,可以与布局中的其他View交互,对滑动事件的响应等通过setSupportActionBar()或setActionBar()方法使用Toolbar来取代ActionBar可以定制导航栏图标、设置App的logo、设置标题与子标题,支持添加多个控件2023/12/13第4章Android高级界面设计29使用Toolbar使用Toolbar的基本步骤设置整个App的主题样式为NoActionBar在Activity的布局文件中添加Toolbar布局在Activity类的onCreate()方法中调用setSupportActionBar()显示Toolbar创建选项菜单,通过showAsAction属性设置菜单项的展示属性,还可以设置菜单项的操作视图对象actionViewClass或操作提供器对象actionProviderClass处理菜单项的点击事件案例:D0405_Toolbar2023/12/13第4章Android高级界面设计30
4.4自定义View312023/12/13第4章Android高级界面设计2023/12/13第4章Android高级界面设计32自定义ViewView类是UI的基类可以扩展View或View子类,自定义外观和与用户交互的行为自定义View有以下几种形式类型使用场景实现方式注意点继承特定View拓展已有View的功能在原有View的基础上增加功能不需要支持wrap_content和padding继承View实现某种效果的自定义控件通过重写onDraw()实现绘制需要编写支持wrap_content和padding的代码继承特定ViewGroup扩展某种布局的布局方式在原有ViewGroup的基础上增加与自定义ViewGroup相比,较简单,但自由度不高继承ViewGroup实现某种效果的自定义布局实现子View的measure、layout过程需要编写支持wrap_content、padding和Margin创建自定义View的步骤创建继承自View或View子类的自定义类重写View的方法继承View:重写onDraw()方法绘制View继承View子类:重写行为或外观方法在layout布局文件中使用自定义View案例:D0406_Cust
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度智能家居产品研发股权合资协议二转一3篇
- 2024年软件交易标准协议版
- 2024年版综合医疗服务协议版B版
- 2025版精装修开发商与业主房屋买卖及售后服务协议3篇
- 2024年中国电动道杆市场调查研究报告
- 2025年度房屋更名买卖合同创新科技护航3篇
- 2025版电梯设备采购与智能化控制系统合同3篇
- 2024年环保机械销售承包协议
- 2025年度物流企业安全生产责任制及风险控制合同3篇
- 2024年度大理石台面安装与施工验收服务合同3篇
- 《北京的春节》说课课件
- 全国各省市可填色地图
- 食品安全管理制度文本(12篇)
- 小学三年发展规划(2022-2025)
- (完整)社区工作者综合能力测试真题及答案
- 《海洋学》第七章 风海流-风驱动的海水流动
- 争做文明学生-创建文明班级
- MINICEX考核方式详解
- 水运工程重大事故隐患清单
- 仿写诗歌-乡愁
- 三年级《稻草人》阅读测试试题附答案
评论
0/150
提交评论