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

哈尔滨模板建站定制网站产品网站建设方案

哈尔滨模板建站定制网站,产品网站建设方案,郑州网站推广公司咨询,成立公司怎么做网站之前一直没注意 SnapHelper 辅助类的功能#xff0c;去年的时候看到项目中仅通过俩行代码设置 RecyclerView 后就提升了用户体验#xff0c;觉得还是很有必要了解一下#xff0c;尝试过后才发现其 PagerSnapHelper、LinearSnapHelper 子类可以作用于不同场景#xff0c;且听… 之前一直没注意 SnapHelper 辅助类的功能去年的时候看到项目中仅通过俩行代码设置 RecyclerView 后就提升了用户体验觉得还是很有必要了解一下尝试过后才发现其 PagerSnapHelper、LinearSnapHelper 子类可以作用于不同场景且听吾言 RecyclerView基础 Android进阶之路 - RecyclerView基础使用17年Android进阶之路 - RecyclerView实现横、纵向滑动列表19年Android基础进阶 - RecyclerView列表加载多类型视图 RecyclerView扩展 Android进阶之路 - RecyclerView加载多类型视图ConcatAdapter到底有没有学习必要Android进阶之路 - RecyclerView停止滑动后Item自动居中SnapHelper辅助类 RecyclerView相关功能 Android进阶之路 - RecyclerView左划删除SwipeRecyclerView的简单使用 17年Android进阶之路 - RecyclerView列表置顶、滑动到指定条目18年Android进阶之路 - RecyclerView列表自动无限水平滚动21年 Android进阶之路 - 双列表联动效果18年 他字字未提喜欢你你句句都是我愿意 基础了解实践检验前置 ItemView前置 Adapter使用方式 你在开发项目中遇到过这样的场景吗 HintRecyclerView 为水平滑动 子ItemView 宽度非 match_parent支持同屏展示多个ItemView 用户滑动列表时产生类似 ViewPager 效果停止滑动后ItemView 自动居中一般正常速度滑动只滑动一条数据但是当滑动速度加快比较费力时可能会滑动多条数据用户正常速度滑动列表时可更轻易的滑动多条数据停止滑动后子ItemView自动居中 Look效果如果以下效果不能完全满足也可以自定义SnapHelper然后参考其子类实现增添部分你需要的业务功能例如修改滑动速度等 Tip核心方法仅有俩行如急于开发亦可直接使用或直接看实践检验等有时间再来一同了解 创建对应的 SnapHelper 后通过 attachToRecyclerView 关联 RecyclerView 即可 PagerSnapHelper val pagerSnapHelper PagerSnapHelper()pagerSnapHelper.attachToRecyclerView(mRvPager)LinearSnapHelper val lineaSnapHelper LinearSnapHelper()lineaSnapHelper.attachToRecyclerView(mRvLinear)基础了解 SnapHelper自身为抽象类同时继承了RecyclerView.OnFlingListener内部实现了一些通用基类方法you俩个实现子类通过重写其中部分方法从而达到对应的需求效果 PagerSnapHelper类似ViewPager滑动效果仅支持单条滑动在 ViewPager控件中也可以看到PagerSnapHelper的身影LinearSnapHelp水平快速滑动列表体验丝滑当滑动停止后ItemView 自动居中 OnFlingListener 仅拥有一个抽象方法 因为我只是通过源码方法命名 参考方法注释 简单理解可能并不是很详细有兴趣的可以前往早期一位前辈写的 让你明明白白的使用RecyclerView——SnapHelper详解 通过查看 SnapHelper 内部方法简单分析一下方法作用范围仅做部分解释并不完全 支持 绑定RecyclerViewcalculateDistanceToFinalSnap 测量移动距离findSnapView 支持 定位移动的ViewfindTargetSnapPosition 支持定位移动后的数据(视图)角标FlingListener、ScrollListener 滑动监听滑动速度监听 PagerSnapHelper、LinearSnapHelper 除基类方法外支持获取居中View、布局方向等 PagerSnapHelper 源码方法 LinearSnapHelper 源码方法 如果要自定义 SnapHelper 的话需要重新以下三个抽象方法 package com.example.recyclerviewsnaphelperimport android.view.View import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.SnapHelperclass OurHelper : SnapHelper() {//计算最终移动距离override fun calculateDistanceToFinalSnap(layoutManager: RecyclerView.LayoutManager, targetView: View): IntArray? {TODO(Not yet implemented)}//获取移动Viewoverride fun findSnapView(layoutManager: RecyclerView.LayoutManager?): View? {TODO(Not yet implemented)}//获取移动View的角标位置override fun findTargetSnapPosition(layoutManager: RecyclerView.LayoutManager?, velocityX: Int, velocityY: Int): Int {TODO(Not yet implemented)} }实践检验 RecyclerView 常规使用仅加入了SnapHelper.attachToRecyclerView相关绑定 前置 ItemView item_view ?xml version1.0 encodingutf-8? androidx.appcompat.widget.LinearLayoutCompat xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_width250dpandroid:layout_height100dpandroid:paddingHorizontal5dpTextViewandroid:idid/tv_dataandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:background#f98741android:gravitycenterandroid:textItem Dataandroid:textColor#ffffffandroid:textStylebold / /androidx.appcompat.widget.LinearLayoutCompat前置 Adapter package com.example.recyclerviewsnaphelperimport android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView import androidx.recyclerview.widget.RecyclerViewclass OurAdapter(private val dataList: MutableListString) : RecyclerView.AdapterOurAdapter.OurViewHolder() {override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): OurViewHolder {return OurViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.item_view, parent,false))}override fun getItemCount(): Int {return dataList.size}override fun onBindViewHolder(holder: OurViewHolder, position: Int) {holder.itemView.findViewByIdTextView(R.id.tv_data).textdataList[position]}inner class OurViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) }使用方式 package com.example.recyclerviewsnaphelperimport android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearSnapHelper import androidx.recyclerview.widget.PagerSnapHelper import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView.HORIZONTALclass MainActivity : AppCompatActivity() {var dataList mutableListOfString()override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)//数据模拟for (i in 0..15) {dataList.add(第${i 1}页)}//RecyclerView基础配置pagerRecyclerSetting()layoutRecyclerSetting()}/*** RecyclerView基础配置PagerSnapHelper示例* */private fun pagerRecyclerSetting() {val mRvPager findViewByIdRecyclerView(R.id.rv_pager)var layoutManager LinearLayoutManager(this)layoutManager.orientation HORIZONTALmRvPager.layoutManager layoutManagerval ourPagerAdapter OurAdapter(dataList)mRvPager.adapter ourPagerAdapter//添加SnapHelper相关辅助类val pagerSnapHelper PagerSnapHelper()pagerSnapHelper.attachToRecyclerView(mRvPager)}/*** RecyclerView基础配置LinearSnapHelper示例* */private fun layoutRecyclerSetting() {val mRvLinear findViewByIdRecyclerView(R.id.rv_linear)var layoutManager LinearLayoutManager(this)layoutManager.orientation HORIZONTALmRvLinear.layoutManager layoutManagerval ourLayoutAdapter OurAdapter(dataList)mRvLinear.adapter ourLayoutAdapter//添加SnapHelper相关辅助类val lineaSnapHelper LinearSnapHelper()lineaSnapHelper.attachToRecyclerView(mRvLinear)} }activity_main 预览图 layout布局 ?xml version1.0 encodingutf-8? androidx.appcompat.widget.LinearLayoutCompat xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticaltools:context.MainActivityTextViewandroid:layout_widthmatch_parentandroid:layout_height40dpandroid:gravitycenterandroid:textPagerSnapHelper效果android:textStylebold /androidx.recyclerview.widget.RecyclerViewandroid:idid/rv_pagerandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:orientationhorizontalapp:layoutManagerandroidx.recyclerview.widget.LinearLayoutManagertools:itemCount10tools:listitemlayout/item_view /TextViewandroid:layout_widthmatch_parentandroid:layout_height40dpandroid:layout_marginTop50dpandroid:gravitycenterandroid:textLinearSnapHelperandroid:textStylebold /androidx.recyclerview.widget.RecyclerViewandroid:idid/rv_linearandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:orientationhorizontalapp:layoutManagerandroidx.recyclerview.widget.LinearLayoutManagertools:itemCount10tools:listitemlayout/item_view //androidx.appcompat.widget.LinearLayoutCompat
http://www.dnsts.com.cn/news/37124.html

