Recyclerview本身没有自动滚动的方法以及这种效果

那么我们首先想到的就是自定义View

创建一个用来写自定义View的类

public class MYScrView extends RecyclerView {private Autoaaview autoview;private boolean running;private boolean canrun;private static final int Timea = 16;public MYScrView(@NonNull Context context, @Nullable AttributeSet attrs) {super(context, attrs);autoview = new Autoaaview(this);}public MYScrView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}private class Autoaaview implements Runnable{WeakReference<MYScrView> myScrViewWeakReference;public Autoaaview(MYScrView myScrView) {myScrViewWeakReference = new WeakReference<>(myScrView);}@Overridepublic void run() {MYScrView myScrView = myScrViewWeakReference.get();
//            myScrView!=null&&if (myScrView.canrun&&myScrView.running){myScrView.scrollBy(2,2);myScrView.postDelayed(myScrView.autoview,Timea);}}}public void stort(){if (running)stop();running = true;canrun = true;postDelayed(autoview,Timea);}private void stop() {running = false;removeCallbacks(autoview);}@Overridepublic boolean onTouchEvent(MotionEvent e) {switch (e.getAction()){case MotionEvent.ACTION_DOWN:if (running){stop();}break;case MotionEvent.ACTION_UP:case MotionEvent.ACTION_CANCEL:case MotionEvent.ACTION_OUTSIDE:if (canrun){stort();}break;}return super.onTouchEvent(e);}
}

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"><com.example.myappli01.MYScrViewandroid:layout_width="wrap_content"android:id="@+id/Myscr"android:layout_height="300dp"/><LinearLayoutandroid:layout_width="match_parent"android:layout_alignParentBottom="true"android:layout_height="56dp"><EditTextandroid:layout_width="300dp"android:layout_height="match_parent"android:id="@+id/pl"android:background="@color/colorPrimary"/><Buttonandroid:layout_width="wrap_content"android:id="@+id/send"android:layout_height="wrap_content"android:text="发送"/></LinearLayout>
</RelativeLayout>

RecyclerView 用来给Adapter传送的item

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="wrap_content"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:textSize="24dp"android:id="@+id/textaaa"/>
</LinearLayout>

这是在Activity里面写的

    //Activity里面的点击事件的方法private void send() {//发送的点击事件send.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {//运用Dialog再次判断  正常情况下是不需要判断的,自己灵活运用AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setTitle("发送");builder.setMessage("是否发送");builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {String trim = pl.getText().toString().trim();if (trim.equals("")) {Toast.makeText(MainActivity.this, "不允许为空",         Toast.LENGTH_SHORT).show();} else {strings.add(new My(trim));addDanmaku(trim,true);if (myscrviewAdapter == null) {myscrviewAdapter = new MyscrviewAdapter(MainActivity.this, strings);Myscr.setAdapter(myscrviewAdapter);Myscr.setLayoutManager(new LinearLayoutManager(MainActivity.this));if (true)Myscr.stort();} else {myscrviewAdapter.notifyDataSetChanged();}}}});builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {}});builder.show();}});}

上文中的Adapter 的适配器

public class MyscrviewAdapter extends RecyclerView.Adapter<BaseViewHolder> {Context context;ArrayList<My> mies;public MyscrviewAdapter(Context context, ArrayList<My> mies) {this.context = context;this.mies = mies;}@NonNull@Overridepublic BaseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {View inflate = LayoutInflater.from(context).inflate(R.layout.string, parent,false);BaseViewHolder baseViewHolder = new BaseViewHolder(inflate);return baseViewHolder;}@Overridepublic void onBindViewHolder(@NonNull BaseViewHolder holder, int position) {holder.setText(R.id.textaaa,mies.get(position%mies.size()).getString()+"");}@Overridepublic int getItemCount() {return Integer.MAX_VALUE;}
}

My的小写bean类

public class My {String string;public My() {}public My(String string) {this.string = string;}public String getString() {return string;}public void setString(String string) {this.string = string;}
}

  maven { url "https://jitpack.io" }implementation 'androidx.recyclerview:recyclerview:1.0.0'implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.22'

RecyclerView——自动滚动效果相关推荐

  1. android开发歌词滑动效果_android实现歌词自动滚动效果

    最近在做Android 的MP3播放的项目,要实现歌词的自动滚动,以及同步显示. lyric的歌词解析主要用yoyoplayer里面的,显示部分参考了这里 ,这里只是模拟MP3歌词的滚动. 先上一下效 ...

