热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

手机卫士学习06-自定义滚动的TextView实现走马灯效果

我们要使用自定义TextView实现走马灯滚动效果,如图:对于TextViewandroid:singleLine"true"android:el

我们要使用自定义TextView实现走马灯滚动效果,如图:




对于TextView
        android:singleLine="true"
        android:ellipsize="marquee"
设置走马灯的效果,默认是不行的。

对于Button
        android:singleLine="true"
        android:ellipsize="marquee"
        android:focusableInTouchMode="true"
设置默认获得焦点是可以实现走马灯滚动的效果的,但是在TextView这样设置还是达不到预期效果。

所以,想要TextView实现走马灯滚动字符串的效果,需要我们自定义一个TextView天生就有焦点。


创建一个类FocusedTextView继承TextView,并复写三个构造方法和isFocused方法
在isFocused方法return中设置true
return true;这样自定义的TextView默认就有了焦点,设置到布局文件中,就可以实现走马灯效果,不用设置 
android:focusableInTouchMode="true"
只需要
        android:singleLine="true"
        android:ellipsize="marquee"
酱紫:
            android:singleLine="true"
        android:ellipsize="marquee"
        android:textSize="20sp"
        android:layout_
        android:layout_
        android:text="快来下载最新版本啊,下载就送好吃的啊啊啊啊!快来下载最新版本啊,下载就送好吃的啊啊啊啊!"
        />

自定义滚动的TextView就这样实现了。



activity_home.xml:


android:layout_
android:layout_
android:orientation="vertical" >

android:layout_
android:layout_
android:background="#8866ff00"
android:gravity="center"
android:text="功能列表"
android:textSize="25sp" />

android:singleLine="true"
android:ellipsize="marquee"
android:textSize="20sp"
android:layout_
android:layout_
android:text="快来下载最新版本啊,下载就送好吃的啊啊啊啊!快来下载最新版本啊,下载就送好吃的啊啊啊啊!"
/>

android:verticalSpacing="15dip"
android:id="@+id/gv_home_list"
android:layout_
android:layout_
android:layout_marginTop="35dip"
android:numColumns="3" />



FocusedTextView.java:

package com.itheima.mobilesafe.ui;

import android.content.Context;
import android.util.AttributeSet;
import android.view.ViewDebug.ExportedProperty;
import android.widget.TextView;

/**
* 自定义可以滚动的TextView
* @author Administrator
*
*/
public class FocusedTextView extends TextView {

public FocusedTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}

public FocusedTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}

public FocusedTextView(Context context) {
super(context);
}

/**
* 默认有焦点
*/
@Override
@ExportedProperty(category = "focus")
public boolean isFocused() {
return true;
}
}




推荐阅读
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • 本文介绍了pack布局管理器在Perl/Tk中的使用方法及注意事项。通过调用pack()方法,可以控制部件在显示窗口中的位置和大小。同时,本文还提到了在使用pack布局管理器时,应注意将部件分组以便在水平和垂直方向上进行堆放。此外,还介绍了使用Frame部件或Toplevel部件来组织部件在窗口内的方法。最后,本文强调了在使用pack布局管理器时,应避免在中间切换到grid布局管理器,以免造成混乱。 ... [详细]
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • 人脸检测 pyqt+opencv+dlib
    一、实验目标绘制PyQT界面,调用摄像头显示人脸信息。在界面中,用户通过点击不同的按键可以实现多种功能:打开和关闭摄像头, ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • 我用Tkinter制作了一个图形用户界面,有两个主按钮:“开始”和“停止”。请您就如何使用“停止”按钮终止“开始”按钮为以下代码调用的已运行功能提供建议 ... [详细]
  • 第一步:PyQt4Designer设计程序界面该部分设计类同VisvalStudio内的设计,改下各部件的objectName!设计 ... [详细]
  • 如何用Matlab快速画出带有3D渲染效果的复杂曲面
    简要地介绍了一下如何用Matlab快速画出带有3D渲染效果的复杂曲面图,包括三维曲面绘制、光线、材质、着色等等控制,以及如何 ... [详细]
author-avatar
笑如夏风_503
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有