返回顶部
首页 > 资讯 > 精选 >Android如何实现通知消息水平播放、无限循环效果
  • 520
分享到

Android如何实现通知消息水平播放、无限循环效果

android 2023-05-30 21:05:39 520人浏览 安东尼
摘要

小编给大家分享一下Android如何实现通知消息水平播放、无限循环效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!先看效果图:这个效果也很常见,实现的方法也有很多,我是使用RecyclerView来实现的,觉得还是挺不错

小编给大家分享一下Android如何实现通知消息水平播放、无限循环效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

先看效果图:

Android如何实现通知消息水平播放、无限循环效果

这个效果也很常见,实现的方法也有很多,我是使用RecyclerView来实现的,觉得还是挺不错的,就写下来分享给大家。

下面先看我们的布局文件main.xml,里面主要是一个RecyclerView:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="Http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v7.widget.RecyclerView  android:id="@+id/myRecyclerView"  android:layout_width="match_parent"  android:layout_height="36dp"  android:layout_marginTop="20dp"  android:background="#faf7bb"  > </android.support.v7.widget.RecyclerView></LinearLayout>

接下来看一下MainActivity的代码:

public class MainActivity extends Activity { @BindView(R.id.myRecyclerView)RecyclerView myRecyclerView; private List<String> mDatas; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.main);  ButterKnife.bind(this);  initData();  initView(); } private void initData(){  mDatas = new ArrayList<>();  mDatas.add("我被青春撞了一下腰");  mDatas.add("爱就一个字,我只说一次");  mDatas.add("你在他乡还好吗"); } private void initView(){  LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false);  myRecyclerView.setLayoutManager(linearLayoutManager);  myRecyclerView.setAdapter(new MyAdapter());  handler.sendEmptyMessageDelayed(0x00,1000); } private Handler handler = new Handler(){  @Override  public void handleMessage(Message msg) {   myRecyclerView.scrollBy(myRecyclerView.getScrollX()+2,myRecyclerView.getScrollY());   handler.sendEmptyMessageDelayed(0x00,100);  }};}

再看一下Adapter:

class MyAdapter extends RecyclerView.Adapter<MyViewHolder>{  @Override  public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {   return new MyViewHolder(LayoutInflater.from(MainActivity.this).inflate(R.layout.item_recyclerview,parent,false));  }  @Override  public void onBindViewHolder(MyViewHolder holder, final int position) {   final int tempPos = position%(mDatas.size());   holder.textView.setText(mDatas.get(tempPos));   holder.textView.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {     Toast toast = Toast.makeText(MainActivity.this,mDatas.get(tempPos),Toast.LENGTH_SHORT);     toast.setGravity(Gravity.CENTER,0,0);     toast.show();    }   });  }  @Override  public int getItemCount() {   return 100000;  } } class MyViewHolder extends RecyclerView.ViewHolder{  private TextView textView;  public MyViewHolder(View itemView) {   super(itemView);   textView = (TextView) itemView.findViewById(R.id.tv_recyclerview);  }}

首先,创建一个List,存放播放的数据,然后设置RecyclerView,

我们看一下MyAdapter,在getItemCount()方法里,我们返回的次数是100000,目的就是为了让数据大一点,看似达到了无限播放的效果,毕竟用户在一个界面的停留时间是有限的,这个根据具体业务场景,还可以适当调整。在看一下MainActivity的initView方法,设置好了RecyclerView之后,使用handler发送一个空消息,到达handler的handleMessage方法,这个方法的处理,就是我们的核心了,
myRecyclerView.scrollBy(myRecyclerView.getScrollX()+2,myRecyclerView.getScrollY());

使用scroolBy,每隔100毫秒发送一次消息,每次scrollX增加2个像素位移,即可达到无限循环滚动的效果,好神奇。到此我们的功能就实现了。

下面做两个优化:

第一个优化

当页面有跳转时,禁止消息滚动,即暂停,当页面回来的时候再接着滚动。
我们定义一个boolean类型的变量,在onStop和onRestart方法里分别赋值,

