当前位置: 首页 > news >正文

Android:滚动字幕

我就不bb了,直接上代码了

云端给我传的是一个json数组嘛,我只要取其中某个指定字符,取完后,加到一个string里面,中间用空格隔开,就可以了,很多开源的,满足不了朴实的要求,没办法~

package cn.titansys.fowlet.ui.textview;

import android.app.Activity;
import android.content.Context;
import android.text.Html;
import android.text.TextPaint;
import android.text.TextUtils;
import android.text.method.LinkMovementMethod;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.widget.TextView;

import com.alibaba.fastjson.JSON;

import java.util.ArrayList;
import java.util.List;

import cn.titansys.fowlet.data.json.DeviceParse;
import cn.titansys.fowlet.model.iSubtitles;
import cn.titansys.fowlet.ui.marquee.CustomerMarqueeView;

public class TextRoll {

    private TextView textView;
    private Activity activity;
    private DeviceParse deviceParse;
    private List<String> stringList = new ArrayList<String>();
    public TextRoll(TextView textView, Activity activity){
        this.textView =textView;
        this.activity =activity;
        deviceParse  = new DeviceParse(activity);
    }

    public void Show(String html){
        CharSequence charSequence = Html.fromHtml(html);
        textView.setText(charSequence);
        textView.setMovementMethod(LinkMovementMethod.getInstance());//添加链接
        textView.setEllipsize(TextUtils.TruncateAt.MARQUEE);//最多几行
        textView.setSingleLine(true);
        textView.setSelected(true);
        textView.setFocusable(false);
        textView.setFocusableInTouchMode(false);

    }

    public void goDo(){

        //Log.e("stringList","smv+"+deviceParse.get_data_app_extra_subtitles());
        if(deviceParse.get_data_app_extra_subtitles()==null){
            textView.setVisibility(View.GONE);
            Log.e("stringList","smv+null");
            return;
        }

        textView.setVisibility(View.VISIBLE);
        List<iSubtitles> subc = JSON.parseArray(deviceParse.get_data_app_extra_subtitles(), iSubtitles.class);
        for (iSubtitles pp : subc) {
//            pp.getContent()
//            pp.getName()
//            pp.isEnable()
            if(pp.isEnable()){
                stringList.add(pp.getContent());
                Log.e("stringList","smv"+stringList.size()+"str"+pp.getContent());
            }
        }
        if(stringList.size()==0){
            textView.setVisibility(View.GONE);
        }else {
            String str = "";
            for (int i = 0; i < stringList.size(); i++) {
                //System.out.println(stringList.get(i));
                str = str + "\t\t\t\t\t\t\t\t\t\t\t\t\t" + stringList.get(i);
            }
            Show(str);
        }


    }

}

使用

    public void barrage(TextView tv_hint) {
        TextRoll textRoll = new TextRoll(tv_hint, activity);
        textRoll.goDo();
    }

布局

    <TextView
        android:visibility="gone"
        android:id="@+id/tv_hint"
        android:textColor="@color/color_white"
        android:textSize="30dp"
        android:textStyle="bold"
        android:gravity="center_vertical"
        android:background="#283747"
        android:marqueeRepeatLimit="marquee_forever"
        android:layout_width="match_parent"
        android:layout_height="40dp"/>

相关文章:

  • 美容仪器设计市场是什么行情?
  • 第九章Redis持久化
  • 申请外观设计专利多少钱?
  • Shiba Inu 生态系统:快速指南
  • 【Linux操作系统】-- 多线程(三)-- 线程池+单例模式
  • 猿创征文|docker本地私人仓库快速搭建后的安全优化(用户鉴权和简易的web界面开启)
  • 在瑞芯微 Rockchip SDK中增加自己的程序并使用CMake编译
  • Elasticsearch中的评分排序--Function score query
  • 【我不熟悉的css】04. jpg、png 合理使用图片格式
  • Java的Lambda表达式学习笔记:使用lambda表达式
  • 2022-09-02
  • 14天刷爆LeetCode算法学习计划——Day05 快慢指针(2)
  • Redis进阶
  • 双软认定流程?
  • 淘宝如何选词打造黄金标题?构词规则是什么?
  • 【React系列】如何构建React应用程序
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • interface和setter,getter
  • JAVA之继承和多态
  • js对象的深浅拷贝
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • markdown编辑器简评
  • mysql_config not found
  • mysql外键的使用
  • Python3爬取英雄联盟英雄皮肤大图
  • sessionStorage和localStorage
  • SQLServer之创建数据库快照
  • vue 个人积累(使用工具,组件)
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 前端相关框架总和
  • 如何编写一个可升级的智能合约
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 我看到的前端
  • 一、python与pycharm的安装
  • 在electron中实现跨域请求,无需更改服务器端设置
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • $.proxy和$.extend
  • (1)(1.13) SiK无线电高级配置(六)
  • (C++)八皇后问题
  • (C语言)fread与fwrite详解
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (层次遍历)104. 二叉树的最大深度
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (一)基于IDEA的JAVA基础10
  • (转)关于pipe()的详细解析
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .Net面试题4
  • .net通用权限框架B/S (三)--MODEL层(2)
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • @Transactional 详解
  • [ vulhub漏洞复现篇 ] Grafana任意文件读取漏洞CVE-2021-43798
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