android TextView向上滚动(模仿滚动文字广告效果)
android文字向上滚动效果没有自带的控件,这就需要开发者根据算法精确按照时间和坐标来实现TextView控件的向上移动,从网上找过几个框架,基本都会有bug,于是自己写了一个自定义控件,来实现TextView平滑向上滚动的文字效果
首先,自定义控件:ScrollBanner.java
public class ScrollBanner extends LinearLayout {private TextView mBannerTV1;private TextView mBannerTV2;private Handler handler;private boolean isShow=false;private int startY1, endY1, startY2, endY2;private Runnable runnable;private List<String> list;private int position = 0;private int offsetY = 100;public ScrollBanner(Context context) {this(context, null);}public ScrollBanner(Context context, AttributeSet attrs) {this(context, attrs, 0);}public ScrollBanner(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);View view = LayoutInflater.from(context).inflate(R.layout.view_scroll_banner, this);mBannerTV1 = (TextView) view.findViewById(R.id.tv_banner1);mBannerTV2 = (TextView) view.findViewById(R.id.tv_banner2);handler = new Handler();runnable = new Runnable() {@Overridepublic void run() {isShow = !isShow;if (position == list.size()-1) {position = 0;}if (isShow) {mBannerTV1.setText(list.get(position++));mBannerTV2.setText(list.get(position));} else {mBannerTV2.setText(list.get(position++));mBannerTV1.setText(list.get(position));}startY1 = isShow ? 0 : offsetY;endY1 = isShow ? -offsetY : 0;ObjectAnimator.ofFloat(mBannerTV1, "translationY", startY1, endY1).setDuration(300).start();startY2 = isShow ? offsetY : 0;endY2 = isShow ? 0 : -offsetY;ObjectAnimator.ofFloat(mBannerTV2, "translationY", startY2, endY2).setDuration(300).start();handler.postDelayed(runnable, 3000);}};}public List<String> getList() {return list;}public void setList(List<String> list) {this.list = list;}public void startScroll() {handler.post(runnable);}public void stopScroll() {handler.removeCallbacks(runnable);}
}
布局文件 view_scroll_banner.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"android:paddingLeft="10dp"android:paddingTop="5dp"android:paddingBottom="5dp"><TextView
android:id="@+id/tv_banner1"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_centerVertical="true"android:ellipsize="end"android:singleLine="true"android:textColor="#FFFF7B00"android:textSize="11sp"/><TextView
android:id="@+id/tv_banner2"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_centerVertical="true"android:ellipsize="end"android:singleLine="true"android:textColor="#FFFF7B00"android:textSize="11sp"/>
</RelativeLayout>
主界面布局引用如下控件:
<com.example.view.ScrollBannerandroid:id="@+id/sb_demographic"android:layout_width="match_parent"android:layout_height="wrap_content"/>
在将要实现该效果的页面调用以下方法即可
ScrollBanner sb_demographic;sb_demographic = (ScrollBanner) rootView.findViewById(R.id.sb_demographic);List<String> demographicsList=new ArrayList<String>();for(int i=0;i<20;i++){demographicsList.add("第"+i+"条内容");}sb_demographic.setList(demographicsList);sb_demographic.startScroll();
android TextView向上滚动(模仿滚动文字广告效果)相关推荐
- Android TextView竖直滚动文字广告效果
项目需要 TextView 单行竖直滚动文字广告效果,很简单的功能在网上找了很多没有想要的效果.开始找到的<android TextView 垂直自动滚动>,歌词效果,对代码处理一下变成单 ...
- android文字多行滚动显示,Android TextView多行文本滚动实现
Android中我们为了实现文本的滚动可以在ScrollView中嵌入一个TextView,其实TextView自己也可以实现多行滚动的,毕竟ScrollView必须只能有一个直接的子类布局.只要在l ...
- jquery banner广告图片左右切换,模仿实现支付宝广告效果
原文:jquery banner广告图片左右切换,模仿实现支付宝广告效果 源代码下载地址:http://www.zuidaima.com/share/1771186023091200.htm 由最代码 ...
- Android TextView多行文本滚动实现
Android中我们为了实现文本的滚动可以在ScrollView中嵌入一个TextView,其实TextView自己也可以实现多行滚动的,毕竟ScrollView必须只能有一个直接的子类布局.只要在l ...
- android 自动上下翻滚,如何让Android TextView自动向下滚动到最后?
我有一个TextView,其内容从文本文件中复制.现在每次将文本文件的内容加载到TextView中时,我都希望它自动向下滚动到最后. 这是我的布局XML文件的部分内容: android:id=&quo ...
- Android文字广告(Textview上下滚动),使用TextSwitcher控件的完整实现
实现步骤: a.xml布局 <TextSwitcherandroid:id="@+id/textSwitcher"android:layout_width="mat ...
- Android TextView文字横向自动滚动(跑马灯)
TextView实现文字滚动需要以下几个要点: 1.文字长度长于可显示范围:android:singleLine="true" 2.设置可滚到,或显示样式:android:elli ...
- android文字自动滚动,Android TextView文字横向自动滚动(跑马灯)
TextView实现文字滚动需要以下几个要点: 1.文字长度长于可显示范围:android:singleLine="true" 2.设置可滚到,或显示样式:android:elli ...
- Android:TextView 自动滚动(跑马灯) (转)
Android:TextView 自动滚动(跑马灯) TextView实现文字滚动需要以下几个要点: 1.文字长度长于可显示范围:android:singleLine="true" ...
最新文章
- UpdateProgress使用
- HBase数据备份及恢复(导入导出)的常用方法
- Spring Data JPA 从入门到精通~方法的查询策略的属性表达式
- oracle层次化查询
- ROS笔记(17) Gazebo
- 计算机二级选择题40分,2017年计算机二级选择题及答案
- 【机器人学与计算机视觉基础】(一)位置与姿态描述 1 位姿的抽象符号表示
- JS_js数组倒序排列、字符串数组转为数字数组,反转数组/字符串/数字
- 微信戴圣诞帽的一个简易实现程序
- 扫描仪显示计算机繁忙或故障,打印机无法扫描怎么回事 游戏设备问题解决分享!...
- 为 VS 2012 打包 MSDN 在线文档为磁盘安装源
- 数据挖掘——关联分析基础介绍(上)
- 【云原生 | Kubernetes 系列】--Gitops持续交付 Tekton Pipeline使用进阶(pvc和Results)
- maven 打包把依赖jar打进去
- lm283_飞利浦Tango LED泛光灯BVP283-普照网
- 这些年正Android - 身在他乡
- 基于SpringBoot+Mybaits框架开发的OA自动化办公系统Java源码
- WebGIS开发入门必备
- 计算机应用能力校本培训方案,小学教师信息技术应用能力校本培训实施方案
- [YOLOv7/YOLOv5系列改进NO.44]融入适配GPU的轻量级 G-GhostNet