前言:

最开始使用的HorizontalScrollView和ListView当数据量上去之后发现有些低性能的手机变得卡顿,手机屏幕刷新会黑屏(黑平的时候我都惊呆了)

实现

废话不多说了接下来实现功能,处于考虑我决定使用RecyclerView然后让他横向滑动并且让他们同步这样横向滑动就解决了,然后竖着滑动使用ScrollView,这就是我的思路。
RecyclerView Adapter 因为这里的item资源复用,渲染界面一定要仔细,不然一个界面变了会影响其他复用的界面

1.测试bean


public class Bean {private String color;private String name;public String getColor() {return color;}public void setColor(String color) {this.color = color;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Bean() {}
}

2.界面布局

主activity

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><ScrollViewandroid:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:id="@+id/box"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"></LinearLayout></ScrollView></androidx.constraintlayout.widget.ConstraintLayout>

RecyclerView item

<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutandroid:id="@+id/lay_item_auto_check_device"xmlns:android="http://schemas.android.com/apk/res/android"xmlns:custom="http://schemas.android.com/apk/res-auto"android:layout_width="wrap_content"android:layout_height="wrap_content"android:gravity="center"android:orientation="vertical"><LinearLayoutandroid:layout_width="80dp"android:layout_height="70dp"android:background="@drawable/item_bg"android:layout_margin="5dp"android:gravity="center"android:orientation="vertical"><LinearLayoutandroid:id="@+id/item_background"android:layout_width="60dp"android:layout_height="55dp"android:background="#e6e6e6"android:orientation="vertical"><TextViewandroid:id="@+id/item_textview"android:layout_width="60dp"android:layout_height="35dp"android:gravity="center"android:focusable="true"android:focusableInTouchMode="false"android:textColor="#ffffff"android:textStyle="bold"android:textSize="20dp"/></LinearLayout></LinearLayout></LinearLayout>

3.适配器

import java.util.List;public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {private List<Bean> list;public Adapter(List<Bean> list) {this.list = list;}@NonNull@Overridepublic ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item,parent,false);ViewHolder holder = new ViewHolder(view);return holder;}@Overridepublic void onBindViewHolder(@NonNull ViewHolder holder, int position) {Bean bean = list.get(position);holder.lay.setBackgroundColor(Color.parseColor(bean.getColor()));holder.tv.setText(bean.getName());}@Overridepublic int getItemCount() {return list.size();}public class ViewHolder extends RecyclerView.ViewHolder {LinearLayout lay;TextView tv;public ViewHolder(@NonNull View itemView) {super(itemView);lay = itemView.findViewById(R.id.item_background);tv = itemView.findViewById(R.id.item_textview);}}
}

4.avtivity 代码

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//1.获取控件LinearLayout boxView = findViewById(R.id.box);//2.生成模拟数据List<Bean> list = new ArrayList<>();for (int i = 0; i < 100; i++) {Bean bean = new Bean();bean.setName("TNT" + i);switch (i % 10) {case 0:bean.setColor("#ffbd21");break;case 1:bean.setColor("#99cc00");break;case 2:bean.setColor("#ff002a");break;case 3:bean.setColor("#57C5E8");break;case 4:bean.setColor("#B0B0B0");break;case 5:bean.setColor("#59B29C");break;case 6:bean.setColor("#ff6b29");break;case 7:bean.setColor("#00a0e9");break;case 8:bean.setColor("#f0f66e");break;case 9:bean.setColor("#FFA4A9");break;}list.add(bean);}//3.根据数据生成界面final List<RecyclerView> syncRecyclerViews = new ArrayList<>();for (int i = 0; i < 10; i++) {RecyclerView syncRecyclerView = new RecyclerView(this);Adapter adapter = new Adapter(list);LinearLayoutManager ms = new LinearLayoutManager(this);ms.setOrientation(LinearLayoutManager.HORIZONTAL);syncRecyclerView.setLayoutManager(ms);syncRecyclerView.setAdapter(adapter);syncRecyclerViews.add(syncRecyclerView);syncRecyclerView.setOverScrollMode(View.OVER_SCROLL_NEVER);//取消边缘波浪样式boxView.addView(syncRecyclerView);//添加监听,使所有的RecyclerView保持同步RecyclerView.OnScrollListener listener = new RecyclerView.OnScrollListener() {@Overridepublic void onScrolled(RecyclerView recyclerView, int dx, int dy) {for (RecyclerView item : syncRecyclerViews) {if (recyclerView == item) {continue;}item.clearOnScrollListeners();item.scrollBy(dx, dy);item.addOnScrollListener(this);}}};syncRecyclerView.addOnScrollListener(listener);}}
}

最后奉上github地址

https://github.com/1142235090/android-table-slide

