当前位置: 首页 > news >正文

哪个网站的域名到期直接注册做一个企业的网站怎么做

哪个网站的域名到期直接注册,做一个企业的网站怎么做,wordpress记账,手机软件网站在 Android 开发中#xff0c;RecyclerView 是一种高效的列表和网格布局控件#xff0c;用于显示大规模数据。尽管基本使用方法简单#xff0c;但深入理解并掌握其高级进阶用法能大幅提升用户体验和应用性能。下面#xff0c;我将从布局管理、动画和手势、自定义缓存、优化…在 Android 开发中RecyclerView 是一种高效的列表和网格布局控件用于显示大规模数据。尽管基本使用方法简单但深入理解并掌握其高级进阶用法能大幅提升用户体验和应用性能。下面我将从布局管理、动画和手势、自定义缓存、优化性能等方面系统介绍 RecyclerView 的高级用法。 目录 自定义布局管理器ItemDecoration 装饰高级动画控制自定义缓存和 RecycledViewPool数据差异计算 DiffUtil嵌套 RecyclerView 和 ConcatAdapter手势交互拖拽与滑动性能优化技巧 1. 自定义布局管理器 LayoutManager 控制 RecyclerView 中每个子项的布局方式。除了 LinearLayoutManager 和 GridLayoutManager 等系统提供的布局管理器我们可以自定义 LayoutManager 以实现特殊的布局效果。 示例创建一个圆形布局管理器 class CircleLayoutManager : RecyclerView.LayoutManager() {private val radius 300 // 半径private val angleStep Math.toRadians(360.0 / itemCount)override fun generateDefaultLayoutParams(): RecyclerView.LayoutParams {return RecyclerView.LayoutParams(RecyclerView.LayoutParams.WRAP_CONTENT,RecyclerView.LayoutParams.WRAP_CONTENT)}override fun onLayoutChildren(recycler: RecyclerView.Recycler, state: RecyclerView.State) {detachAndScrapAttachedViews(recycler)val centerX width / 2val centerY height / 2for (i in 0 until itemCount) {val view recycler.getViewForPosition(i)addView(view)measureChildWithMargins(view, 0, 0)val width getDecoratedMeasuredWidth(view)val height getDecoratedMeasuredHeight(view)val angle i * angleStepval x (centerX radius * Math.cos(angle) - width / 2).toInt()val y (centerY radius * Math.sin(angle) - height / 2).toInt()layoutDecorated(view, x, y, x width, y height)}} }2. ItemDecoration 装饰 ItemDecoration 用于绘制 RecyclerView 子项的分割线、边框、背景等效果可以实现比简单的 DividerItemDecoration 更灵活的效果。 示例实现一个带间距的圆角背景装饰 class RoundedCornerDecoration(private val padding: Int, private val radius: Float) : RecyclerView.ItemDecoration() {private val paint Paint().apply {color Color.LTGRAYisAntiAlias true}override fun onDraw(canvas: Canvas, parent: RecyclerView, state: RecyclerView.State) {for (i in 0 until parent.childCount) {val child parent.getChildAt(i)val rect RectF(child.left.toFloat() padding,child.top.toFloat() padding,child.right.toFloat() - padding,child.bottom.toFloat() - padding)canvas.drawRoundRect(rect, radius, radius, paint)}} }3. 高级动画控制 RecyclerView 提供了 ItemAnimator 来管理添加、移除和移动等动画效果。我们可以自定义 ItemAnimator甚至为不同类型的操作设置不同的动画效果。 示例创建淡入淡出的动画 class FadeInAnimator : DefaultItemAnimator() {override fun animateAdd(holder: RecyclerView.ViewHolder): Boolean {holder.itemView.alpha 0fholder.itemView.animate().alpha(1f).setDuration(500).start()return true}override fun animateRemove(holder: RecyclerView.ViewHolder): Boolean {holder.itemView.animate().alpha(0f).setDuration(500).start()return true} }4. 自定义缓存和 RecycledViewPool RecyclerView 提供 RecycledViewPool 来缓存多种类型的视图。设置 RecycledViewPool 可以提升多个 RecyclerView 共享视图缓存的效果适用于嵌套和切换页面的场景。 示例设置共享 RecycledViewPool val sharedPool RecyclerView.RecycledViewPool() recyclerView1.setRecycledViewPool(sharedPool) recyclerView2.setRecycledViewPool(sharedPool)5. 数据差异计算 DiffUtil DiffUtil 是高效的数据差异计算工具用于对比旧数据和新数据并生成操作指令。这对于动态数据列表是非常重要的可以提升性能并减少不必要的刷新。 示例使用 DiffUtil 优化数据更新 class MyDiffUtilCallback(private val oldList: List,private val newList: List ) : DiffUtil.Callback() {override fun getOldListSize() oldList.sizeoverride fun getNewListSize() newList.sizeoverride fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {return oldList[oldItemPosition].id newList[newItemPosition].id}override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {return oldList[oldItemPosition] newList[newItemPosition]} }// 使用 DiffUtil 进行数据更新 val diffResult DiffUtil.calculateDiff(MyDiffUtilCallback(oldList, newList)) diffResult.dispatchUpdatesTo(adapter)6. 嵌套 RecyclerView 和 ConcatAdapter 对于多种类型布局需求可以使用嵌套的 RecyclerView 或 ConcatAdapter 来管理不同的 Adapter避免复杂的 RecyclerView.Adapter 实现。 示例使用 ConcatAdapter 管理多个 Adapter val adapter1 Adapter1() val adapter2 Adapter2() val concatAdapter ConcatAdapter(adapter1, adapter2) recyclerView.adapter concatAdapter7. 手势交互拖拽与滑动 ItemTouchHelper 支持子项拖拽和滑动。通过 ItemTouchHelper.Callback 实现交互逻辑并附加到 RecyclerView 上。 示例实现拖拽和滑动删除 val itemTouchHelperCallback object : ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP or ItemTouchHelper.DOWN, ItemTouchHelper.LEFT ) {override fun onMove(recyclerView: RecyclerView,viewHolder: RecyclerView.ViewHolder,target: RecyclerView.ViewHolder): Boolean {// 处理拖拽逻辑return true}override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {// 处理滑动删除逻辑} }ItemTouchHelper(itemTouchHelperCallback).attachToRecyclerView(recyclerView)8. 性能优化技巧 避免频繁绑定在 onBindViewHolder 中避免做复杂计算尽量将静态数据放到 ViewHolder 中。预取数据使用 RecyclerView.setItemViewCacheSize() 或 LinearLayoutManager.setInitialPrefetchItemCount() 来增加缓存。调整视图池大小通过 RecycledViewPool 来共享视图池。减少布局嵌套使用 ConstraintLayout 等优化布局。 通过这些高级用法可以更灵活地控制 RecyclerView 的行为从而显著提升应用的用户体验和性能。 参考 Working with RecyclerView in Android Kotlin
http://www.hkea.cn/news/14553122/

