• 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. }
  • 相关阅读:
    图像主题颜色提取(Median cut)
    洛谷 P8741 [蓝桥杯 2021 省 B] 填空问题 题解
    CentOS 7最小化安装没有ifconfig
    VS2022升级之后,原有项目出现异常
    win10 安装yolov7 训练自己的数据集
    <Python>PyQt5+OpenCv+Dlib人脸合成程序
    我没能实现始终在一个线程上运行 task
    Springboot中使用netty 实现 WebSocket 服务
    大三第十周学习笔记
    2022.11.10 英语背诵
  • 原文地址:https://blog.csdn.net/ZhaiKun68/article/details/133607825