Android之利用TextView实现跑马灯效果

Android TextView跑马灯效果 对于很多时候会有显示不全的问题,也就是会以省略号的形式显示,对于可以有焦点的Textview可以很好实现跑马灯效果,但是无焦点的TextView就不好操作,下面我来解决这个问题。 阅读详情

今天,我们将利用TextView控件来实现对一串编辑文字的视觉处理…我们在文本框输的文字多的时候,一般是这个效果这里写图片描述
被分成了两行显示,可是如果布局限制了我们的折行,即只能用单行显示的话,我们该怎么做呢?有人会想到TextView的一个属性 android:singleLine=”true”,我们添加进去试试看,效果是这样的
这里写图片描述
一行显示了,不过多了省略号后面的内容看不到了,显然这个也是不能解决我们问题的方案。下一步我们考虑另一个解决方案,再继续添加属性

android:ellipsize 设置当文字过长时,该控件该如何显示。有如下值设置:”start”—–省略号显示在开头;”end”——省略号显示在结尾;”middle”— 省略号显示在中间;”marquee” ——以跑马灯的方式显示(动画横向移动)

我们添加这个属性

    <TextView
    android:id="@+id/textview1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="从前山里有个庙,庙里有个老和尚和小和尚,老和尚给小和尚讲故事,讲什么故事呢..."
    android:singleLine="true"
    android:ellipsize="marquee"/>

省略号没了,但是还是没有预期的效果
这里写图片描述
原因在于跑马灯效果需要TextVIew获得当前的焦点(focus)。然而对于TextView这个控件来说,他的默认的Clickable,LongClickable,Focusable,FocusableInTouchMode这四个属性的值都是false,所以跑马灯效果也就不会出来了。为了解决这个问题我们就需要将我们的TextView得到焦点,android:focusable是针对于手机按键有效的,android:focusableInTouchMode是根据屏幕触摸决定的。这里主要涉及android:focusable和android:focusableInTouchMode这两个属性,即把它们都改为true。

    android:focusable="true"
    android:focusableInTouchMode="true"

这里写图片描述
这时出现跑马灯的效果了..不过这样还不算解决问题,因为试一下做两个相同的TextView的话,会发现第一个会动,第二个不会动..
于是采用另一个方案了,我们新建一个文件MarqueeTest.java,让MarqueeTest类继承于TestView,并实现它的三个构造函数和一个isFocused()方法

package com.example.marqueedemo;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;

public class MarqueeTest extends TextView{

    public MarqueeTest(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

    public MarqueeTest(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        // TODO Auto-generated constructor stub
    }

    public MarqueeTest(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }

    @Override
    public boolean isFocused() {
        // TODO Auto-generated method stub
        return true;  //!!!返回true
    }
}

要实现自定义类的控件,我们就把原来TextView改为我们自定义的TextView,如下

        <com.example.marqueedemo.MarqueeTest
        android:id="@+id/textview1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="从前山里有个庙,庙里有个老和尚和小和尚,老和尚给小和尚讲故事,讲什么故事呢..."
        android:singleLine="true"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"/>