相关文章:

  • 网站的模版可以换吗迅睿cms建站
  • 织梦做的网站打包在dw修改安徽中小企业网站建设
  • 做进口产品的网站wordpress做导航页面
  • 商城建站服务网站给我做坏了怎么办
  • 拓和科技有限公司网站带后台网站建设
  • 郓城网站建设电话有什么彩票网站做代理好点
  • 网站维护一般要几天盗用网站模板
  • 天津在哪做网站免费网站空间怎么
  • 企业营销型网站制作wordpress如何修改主题
  • 用php做的企业网站作业做气球装饰可以上哪些网站
  • 做外文H网站网站集约化建设意义
  • 北京市城市建设档案馆网站西安网站制作价格
  • 政务公开网站建设整改方案简单的网站开发的软件
  • 包头市住房和城乡建设局网站寻花问柳一家专门做男人的网站
  • 什么是网站收录红鹰微信管理系统
  • 服装网站开发项目计划书找人做彩票网站多少钱
  • 东莞整站排名企业logo图片
  • 海南建设银行招聘网站什么用来编写网页
  • 电商网站开发企业网站备案查询验证码错误
  • 做视频网站需要什么空间吗7k7k小游戏大全网页版
  • 南宁有什么做网站的好公司网站建设龙华
  • 用dw怎么做登录页面的网站室内设计效果图展板
  • 网站上线要多久软件开发培训机构去学
  • 郑州建网站企业北京网站建设首页
  • 自做网站打开速度慢网站 弹出
  • 做中文网站的公司网站内页百度提交口
  • 中企动力科技股份有限公司上海第一分公司长沙好的网站优化品牌
  • wordpress网站开发代码导视设计ppt
  • 网站如何自动手机版萝岗高端网站建设
  • 兼职做ps网站六六seo基础运营第三讲