Android可上下左右滑动的列表相关推荐

  1. Android手势识别——上下左右滑动、屏幕上下左右中区域处理

    手势识别GestureDetector 关于手势识别是Android为了方便开发人员处理屏幕上的触摸.拖动.单双击.滑动等提供的一组接口.用这个我们可以很方便的在屏幕上做出想要的效果,比如滑动翻页.触 ...

  2. android 可以上下左右滑动的界面布局

    1.我使用的是ScrollView嵌套HorizontalScrollView让ScrollView负责上下滑动HorizontalScrollView负责左右滑动 2.以下代码提供了思路和完成手段, ...

  3. Android上下左右滑动,显示底层布局

    转载博客地址:http://www.cnblogs.com/flyme2012/p/4106308.html 闲着没事做了一个小东西.Android的上下左右滑动,显示底层布局.可以做类似于QQ消息列 ...

  4. Android 可滑动表格的简单实现(类似于excel表格,支持上下左右滑动)

    前言 最近遇到一个需求,以表格的形式模拟样本盒的显示,最初设想是利用RecyclerView网格形式实现,然而需求是盒子行列数目不固定,可能存在手机屏幕一屏显示不下的情况,因此需要做成可以上下左右滑动 ...

  5. Android学习系列(10)--App列表之拖拽ListView(上)

    研究了很久的拖拽ListView的实现,受益良多,特此与尔共飨.       鉴于这部分内容网上的资料少而简陋,而具体的实现过程或许对大家才有帮助,为了详尽而不失真,我们一步一步分析,分成两篇文章. ...

  6. 安卓APP_ 控件(10)—— ListView可上下滑动的列表(重要)与ViewHolder优化

    摘自:安卓APP_ 控件(10)-- ListView可上下滑动的列表(重要)与ViewHolder优化 作者:丶PURSUING 发布时间: 2021-04-12 23:28:27 网址:https ...

  7. Android学习系列(15)--App列表之游标ListView(索引ListView)

    游标ListView,提供索引标签,使用户能够快速定位列表项.       也可以叫索引ListView,有的人称也为Tweaked ListView,可能更形象些吧.       一看图啥都懂了: ...

  8. Android学习系列(11)--App列表之拖拽ListView(下)

    接着上篇Android学习系列(10)--App列表之拖拽ListView(上)我们继续实现ListView的拖拽效果. 7.重写onTouchEvent()方法.      在这个方法中我们主要是处 ...

  9. rn 实现上下滑动选择列表_RN-实现抖音切换视频效果

    实现效果 1.上下滑动切换 2. 左滑动弹出列表,右滑动取消列表 3.加载更多.刷新 实现效果 思路 通过滑动的x.y判断是上下滑动还是左右滑动 1.上下滑动 滑动中:通过 flatList.scro ...

最新文章

  1. 深入浅出Spring Security(一):三句话解释框架原理
  2. 轻松学MVC4.0–4 扩展UserProfile
  3. 贝叶斯统计:信噪对偶与Dawid定理
  4. 诺基亚塞班系列最强回顾(搬运整理)
  5. Android开发工具之Android Studio---版本控制SVN使用三(常规操作)
  6. linux实例 批量修改图片文件名
  7. 用python数据分析excel多地天气_Python实现天气查询功能(外加Excel技巧)
  8. Layui导航、面包屑
  9. 手机用久了很卡怎么办?
  10. java miniui datagrid_miniui datagrid 的客户端分页解决方案
  11. MySQL数据常用命令
  12. 人脸方向学习(十六):Face Detection-BlazeFace解读
  13. pku 1459 最大流 SAP
  14. qtp 连接mysql_QTP连接mysql数据库
  15. Qt实战-简单的点名程序和抽奖程序
  16. 不用找,你想要的凹凸贴图素材都在这里
  17. [2014]兄弟连高洛峰 php教程5.5.1,2014PHP兄弟连全套教程
  18. html5朋友圈评论代码,微信朋友圈评论隐藏文字,超级好玩
  19. Lock接口和AQS原理与实现(Java并发编程的艺术整理)
  20. HTTP请求头及其作用

热门文章

  1. cocos-Lua FairyGUI 之 列表(九)
  2. postman导出,断言,批量执行
  3. uboot的官方网站
  4. Pytorch每日一练——预测泰坦尼克号船上的生存乘客
  5. 【Midjourney教程】设计麻瓜也能10分钟上架一套表情包
  6. 高德地图宣布品牌升级,打造出门好生活开放服务平台
  7. 对 Windows 官方文档的一点吐槽
  8. Python集合运算
  9. stm32f103c8t6控制ESP8266与手机APP通信
  10. Matlab渐变颜色图(colormap)生成/编辑器—ColorMap