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向上滚动(模仿滚动文字广告效果)相关推荐

  1. Android TextView竖直滚动文字广告效果

    项目需要 TextView 单行竖直滚动文字广告效果,很简单的功能在网上找了很多没有想要的效果.开始找到的<android TextView 垂直自动滚动>,歌词效果,对代码处理一下变成单 ...

  2. android文字多行滚动显示,Android TextView多行文本滚动实现

    Android中我们为了实现文本的滚动可以在ScrollView中嵌入一个TextView,其实TextView自己也可以实现多行滚动的,毕竟ScrollView必须只能有一个直接的子类布局.只要在l ...

  3. jquery banner广告图片左右切换,模仿实现支付宝广告效果

    原文:jquery banner广告图片左右切换,模仿实现支付宝广告效果 源代码下载地址:http://www.zuidaima.com/share/1771186023091200.htm 由最代码 ...

  4. Android TextView多行文本滚动实现

    Android中我们为了实现文本的滚动可以在ScrollView中嵌入一个TextView,其实TextView自己也可以实现多行滚动的,毕竟ScrollView必须只能有一个直接的子类布局.只要在l ...

  5. android 自动上下翻滚,如何让Android TextView自动向下滚动到最后?

    我有一个TextView,其内容从文本文件中复制.现在每次将文本文件的内容加载到TextView中时,我都希望它自动向下滚动到最后. 这是我的布局XML文件的部分内容: android:id=&quo ...

  6. Android文字广告(Textview上下滚动),使用TextSwitcher控件的完整实现

    实现步骤: a.xml布局 <TextSwitcherandroid:id="@+id/textSwitcher"android:layout_width="mat ...

  7. Android TextView文字横向自动滚动(跑马灯)

    TextView实现文字滚动需要以下几个要点: 1.文字长度长于可显示范围:android:singleLine="true" 2.设置可滚到,或显示样式:android:elli ...

  8. android文字自动滚动,Android TextView文字横向自动滚动(跑马灯)

    TextView实现文字滚动需要以下几个要点: 1.文字长度长于可显示范围:android:singleLine="true" 2.设置可滚到,或显示样式:android:elli ...

  9. Android:TextView 自动滚动(跑马灯) (转)

    Android:TextView 自动滚动(跑马灯) TextView实现文字滚动需要以下几个要点: 1.文字长度长于可显示范围:android:singleLine="true" ...

最新文章

  1. UpdateProgress使用
  2. HBase数据备份及恢复(导入导出)的常用方法
  3. Spring Data JPA 从入门到精通~方法的查询策略的属性表达式
  4. oracle层次化查询
  5. ROS笔记(17) Gazebo
  6. 计算机二级选择题40分,2017年计算机二级选择题及答案
  7. 【机器人学与计算机视觉基础】(一)位置与姿态描述 1 位姿的抽象符号表示
  8. JS_js数组倒序排列、字符串数组转为数字数组,反转数组/字符串/数字
  9. 微信戴圣诞帽的一个简易实现程序
  10. 扫描仪显示计算机繁忙或故障,打印机无法扫描怎么回事 游戏设备问题解决分享!...
  11. 为 VS 2012 打包 MSDN 在线文档为磁盘安装源
  12. 数据挖掘——关联分析基础介绍(上)
  13. 【云原生 | Kubernetes 系列】--Gitops持续交付 Tekton Pipeline使用进阶(pvc和Results)
  14. maven 打包把依赖jar打进去
  15. lm283_飞利浦Tango LED泛光灯BVP283-普照网
  16. 这些年正Android - 身在他乡
  17. 基于SpringBoot+Mybaits框架开发的OA自动化办公系统Java源码
  18. WebGIS开发入门必备
  19. 计算机应用能力校本培训方案,小学教师信息技术应用能力校本培训实施方案
  20. [YOLOv7/YOLOv5系列改进NO.44]融入适配GPU的轻量级 G-GhostNet

热门文章

  1. Dockerfile构建Springboot镜像
  2. android nv21,NV21与I420
  3. 完全卸载nvidia驱动
  4. 第05章 Go语言函数(Go语言func)
  5. OSDI 2014 paper reading
  6. G. Minimal Coverage(dpdd)
  7. 2021牛客寒假算法基础集训营4 F. 魏迟燕的自走棋
  8. 文本两端对齐及将表单打印在A4上
  9. 免费的编程中文书籍索引
  10. 电脑连接电视html,电脑HDMI连接电视无信号的解决方法