android 跑马灯
跑马灯 View,支持自定义跑马灯 ItemView。
效果图

使用
Gradle:
compile 'com.gongwen:marqueelibrary:1.1.2'
属性
MarqueeView 属性
| Attribute 属性 | Description 描述 |
|---|---|
| flipInterval | 翻页时间间隔 |
| marqueeAnimDuration | 动画执行时间 |
| inAnimation | marquee in 动画 |
| outAnimation | marquee out 动画 |
| autoStart | 动画是否自动开始 |
| animateFirstView | 当前 ChildView 第一次是否动画展示 |
SimpleMarqueeView 属性(支持 MarqueeView 所有属性及以下属性)
| Attribute 属性 | Description 描述 |
|---|---|
| smvTextSize | 文字大小 |
| smvTextColor | 文字颜色 |
| smvTextGravity | 文字位置 |
用法一:使用 SimpleMarqueeView 和 SimpleMF
XML
<com.gongwen.marqueen.SimpleMarqueeView
android:id="@+id/simpleMarqueeView"
android:layout_width="match_parent"
android:layout_height="40dp"
android:flipInterval="2500"
android:inAnimation="@anim/in_right"
android:outAnimation="@anim/out_left"
app:marqueeAnimDuration="2000"
app:smvTextColor="@color/white"
app:smvTextGravity="center_vertical"
app:smvTextSize="15sp"></com.gongwen.marqueen.SimpleMarqueeView>
设置数据
SimpleMarqueeView marqueeView = (SimpleMarqueeView) findViewById(R.id.marqueeView);
final List<String> datas = Arrays.asList("《赋得古原草送别》", "离离原上草,一岁一枯荣。", "野火烧不尽,春风吹又生。", "远芳侵古道,晴翠接荒城。", "又送王孙去,萋萋满别情。");
SimpleMF<String> marqueeFactory = new SimpleMF(this);
marqueeFactory.setData(datas);
marqueeView.setMarqueeFactory(marqueeFactory);
marqueeView.startFlipping();
设置事件监听
marqueeFactory.setOnItemClickListener(new MarqueeFactory.OnItemClickListener<TextView, String>() {
@Override
public void onItemClickListener(MarqueeFactory.ViewHolder<TextView, String> holder) {
Toast.makeText(MainActivity.this, holder.data, Toast.LENGTH_SHORT).show();
}
});
用法二:自定义 MarqueeFactory 来设置不同类型 ItemView
XML
<com.gongwen.marqueen.MarqueeView
android:id="@+id/marqueeView4"
android:layout_width="match_parent"
android:layout_height="40dp"
android:flipInterval="2500"
android:inAnimation="@anim/in_right"
android:outAnimation="@anim/out_left"
app:marqueeAnimDuration="2000"></com.gongwen.marqueen.MarqueeView>
自定义 MarqueeFactory
继承自 MarqueeFactory,通过泛型指定 ItemView 类型以及 ItemData 类型,之后实现 generateMarqueeItemView 方法,提供 ItemView,并为 ItemView 设置数据即可。
例如:
public class ComplexViewMF extends MarqueeFactory<RelativeLayout, ComplexItemEntity> {
private LayoutInflater inflater;
public ComplexViewMF(Context mContext) {
super(mContext);
inflater = LayoutInflater.from(mContext);
}
@Override
public RelativeLayout generateMarqueeItemView(ComplexItemEntity data) {
RelativeLayout mView = (RelativeLayout) inflater.inflate(R.layout.complex_view, null);
((TextView) mView.findViewById(R.id.title)).setText(data.getTitle());
((TextView) mView.findViewById(R.id.secondTitle)).setText(data.getSecondTitle());
((TextView) mView.findViewById(R.id.time)).setText(data.getTime());
return mView;
}
}
设置数据和事件监听用法同上
重影问题可参考以下解决方案(参考自这里)
@Override
public void onStart() {
super.onStart();
marqueeView.startFlipping();
}
@Override public void onStop() { super.onStop(); marqueeView.stopFlipping(); }
License
Copyright (C) 2016 [email protected]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
智能推荐
Android Studio实现跑马灯文本(MarqueeText)
写在前面的话:每一个实例的代码都会附上相应的代码片或者图片,保证代码完整展示在博客中。最重要的是保证例程的完整性!!!方便自己也方便他人~欢迎大家交流讨论~ 1.新建一个项目,在.xml文件中添加两个TextView控件 在string.xml增加文本内容 再添加四个重要属性 android:ellipsize="marquee" android:focusable="...
Android TextView实现垂直滚动的跑马灯效果
我们知道TextView水平方向可以设置跑马灯效果,可是垂直方向上需要跑马灯效果该如何设置呢? 先看下效果图: 附上源码: VerticalScrollTextView...
Android中设置文字跑马灯效果不动
在跟着B站Up主天哥在奔跑,学习Android的TextView控件时,想要实现一个跑马灯效果,但是按照视频中的代码发现文字是不会动的。视频中的代码如下: 然后经过弹幕的提醒,可能是跑马效果所需要的焦点被其他控件抢走了,于是,在onCreate函数里添加下面两行代码 这两行代码作用是根据id,找到控件,然后将焦点设置到该控件。经过编译运行之后,实现了文字跑马灯的效果。...
Android 单行文本的跑马灯
最近项目有一个实现跑马灯效果的需求,需求很简单,就是单行文本(只有几个字)无限循环的效果,最开始也是百度和Github上找,找寻半天不是有BUG就是无法达到需求,最后在一位博主jixiaolong<[email protected]>的github上借鉴了他所写的自定义View,该博主的自定义控件是作为多行文本使用的,但是该控件也有BUG,就是多行文本切换的太不自然,或者说,实际中...
Android Studio开发实战练习--跑马灯效果
先看效果: 代码分为两个部分:布局文件和activity代码 1.布局文件中,TextView下面这几个属性必须如下设置: 2.activity必须设置TextView.setSelected(true) 下面是完整代码 ...
猜你喜欢
Android文本视图TextVIew之跑马灯效果
跑马灯用到的属性和方法说明 XML中的属性 说明 singleLine 指定文本是否单行显示 ellipsize 指定文本超出范围后的省略方式,取值说明见下表 focusable 指定是否获得焦点,跑马灯设置为true focusableInTouchMode 指定触摸时是否获得焦点,跑马灯设置为true 省略方式取值说明 XML中的省略方式 说明 start 省略号在开头 middle 省略号在...
android TV实现textview跑马灯效果
一、跑马灯实现方式: 1.常用方式: 我们直接Google “跑马灯实现方式”可找到许多许多,但是实现的大多数都是直接获取textview,在属性中设置如下参数: 参数讲解: ellipsize:表示textview以一行内容显示的时候,以何种方式显示,总共有五种方式: start:将文字开头省略,用符号"..."代替。 middle:将文字中间部分省略...
Layui parent.layui.open弹框之Iframe 传值处理
Layui open弹框获取值的方法 介绍:Layui 弹框之Iframe传值处理 我的想法 解决 子页面 获取 父页面方法以及元素。 上代码,看图片 原创作品,欢迎来讨论! 介绍:Layui 弹框之Iframe传值处理 本人在使用到layui的iframe版 ,里面使用到了弹框 。 普通弹框:layui.open(); 像这种传递值都没什么问题 , 子页面获取父页面值 或者父页面获取子页面值 全...
外置Tomcat无法使用devtools实现热部署
练手的项目每次有源码或者页面更新都需要重新启动,不能忍,热部署走一波 这个项目是用外置Tomcat启动的 项目层级目录 模块依赖关系:service 依赖于 model 依赖于 api (启动类在service模块中) 引入devTools依赖,确定相关idea配置无误后,发现热部署没有生效 得出结论: devTools无法对使用对外置的tomcat运行的项目生效 于是在网上搜索外置tomcat项...
C++跨平台库QT学习7 使用UnitTest单元测试入门
C++跨平台库QT学习7 使用UnitTest单元测试入门 一、新建子目录项目 二、新建控制台项目 三、新建测试用例子目录项目 mycalctest.pro文件内容: 测试用例文件test_mycalctesttest.cpp 在子项目`mycalctest`点右键、运行 一、新建子目录项目 在QT点击菜单 文件-新建文件或项目-其他项目-子目录项目: 二、新建控制台项目 然后继续建一个子项目: ...
