• MarqueeView - 跑马灯


    官网

    https://github.com/sunfusheng/MarqueeView

    项目简介

    俗名:可垂直跑、可水平跑的跑马灯

    学名:可垂直翻、可水平翻的翻页公告

    Gradle

    compile 'com.sunfusheng:MarqueeView:'

    属性

    Attribute 属性

    Description 描述

    mvAnimDuration

    一行文字动画执行时间

    mvInterval

    两行文字翻页时间间隔

    mvTextSize

    文字大小

    mvTextColor

    文字颜色

    mvGravity

    文字位置:left、center、right

    mvSingleLine

    单行设置

    mvDirection

    动画滚动方向:bottom_to_top、top_to_bottom、right_to_left、left_to_right

    mvFont

    设置字体

    XML

    1. <com.sunfusheng.marqueeview.MarqueeView
    2. android:id="@+id/marqueeView"
    3. android:layout_width="match_parent"
    4. android:layout_height="30dp"
    5. app:mvAnimDuration="1000"
    6. app:mvDirection="bottom_to_top"
    7. app:mvInterval="3000"
    8. app:mvTextColor="@color/white"
    9. app:mvTextSize="14sp"
    10. app:mvSingleLine="true"
    11. app:mvFont="@font/huawenxinwei"/>

    设置字符串列表数据,或者设置自定义的Model数据类型

    1. MarqueeView marqueeView = (MarqueeView) findViewById(R.id.marqueeView);
    2. List<String> messages = new ArrayList<>();
    3. messages.add("1. 大家好,我是孙福生。");
    4. messages.add("2. 欢迎大家关注我哦!");
    5. messages.add("3. GitHub帐号:sunfusheng");
    6. messages.add("4. 新浪微博:孙福生微博");
    7. messages.add("5. 个人博客:sunfusheng.com");
    8. messages.add("6. 微信公众号:孙福生");
    9. marqueeView.startWithList(messages);
    10. // 或者设置自定义的Model数据类型
    11. public class CustomModel implements IMarqueeItem {
    12. @Override
    13. public CharSequence marqueeMessage() {
    14. return "...";
    15. }
    16. }
    17. List<CustomModel> messages = new ArrayList<>();
    18. marqueeView.startWithList(messages);
    19. // 在代码里设置自己的动画
    20. marqueeView.startWithList(messages, R.anim.anim_bottom_in, R.anim.anim_top_out);

    设置字符串数据

    1. String message = "心中有阳光,脚底有力量!心中有阳光,脚底有力量!心中有阳光,脚底有力量!";
    2. marqueeView.startWithText(message);
    3. // 在代码里设置自己的动画
    4. marqueeView.startWithText(message, R.anim.anim_bottom_in, R.anim.anim_top_out);

    设置事件监听

    1. marqueeView.setOnItemClickListener(new MarqueeView.OnItemClickListener() {
    2. @Override
    3. public void onItemClick(int position, TextView textView) {
    4. Toast.makeText(getApplicationContext(), String.valueOf(marqueeView1.getPosition()) + ". " + textView.getText(), Toast.LENGTH_SHORT).show();
    5. }
    6. });

    重影问题可参考以下解决方案

    在 Activity 或 Fragment 中

    1. @Override
    2. public void onStart() {
    3. super.onStart();
    4. marqueeView.startFlipping();
    5. }
    6. @Override
    7. public void onStop() {
    8. super.onStop();
    9. marqueeView.stopFlipping();
    10. }

    在 ListView 或 RecyclerView 的 Adapter 中

    1. @Override
    2. public void onViewDetachedFromWindow(@NonNull ViewHolder holder) {
    3. super.onViewDetachedFromWindow(holder);
    4. holder.marqueeView.stopFlipping();
    5. }
  • 相关阅读:
    定时任务调度中心简单竞品分析
    springboot使用jedis
    Instant Graph Neural Networks for Dynamic Graphs
    架构师进阶,微服务设计与治理的16条常用原则
    蓝桥杯算法双周赛心得——迷宫逃脱(记忆化搜索)
    批量手机号码归属地查询工具
    数据结构与算法
    Java数组编程练习题(面试题)
    安利一款纯Python编写的GTF处理脚本 - GTFtools
    MySQL | 事务隔离级别详解和实现原理
  • 原文地址:https://blog.csdn.net/ZhaiKun68/article/details/133607825