免费直播系统源码,实现可控的跑马灯,无需焦点相关的代码

package com.android.view;import android.content.Context;
import android.graphics.Canvas;
import android.os.Handler;
import android.os.Message;
import android.text.Layout;
import android.text.TextPaint;
import android.util.AttributeSet;
import android.widget.TextView;public class MarqueeTextView extends TextView {/** 是否停止滚动 */private boolean mStopMarquee;private String mText;//文本内容private float mCoordinateX = 1280;//当前滚动位置private float mTextWidth;//文本宽度private int mScrollWidth = 1280;//滚动区域宽度private int speed = 1;//滚动速度private float currentPosition = 0.0f;public float getCurrentPosition() {return mCoordinateX;}public boolean ismStopMarquee() {return mStopMarquee;}public void setmStopMarquee(boolean mStopMarquee) {this.mStopMarquee = mStopMarquee;}public void setCurrentPosition(float mCoordinateX) {this.mCoordinateX = mCoordinateX;}public int getScrollWidth() {return mScrollWidth;}public void setScrollWidth(int mScrollWidth) {this.mScrollWidth = mScrollWidth;currentPosition = mScrollWidth;}public int getSpeed() {return speed;}public void setSpeed(int speed) {this.speed = speed;}public MarqueeTextView(Context context, AttributeSet attrs) {super(context, attrs);}public void setText(String text) {this.mText = text;mTextWidth = getPaint().measureText(mText);//mTextWidth = 1280;if (mHandler.hasMessages(0))mHandler.removeMessages(0);mHandler.sendEmptyMessageDelayed(0, 10);}@Overrideprotected void onAttachedToWindow() {//mStopMarquee = false;if (!isEmpty(mText))mHandler.sendEmptyMessageDelayed(0, 500);super.onAttachedToWindow();}public static boolean isEmpty(String str) {return str == null || str.length() == 0;}@Overrideprotected void onDetachedFromWindow() {//mStopMarquee = true;if (mHandler.hasMessages(0))mHandler.removeMessages(0);super.onDetachedFromWindow();}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);TextPaint paint = getPaint();int width = (int) Layout.getDesiredWidth(mText, 0,mText.length(), paint);if(width < getWidth()){canvas.drawText(mText, 10, 40, getPaint());return;}if (!isEmpty(mText)) {//System.err.println("zzx===>mCoordinateX: "+mCoordinateX);canvas.drawText(mText, mCoordinateX+10, 40, getPaint());currentPosition = width+mCoordinateX+200;canvas.drawText(mText, currentPosition, 40, getPaint());}}private Handler mHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {switch (msg.what) {case 0:if (mCoordinateX < (-mTextWidth)) {//文字滚动完了,从滚动区域的右边出来mCoordinateX = currentPosition-10;if (!mStopMarquee) {sendEmptyMessageDelayed(0, 500);}else{mCoordinateX = 0;}invalidate();} else {mCoordinateX -= speed;if (!mStopMarquee) {sendEmptyMessageDelayed(0, 30);}else{mCoordinateX = 0;}invalidate();}break;}super.handleMessage(msg);}};}

控制代码:

viewHolder.title = (MarqueeTextView) view.findViewById(R.id.music_name);
ViewGroup.MarginLayoutParams margin1 = new ViewGroup.MarginLayoutParams(viewHolder.title.getLayoutParams());
//margin1.setMargins(0, 0, 0, 0);//设置滚动区域位置:在左边距400像素,顶边距10像素的位置
LinearLayout.LayoutParams layoutParams1 = new LinearLayout.LayoutParams(margin1);
//layoutParams1.height = 60;//设滚动区域高度
//layoutParams1.width = 400; //设置滚动区域宽度
layoutParams1.weight = 1;
viewHolder.title.setLayoutParams(layoutParams1);
viewHolder.title.setScrollWidth(600);
viewHolder.title.setCurrentPosition(0);//设置滚动信息从滚动区域的右边出来
viewHolder.title.setSpeed(2);
viewHolder.title.setmStopMarquee(true);

以上就是免费直播系统源码,实现可控的跑马灯,无需焦点相关的代码, 更多内容欢迎关注之后的文章

免费直播系统源码,可控的跑马灯,无需焦点相关推荐

  1. 搭建PHP直播系统源码的教程,手把手教你手机直播app制作

    如果你有一份PHP直播系统源码,那你一定需要这份搭建教程,作为手机直播app制作的最后一步,"搭建"成为了不少人的心头痛,现在就让我们一起来看看,PHP直播系统源码该如何搭建吧! ...

  2. 犹抱琵琶半遮面--探究直播系统源码的真面目

    犹抱琵琶半遮面--探究直播系统源码的真面目 复制代码 随着各种直播平台的相继出现,直播系统源码也慢慢浮出水面.直播系统源码主要功能和技术难点在于视频流的推送和播放过程,下面我们就简单了解一下呆萌直播的 ...

  3. 如何只需三步搭建一对一直播系统源码

    随着当下直播行业的红火几乎所有的人手机上都安装了直播app,但是呢直播app也包含很多分类,有一对多直播的还有一对一直播系统,这些系统都是通过直播源码搭建起来的,直播系统开发便获得越来越多程序员的关注 ...

  4. 教育直播系统源码搭建的关键点、代码解析

    目前,直播已经应用到了各种传统行业,其中直播带货和教育直播在近两年"风生水起",特别是在线教育,很多传统的教培机构已经开始转型线上.那么,教育直播系统源码开发时有哪些关键点呢?下文 ...

  5. 美丽播直播系统源码提供

    2019独角兽企业重金招聘Python工程师标准>>> 现如今直播市场的火爆对于很多人来说都是一件既喜既悲的事情,直播不断的发展功能在不断的升级,为了在这个庞大的直播熔炉中生存下去就 ...

  6. 一对一直播平台搭建,选择直播系统源码,这几点不容忽视

    想要运营一个一对一直播平台,搭建网站是前提,而选择源码则是一切的基础,他关系到直播平台能否平稳运行.当然,源码的价格也都不便宜,便有很多想要自己开发平台的人,从各种渠道查找免费的直播源码使用,但使用这 ...

  7. 测速源码_解密,相亲交友直播系统源码,高并发如何做到不卡顿

    视频直播已经进入下半场,大家关注的焦点已经从如何构建完善的直播平台,转入到精细化运营阶段.首先是用户对直播体验的要求越来越高,需要做到精细的人群划分,其次是用户基数大,并且网络情况复杂.所以,如何在巨 ...

  8. 视频直播系统源码,平台在日间和夜间模式之间来回切换

    视频直播系统源码,平台在日间和夜间模式之间来回切换实现的相关代码 import 'package:flutter/material.dart'; import 'package:flutter_wid ...

  9. 在线直播系统源码,多图加载成动画的形式如何实现

    在线直播系统源码,多图加载成动画的形式如何实现 1.设置 animationDrawable.addFrame(drawable, 1000);//添加图片生成的drawable,时间为1000ms ...

  10. 视频直播系统源码,简单计时器

    视频直播系统源码,实现简单计时器相关的代码 布局 <?xml version="1.0" encoding="utf-8"?> <androi ...

最新文章

  1. swift string转int_Swift进阶二:基本数据类型相关
  2. hdu5491 The Next 模拟
  3. cocos2dx3.4 VS2012无法打开包含文件extensions/ExtensionExport.h
  4. java rabbitmq topic_java rabbitmq 发送消息是topic模式, 消费者 怎么消费多个不同名字的队列?...
  5. [转]IntelliJ IDEA 2019.3正式发布,给我们带来哪些新特性?
  6. 公众号管理系统 html,微信公众号平台管理后台.html
  7. 如何查看mongo集合的数据类型
  8. Java事务处理全解析(三)——丑陋的案例
  9. InstallShield 2011新功能试用(7)- 新增加的InstallShield Prerequisites
  10. jQuery版本低引起的漏洞——CVE-2020-11022/CVE-2020-11023
  11. 计算机组成原理SRop,【9A文】计算机组成原理历年真题.docx
  12. 使用C++调用Socket接口实现简易TCP服务器
  13. 计算机网络 华南理工大学期末重点 第二章 物理层 谢希仁
  14. 电口以太网物理层一致性测试原理与过程
  15. xp系统为何无法登陆服务器,xp系统怎么登陆云服务器
  16. 爬虫一 requests库与BeautifulSoup库、HTML
  17. 开源操作系统社区OpenCloudOS正式成立
  18. Maltab在数学建模中的应用(第二版)——读书笔记上
  19. 二阶龙格库塔公式推导_二阶龙格—库塔公式.PPT
  20. linux内存耗净,Linux内存耗尽的分析

热门文章

  1. 一文带你掌握抓包工具的使用-科来
  2. 运维工具之科来网络分析系统安装和使用
  3. 关于sfc /scannow后主题文件的重置
  4. 中标麒麟linux界面设置ftp,中标麒麟下sambat和vsftp配置
  5. (转)Wap开发FAQ大全
  6. 十年磨一剑:梳理淘宝网技术架构的发展
  7. [ 物联网篇 ] ESP32 开发板测试亚马逊语音助手Alexa
  8. Fedora 9 感受
  9. 画质速度通吃 浅谈为游戏而生的SM3技术(Dx9的一些技术) -ok
  10. XCode5设置字体