        <com.example.marqueedemo.MarqueeTest
        android:id="@+id/textview2"
        android:layout_below="@id/textview1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="从前山里有个庙,庙里有个老和尚和小和尚,老和尚给小和尚讲故事,讲什么故事呢..."
        android:singleLine="true"
        android:ellipsize="marquee"
        android:focusable="true"
        android:layout_marginTop="10dp"
        android:focusableInTouchMode="true"/>

这个时候发现就行了,其实关键在于isFocused()方法,第一个TextView默认的已经得到了焦点,焦点在第一个TextView,第二个TextView就拿不到了。而我们自定义的话都能拿到焦点,所以也就都能实现跑马灯的效果了。
这里写图片描述
最后我们来总结一点实现跑马灯效果的步骤
1.在layout里面设置TextView三个属性
2.自定义一个TextView的子类,并实现它的三个构造函数,重载它的isFocused()方法
3.让TextView设为我们自定义的控件(类名+包名)

安卓跑马灯效果的实现与优化 跑马灯效果是一种常见的视觉特效,通常用于在有限的显示空间内循环展示文本信息。在Android开发中,实现跑马灯效果相对简单,但要做得既美观又高效,还需要对Android的视图系统和动画框架有一定的了解。自定义View是Android开发中实现复杂UI效果的基石。理解View的测量(measure)和绘制(draw)流程对于创建高效且美观的用户界面至关重要。自定义View的测量过程涉及确定View的大小,而绘制过程则涉及到在屏幕上绘制View的内容。在测量阶段,系统调用。 阅读详情

相关推荐

纯相位全息图优化算法综述

除此之外,还有许多用于减少斑点噪声的非迭代方法,例如:采用下采样掩膜的采样纯相位全息图(Sampled-Phase-only Hologram)方法、模式化相位掩膜(Patterned Phase-Only Hologram)方法、双相位方法(Double-Phase Method),以及使用非随机相位掩膜的方法(Random Phase-Free Method)等。迭代算法通常由一个对目标全息图的近似出发,经过一系列的重复操作不断优化这个近似全息图,直到该近似所得到的重建图像满足一定的误差要求;

ZhongKeWeiXing的博客 1427

Android TextView设置跑马灯效果

【前言】      在Textview设置的宽度有限,而需要显示的文字又比较多的情况下,往往需要给Textview设置跑马灯效果才能让用户完整地看到所有设置的文字,所以给TextView设置跑马灯效果的需求是很常见的 一、新手设置跑马灯效果 ...

逍遥阁 2万+

(53页PPT)新型智慧病房整体解决方案(附下载方式)

当前医疗场景存在三大核心矛盾:院内感染风险(如输液异常发现滞后)、信息孤岛现象(11类业务系统数据割裂)、管理效能不足(30%护理时间耗费在机械性工作)。实际案例显示,整体运营效率提升40%,患者满意度提高28个百分点,真正实现了"让技术有温度,让数据会说话"的价值理念。本文将从需求分析、技术架构、应用场景三个维度,深度剖析这份53页解决方案的创新价值与实践路径。床旁智能终端整合12项功能:包括体征自动采集(误差率<1%)、医嘱执行核对(100%条码校验)、智能床垫离床报警(响应时间3秒)等。

AI_data_cloud的博客 716

android 走马灯效果

&lt;TextView         android:id="@+id/myTextView"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:ellipsize="marquee"         android:mar...

qq85609655的博客 345

车载以太网入坑指南,从小白到懂哥的进阶之路【技术分享】

各位技术大佬们好!最近公司项目涉及到车载以太网,刚开始完全懵逼,花了大半个月时间各种查资料、测试设备,总算是摸清了门道。想着互联网上卧虎藏龙,肯定有不少大佬对这个技术感兴趣,所以写个帖子分享一下,顺便求各位大佬指点。

starelink的博客 1261

Synology-群晖(三)DSM7.0系统Video Station无法播放DTS eac3解决方案

群晖升级DSM7.0后,发现部分DTS eac3解码的视频无法通过Vedio Station 3.0.1-2067进行播放,提示不支持该格式视频,初步判断是无法加载ffmpeg解码导致,网上搜了很多处理办法都没有办法解决,最终在知乎上看到一片文章,按此办法解决了这个问题,目前经过验证,该方案完美支持最新版本Video Station 3.0.1-2067,验证系统为DSM7.0和DSM7.0.1,这里使用的NAS为 Vmware虚拟机 黑群晖 演示。大概步骤如下: 添加这个社群来源 http://p

weixin_45827203的博客 3万+

AndroidStudio002--TextView组件的使用及实现跑马灯效果

TextView组件的使用及实现跑马灯效果

干就完了 3093

SystemVue 链路预算、仿真分析步骤

使用SystemVue进行链路预算、频谱分析等,相对ADS更全面。

BeCourageable的博客 3835

Android TextView开启跑马灯和速度调节(一)

关于TextView的控件,我们都是展示文本数据为主,当然最近也是用到了跑马灯的效果,网上有很多方式,我自己也是找了一份很实在的教程,自己记录一下实现的步骤,Recycleview 的item 里面TextView也一样可以用这种方式,道理一样的。 效果图如下: 重写 SpanTextView 继承 TextView 上码: package com.example...

qq_36771930的博客 4119

带你一分钟了解电感与磁珠的区别

在电路设计中会经常使用到电感和磁珠,虽然在电路中的作用有所不同,但它们都属于磁性电子元器件,本文简单介绍下电感和磁珠的区别电感和磁珠电感和磁珠的结构主要由磁性材料金属线圈和外壳组成,具体结构如下图所示:电感磁珠结构图电感其实是金属线圈缠绕在磁芯上,而磁珠是在内部折叠后外围包裹着铁氧体磁性材料。电感器(Inductor)又称扼流器、电抗器、动态电抗器是储能器件,能够把电能转化为磁能而存储起来的元件。磁珠则是能量转换(消耗)器件,将流过他的高频信号以热能的形式消耗掉。

攻城狮鹏哥 1409

Linux内核配置选项详解及编译过程

在内核编译完成后,可以通过重启系统并选择新编译的内核来使用它。可以在该菜单下选择需要编译进内核的设备驱动,也可以选择将设备驱动编译为模块。可以在该菜单下选择需要编译进内核的设备驱动,也可以选择将设备驱动编译为模块。可以选择需要的调试选项,并根据需要启用或禁用相应的功能。可以选择需要的文件系统类型,并根据需要启用或禁用相应的选项。可以选择需要的网络协议和功能,并根据需要启用或禁用相应的选项。可以选择需要的调试选项,并根据需要启用或禁用相应的功能。可以选择需要的文件系统类型,并根据需要启用或禁用相应的选项。

TechGlide的博客 746

TextView的跑马灯效果以及TextView的一些属性

TextView应该是用的最广的控件了,要是这句话不对我直播吃翔,这几天的项目用到跑马灯,居然忘记怎么设置了,还要Google才能解决,看来虽然很基本的东西,但是用的少还是容易遗忘,所以我决定把它写下来加深点印象,方便以后查找 具体效果 : 布局文件 [html] view plain copy RelativeLayout xmlns:and

中国程序员的希望 785

如何构建一个 AI 驱动的数据分析系统

在现代数据分析中,将 AI 引入数据分析系统中可以极大提升效率和自动化程度。本文将从架构设计、工具选择、实现步骤等多个方面进行详细说明,帮助你构建一个 AI 驱动的数据分析系统。

晴天彩虹雨的博客 703

Android三种方式实现TextView跑马灯效果

Android三种方式实现TextView跑马灯效果作为一枚程序猿,能把自己学到的那点可怜的技术记录下来并分享出来真的是件身心愉悦的事情。 以下记录三种方式实现TextView文字滚动的效果。 第一种:原生的android自带的跑马灯效果。直接申明TextView属性。 第二种:改造TextView,自定义View继承的TextView,利用Runnable循环调用onDraw()方法更新视图

琼小资的专栏 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Android学习笔记-TextView实现跑马灯效果

基本视图组件TextView<TextView android:id="@+id/view1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我是一个TextView基本视图组件" android:textSize="28sp"

YiShi's Blog 1714

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

玩转Android 之 TextView常用特效

玩转Android 之 TextView常用特效 8人收藏此文章, 我要收藏发表于11个月前 , 已有3099次阅读 共1个评论 暑期大学生博客分享大赛 - 2011 Android 成长篇     本文参加第二届Google大学生暑期博客分享大赛     TextView是最常用的Android控件之一,显示文字时的首选,然而很多人都不满足于,TextView默认的显示效果,

yy228的专栏 3440

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Android学习总结——TextView跑马灯效果

Android系统中TextView实现跑马灯效果,必须具备以下几个条件: 1、android:ellipsize=”marquee” 2、TextView必须单行显示,即内容必须超出TextView大小 3、TextView要获得焦点才能滚动 实现代码: xml: android:singleLine="true" //单行显示 android:ellipsize="ma...

weixin_30919571的博客 243

TextView跑马灯

用TextView实现简单的跑马灯西效果

进击的小怪兽 3134

笔记6 TextView 跑马灯效果

image - 想要获取图片通过src(图片不会变形) 想要设置背景用background(图片会变形)。 方法一:通过设置android:singleLine、android:ellipsis、android:focusable、android:focusableInTouchMode这四个属性来实现跑马灯效果     android:id="@+id/tv1"

丶ban 309

Android跑马灯效果实现的三种方式

1、使用系统默认的跑马灯效果 实现方法:  (1)在xml文件加入一个TextView,并设置属性如下,其中红色的部分是最关键部分  android:id="@+id/textView_showmsg_circle" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_

1.01的365次方的专栏 1719

android textView文字过长,省略显示

Android之TextView实现文字过长时省略部分或者滚动显示 发布时间:2011-10-08   信息来源:青岛达内 TextView中有个ellipsize属性,作用是当文字过长时,该控件该如何显示,解释如下: 1.android:ellipsize=”start”—–省略号显示在开头 2.android:ellipsize=”end”——省略号显示在结

sonicliji的专栏 1万+

TextView实现跑马灯效果

当要输入的文字长度大于TextView本身的长度时,就可以考虑用跑马灯的方式来显示文字。         android:id="@+id/tvCWJ"          android:layout_width="fill_parent"          android:layout_height="wrap_content"          android:scrollbars="ver

silvia0427的专栏 446

textview 跑马灯

textview 跑马灯效果,用XML 方式实现了,但是一旦执行 setText();  跑马灯效果就消失了       总结一下跑马灯的实现效果,网上比较流行的有两种,测试过了都可以实现文字滚动效果,建议使用第一种,因为可以更好地控制文字滚动速度、样式、字体等属性,第二种方法,还没有找到控制的方法!     第一种: 控件类:AutoScrollTextView 继承了TextVi

765

TextView跑马灯效果

三种方式实现TextView文字滚动的效果。  第一种:原生的Android自带的跑马灯效果。直接申明TextView属性。  第二种:改造TextView,自定义View继承的TextView,利用Runnable循环调用onDraw()方法更新视图。  第三种:利用HorizontalScrollView控件的特性,里面加个TextView,通过定时器让HorizontalScrollV

hq_lang的博客 935

TextView: android:ellipsize="marquee" 跑马灯效果无效的问题

今天练习的时候想实现一个文字的跑马灯效果,本来想自己手动实现的,不过突然想起来android里的TextView属性似乎自带了这个效果,叫:android:ellipsize,平时都是把它的属性值设置成end,表示文字超出了一定的范围就显示省略号,如果要实现跑马灯的效果,就需要将它的属性值设置成marquee,就是: android:ellipsize="marquee" ...

weixin_30501857的博客 459
上一篇: Java之详解坦克大战游戏(五)
下一篇: Android之制作短信发送器
Jacky-Summer
博客等级 码龄11年 172粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值