private boolean flag; @Override protected void onRestart() {  flag = false;  handler.sendEmptyMessageDelayed(0x00,100);  super.onRestart(); } @Override protected void onStop() {  flag = true;  super.onStop(); }

接着,handler的handlerMessage方法稍微也改一下:

 @Override  public void handleMessage(Message msg) {   myRecyclerView.scrollBy(myRecyclerView.getScrollX() + 2, myRecyclerView.getScrollY());   if (!flag) {    handler.sendEmptyMessageDelayed(0x00, 100);   }  }

这样,在页面进行切换时,消息不再滚动了。

第二个优化,

禁止手动滚动消息,最上面那个效果图,可以看出,我们可以用手滚动消息,如果不想让用户用手滚动,则禁止响应move事件即可,由我们的布局文件可知,RecyclerView的父布局是LinearLayout,我们可以自定义LinearLayout,拦截掉move事件即可,代码如下:

public class ForbidMoveLinearLayout extends LinearLayout { public ForbidMoveLinearLayout(Context context) {  super(context); } public ForbidMoveLinearLayout(Context context, AttributeSet attrs) {  super(context, attrs); } public ForbidMoveLinearLayout(Context context, AttributeSet attrs, int defStyleAttr) {  super(context, attrs, defStyleAttr); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) {  if (ev.getAction() == MotionEvent.ACTION_MOVE){   return true;  }  return super.onInterceptTouchEvent(ev); }}

我们的布局文件进行相应调整:

<?xml version="1.0" encoding="utf-8"?><com.example.administrator.helloapplication.ForbidMoveLinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v7.widget.RecyclerView  android:id="@+id/myRecyclerView"  android:layout_width="match_parent"  android:layout_height="36dp"  android:layout_marginTop="20dp"  android:background="#faf7bb"  > </android.support.v7.widget.RecyclerView></com.example.administrator.helloapplication.ForbidMoveLinearLayout>

这样就禁止手动滑动了,效果图就不贴了,可以自己试一下。看起来也不是那么难,但是如果想不到这个思路,就不好下手了。

Ok,到此结束。

Android是什么

Android是一种基于linux内核的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发

看完了这篇文章,相信你对“Android如何实现通知消息水平播放、无限循环效果”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: Android如何实现通知消息水平播放、无限循环效果

