免费直播系统源码,可控的跑马灯,无需焦点
免费直播系统源码,实现可控的跑马灯,无需焦点相关的代码
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);
以上就是免费直播系统源码,实现可控的跑马灯,无需焦点相关的代码, 更多内容欢迎关注之后的文章
免费直播系统源码,可控的跑马灯,无需焦点相关推荐
- 搭建PHP直播系统源码的教程,手把手教你手机直播app制作
如果你有一份PHP直播系统源码,那你一定需要这份搭建教程,作为手机直播app制作的最后一步,"搭建"成为了不少人的心头痛,现在就让我们一起来看看,PHP直播系统源码该如何搭建吧! ...
- 犹抱琵琶半遮面--探究直播系统源码的真面目
犹抱琵琶半遮面--探究直播系统源码的真面目 复制代码 随着各种直播平台的相继出现,直播系统源码也慢慢浮出水面.直播系统源码主要功能和技术难点在于视频流的推送和播放过程,下面我们就简单了解一下呆萌直播的 ...
- 如何只需三步搭建一对一直播系统源码
随着当下直播行业的红火几乎所有的人手机上都安装了直播app,但是呢直播app也包含很多分类,有一对多直播的还有一对一直播系统,这些系统都是通过直播源码搭建起来的,直播系统开发便获得越来越多程序员的关注 ...
- 教育直播系统源码搭建的关键点、代码解析
目前,直播已经应用到了各种传统行业,其中直播带货和教育直播在近两年"风生水起",特别是在线教育,很多传统的教培机构已经开始转型线上.那么,教育直播系统源码开发时有哪些关键点呢?下文 ...
- 美丽播直播系统源码提供
2019独角兽企业重金招聘Python工程师标准>>> 现如今直播市场的火爆对于很多人来说都是一件既喜既悲的事情,直播不断的发展功能在不断的升级,为了在这个庞大的直播熔炉中生存下去就 ...
- 一对一直播平台搭建,选择直播系统源码,这几点不容忽视
想要运营一个一对一直播平台,搭建网站是前提,而选择源码则是一切的基础,他关系到直播平台能否平稳运行.当然,源码的价格也都不便宜,便有很多想要自己开发平台的人,从各种渠道查找免费的直播源码使用,但使用这 ...
- 测速源码_解密,相亲交友直播系统源码,高并发如何做到不卡顿
视频直播已经进入下半场,大家关注的焦点已经从如何构建完善的直播平台,转入到精细化运营阶段.首先是用户对直播体验的要求越来越高,需要做到精细的人群划分,其次是用户基数大,并且网络情况复杂.所以,如何在巨 ...
- 视频直播系统源码,平台在日间和夜间模式之间来回切换
视频直播系统源码,平台在日间和夜间模式之间来回切换实现的相关代码 import 'package:flutter/material.dart'; import 'package:flutter_wid ...
- 在线直播系统源码,多图加载成动画的形式如何实现
在线直播系统源码,多图加载成动画的形式如何实现 1.设置 animationDrawable.addFrame(drawable, 1000);//添加图片生成的drawable,时间为1000ms ...
- 视频直播系统源码,简单计时器
视频直播系统源码,实现简单计时器相关的代码 布局 <?xml version="1.0" encoding="utf-8"?> <androi ...
最新文章
- swift string转int_Swift进阶二:基本数据类型相关
- hdu5491 The Next 模拟
- cocos2dx3.4 VS2012无法打开包含文件extensions/ExtensionExport.h
- java rabbitmq topic_java rabbitmq 发送消息是topic模式, 消费者 怎么消费多个不同名字的队列?...
- [转]IntelliJ IDEA 2019.3正式发布,给我们带来哪些新特性?
- 公众号管理系统 html,微信公众号平台管理后台.html
- 如何查看mongo集合的数据类型
- Java事务处理全解析(三)——丑陋的案例
- InstallShield 2011新功能试用(7)- 新增加的InstallShield Prerequisites
- jQuery版本低引起的漏洞——CVE-2020-11022/CVE-2020-11023
- 计算机组成原理SRop,【9A文】计算机组成原理历年真题.docx
- 使用C++调用Socket接口实现简易TCP服务器
- 计算机网络 华南理工大学期末重点 第二章 物理层 谢希仁
- 电口以太网物理层一致性测试原理与过程
- xp系统为何无法登陆服务器,xp系统怎么登陆云服务器
- 爬虫一 requests库与BeautifulSoup库、HTML
- 开源操作系统社区OpenCloudOS正式成立
- Maltab在数学建模中的应用(第二版)——读书笔记上
- 二阶龙格库塔公式推导_二阶龙格—库塔公式.PPT
- linux内存耗净,Linux内存耗尽的分析