相关文章:

  • 做慕课的网站dw网页制作模板下载
  • 做网站费免图片网站seo店铺描述
  • 企业营销网站建设系统比较多人用什么网站做推广
  • 网站备案所需资料去哪里弄Wordpress
  • 手机网站注册深圳工程建设交易中心网
  • 西安网站建设制作专业公司宣城网站建设
  • 河南企业网站定制企业管理10大系统
  • 网站设计遵循的原则上海技术做网站
  • 网站调用谷歌地图有赞微商城怎么收费
  • 安全认证的机票网站成就怎么做互联网公司设计
  • 接做名片的网站建立soho公司网站
  • 销售的产品是帮别人做网站网站显示正在建设中
  • 插画师培训网站建设程序员培训机构有哪些
  • 快设计网站官网互联网高端官网
  • 支付集成文件放在网站哪里wordpress安装服务器
  • 做视频有赚钱的网站有哪些深圳软件开发培训机构
  • Asp.net网站开发分析amp 网站开发
  • 重庆微信网站代理商广州公司网站制作
  • 站酷设计网站怎样下载图片一个网页大概多少钱
  • 网站关键词几个最好大众的网站建设
  • 网站建设与维护考试卷门户网站开发专业
  • 聊城建网站哪家好免费wordpress申请
  • 东莞企业网站模板建站安康seo
  • js做示爱网站例子网页设计怎么把图片上移
  • 手机网站 扁平化趋势合肥手机网站开发
  • 母婴网站建设前期规划潍坊市做网站
  • 网站建设笔试北京标识设计制作
  • 京东网站建设的目标客户说做网站没效果怎么回答好
  • 用php做的大型网站网站开发的文献
  • 盐城网站建设多少钱关键词分布中对seo有危害的