本文链接: https://lsjlt.com/news/221546.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android如何实现通知消息水平播放、无限循环效果
    小编给大家分享一下Android如何实现通知消息水平播放、无限循环效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!先看效果图:这个效果也很常见,实现的方法也有很多,我是使用RecyclerView来实现的,觉得还是挺不错...
    99+
    2023-05-30
    android
  • Android实现轮播图无限循环效果
    本文实例为大家分享了Android轮播图无限循环的具体代码,供大家参考,具体内容如下 实现无限循环 在getCount()方法中,返回一个很大的值,Integer.MAX_VA...
    99+
    2022-06-06
    轮播图 循环 轮播 Android
  • Android ViewPager实现无限循环效果
    最近项目里有用到ViewPager来做广告运营位展示,看到现在很多APP的广告运营位都是无限循环的,所以就研究了一下这个功能的实现。 先看看效果 从一个方向上一直滑动,么有...
    99+
    2022-06-06
    循环 viewpager Android
  • Android ViewPager如何实现无限循环轮播广告位Banner效果
    这篇文章将为大家详细讲解有关Android ViewPager如何实现无限循环轮播广告位Banner效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。现在一些app通常会在头部放一个广告位,底部放置一行小...
    99+
    2023-05-30
    android viewpager banner
  • js怎么实现无限循环轮播图效果
    小编给大家分享一下js怎么实现无限循环轮播图效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!知识要点1.实现无限循环的原理:以...
    99+
    2024-04-02
  • Unity ScrollView如何实现无限循环效果
    小编给大家分享一下Unity ScrollView如何实现无限循环效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下在Unity引擎中ScrollVi...
    99+
    2023-06-20
  • Android实现带指示点的自动轮播无限循环效果
    想要实现无限轮播,一直向左滑动,当到最后一个view时,会滑动到第一个,无限… 可以自己写ViewPager然后加handler先实现自动滚动,当然这里我为了项目的进度直接使用...
    99+
    2022-06-06
    自动 循环 轮播 Android
  • android如何实现banner轮播图无限轮播效果
    小编给大家分享一下android如何实现banner轮播图无限轮播效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体内容如下效果展示第一步(权限配置)<uses-permission android:n...
    99+
    2023-05-30
    android banner
  • CSS3如何实现无限循环的滚动效果
    这篇文章主要讲解了“CSS3如何实现无限循环的滚动效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS3如何实现无限循环的滚动效果”吧!1. 使用CSS3来实现若要用CSS3的属性实现的...
    99+
    2023-07-04
  • 怎么实现Android TV 3D卡片无限循环效果
    这篇文章主要讲解了“怎么实现Android TV 3D卡片无限循环效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么实现Android TV 3D卡片无限循环效果”吧!##思路自定义Vi...
    99+
    2023-06-25
  • Android ViewPager导航小圆点实现无限循环效果
    之前用View Pager做了一个图片切换的推荐栏(就类似与淘宝、头条客户端顶端的推荐信息栏),利用View Pager很快就能实现,但是一次无意间使用淘宝APP的时候,突然发现它的效果和我做的还不一样,淘宝APP的推荐栏可以左右无限循环切...
    99+
    2023-05-30
    viewpager 导航 无限循环
  • 如何在Android应用中实现一个无限循环轮播
    如何在Android应用中实现一个无限循环轮播?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、自定义控件属性新建自定义控件SliderLayout继承于Rel...
    99+
    2023-05-31
    android roi
  • CSS3中transition如何实现通知消息轮播条
    这篇文章主要介绍CSS3中transition如何实现通知消息轮播条,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Vue 版本,拷贝到文件即可使用<template>  <!--...
    99+
    2023-06-08
  • 如何使用CSS3实现无限循环的无缝滚动效果
    这篇文章将为大家详细讲解有关如何使用CSS3实现无限循环的无缝滚动效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 使用CSS3来实现若要用CSS3的属性实现的话,...
    99+
    2024-04-02
  • Android ViewPager怎么去实现无限循环滚动回绕效果
    不懂Android ViewPager怎么去实现无限循环滚动回绕效果?其实想解决这个问题也不难,下面让小编带着大家一起学习怎么去解决,希望大家阅读完这篇文章后大所收获。android系统提供的ViewPager标准方式是左右可以自由滑动,但...
    99+
    2023-05-30
    android viewpager 滚动效果
  • HTML5如何通过Vedio标签实现视频循环播放
    小编给大家分享一下HTML5如何通过Vedio标签实现视频循环播放,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!要实现网页播放视频在HTML5以前是通过<e...
    99+
    2023-06-09
  • Android实现横向无限循环滚动的单行弹幕效果
    本期将带领大家实现一个这样的效果,支持无限循环的单行弹幕效果。 实现思路分析 要实现上面的效果,我们先拆分下实现要素: 1、弹幕布局是从屏幕的右侧向左侧滚动,单个弹幕之间的间距是固...
    99+
    2024-04-02
  • 如何在Android中利用ListView实现一个内容无限循环显示效果
    这期内容当中小编将会给大家带来有关如何在Android中利用ListView实现一个内容无限循环显示效果,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。其实要达到无限循环显示,主要就是实现继承Adapter...
    99+
    2023-05-31
    android listview roi
  • Android实现基于ViewPager的无限循环自动播放带指示器的轮播图CarouselFigureView控件
    最近用到需要无限轮播自动播放的轮播轮播图,网上感觉都有这样那样的问题,于是自己写了一个通用的控件CarouselFigureView。 特点: 1.可以轮播view可以自己定义...
    99+
    2022-06-06
    自动 循环 viewpager 轮播 Android
  • JS如何实现无缝循环marquee滚动效果
    这篇文章主要介绍JS如何实现无缝循环marquee滚动效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!无缝循环marquee滚动JS代码实现,兼容IE, FireFox, Chro...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作