  2. html自动滚动效果,HTML标签marquee实现滚动效果的简单方法(必看)

    页面的自动滚动效果,可由javascript来实现,但是今天无意中发现了一个html标签 - 可以实现多种滚动效果,无需js控制. 使用marquee标记不仅可以移动文字,也可以移动图片,表格等. 语 ...

  3. 实现当UILable的内容超出其范围后自动滚动效果

    本文主要介绍 [当UILabel的内容超出其自身的宽度范围后,进行互动展示的效果],我们先来看一下Demo的效果图. 实际实现起来并不十分繁杂,在这里,为了开发的效率,我们使用了一个已经封装好的UIL ...

  4. vue列表,table表格 自动滚动效果

    vue列表,表格自动滚动 安装依赖 npm install vue-seamless-scroll --save main.js文件里面引入使用 import scroll from 'vue-sea ...

  5. html打字并自动滚动效果,js实现键盘自动打字效果

    content="width=device-width,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale= ...

  6. android listview 向上自动滚动效果,Android通过代码控制ListView上下滚动的方法

    本文将介绍一种通过代码控制ListView上下滚动的方法. 先上图: 按下按钮会触发ListView滚动或停止. 实现该功能并不难,下面给出主要代码MainActivity.java package ...

  7. JS图片自动或者手动滚动效果(支持left或者up)

    JS图片自动或者手动滚动效果 在谈组件之前 来谈谈今天遇到搞笑的事情,今天上午接到一个杭州电话 0571-28001187 即说是杭州人民法院的 貌似说我用招商银行信用卡在今年的6月23日借了招商银行 ...

  8. RecyclerView 嵌套RecyclerView 或者 ScrollView当中嵌套RecyclerView ,子View会自动滚动到顶部

    问题如图 此问题一开始我以为是我在fragment当中,返回和移动的时候调用了adpater的notifyItemChange方法情况和notifyItemChanged(int position) ...

  9. html制作滚动游戏,HTML标签marquee实现滚动效果的简单方法(必看)

    页面的自动滚动效果,可由javascript来实现,但是今天无意中发现了一个html标签 - 可以实现多种滚动效果,无需js控制. 使用marquee标记不仅可以移动文字,也可以移动图片,表格等. 语 ...

最新文章

  1. [BZOJ] 1606: [Usaco2008 Dec]Hay For Sale 购买干草
  2. python增删改查的框架_简单的Django框架增删改查操作
  3. error LNK2019: 无法解析的外部符号 __imp__accept@12
  4. 阿里深度学习框架开源了!无缝对接TensorFlow、PyTorch
  5. java synchronized wait
  6. 一段在SAP C4C里触发S4HANA outbound Delivery的ABSL代码
  7. 函数动态参数实现format
  8. 25个关键技术点,带你熟悉Python
  9. vs2015ef链接mysql_【转载】VS2015 + EF6连接MYSQL5.6
  10. AKS解决方案架构设计
  11. word 最后一页删不掉及删除后其它页面页码不对的问题
  12. ABP默认表结构解析
  13. 粗浅的rdt协议介绍
  14. 3D游戏——AR图片识别与建模
  15. 简单的Android XML布局使用
  16. 翟山鹰“生态宇宙”重磅首发 缔造超级共赢生态
  17. HTML中禁止自动完成和禁用输入法
  18. JAVA接入微信刷脸支付分支付【V2、V3两种接入都有提供】
  19. 编写一个C程序,用getchar函数读入两个字符c1,c2,然后分别用putchar函数和printf函数输出这两个字符.
  20. 切换分支报错:Untracked Files Prevent Checkout

热门文章

  1. 为什么Pycharm找不到deployment?
  2. Customizable constraint systems for succinct arguments学习笔记(2)
  3. QT学习笔记(1): Qt的线程安全和可重用性
  4. 百度地图实时监听缩放级别
  5. 华为手机支持鸿蒙,华为鸿蒙系统2.0登场 余承东:明年华为智能手机将全面支持...
  6. Apache Ftp客户端工具FtpClient
  7. 《机器学习-小知识点》1: Generative VS Discriminative 问题
  8. Qt中关于qDebug的使用
  9. 实参可以是任意类型吗_孕妇可以敷面膜吗?怀孕能用哪种类型的面膜?
  10. 华为防火墙实战配置教程