效果图:

添加工具类 VerticalTextview :

import android.content.Context;
import android.graphics.Color;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.View;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.TextSwitcher;
import android.widget.TextView;
import android.widget.ViewSwitcher;import java.util.ArrayList;/*** Name: 吴庆森* Date: 2019/4/18* Mailbox: 1243411677@qq.com* Describe:上下滚动的TextView*/
public class VerticalTextview extends TextSwitcher implements ViewSwitcher.ViewFactory  {private static final int FLAG_START_AUTO_SCROLL = 0;private static final int FLAG_STOP_AUTO_SCROLL = 1;private float mTextSize = 25 ;private int mPadding = 5;private int textColor = Color.BLACK;/*** @param textSize 字号* @param padding 内边距* @param textColor 字体颜色*/public void setText(float textSize,int padding,int textColor) {mTextSize = textSize;mPadding = padding;this.textColor = textColor;}private OnItemClickListener itemClickListener;private Context mContext;private int currentId = -1;private ArrayList<String> textList;private Handler handler;public VerticalTextview(Context context) {this(context, null);mContext = context;}public VerticalTextview(Context context, AttributeSet attrs) {super(context, attrs);mContext = context;textList = new ArrayList<String>();}public void setAnimTime(long animDuration) {setFactory(this);Animation in = new TranslateAnimation(0, 0, animDuration, 0);in.setDuration(animDuration);in.setInterpolator(new AccelerateInterpolator());Animation out = new TranslateAnimation(0, 0, 0, -animDuration);out.setDuration(animDuration);out.setInterpolator(new AccelerateInterpolator());setInAnimation(in);setOutAnimation(out);}/*** 间隔时间* @param time*/public void setTextStillTime(final long time){handler =new Handler() {@Overridepublic void handleMessage(Message msg) {switch (msg.what) {case FLAG_START_AUTO_SCROLL:if (textList.size() > 0) {currentId++;setText(textList.get(currentId % textList.size()));}handler.sendEmptyMessageDelayed(FLAG_START_AUTO_SCROLL,time);break;case FLAG_STOP_AUTO_SCROLL:handler.removeMessages(FLAG_START_AUTO_SCROLL);break;}}};}/*** 设置数据源* @param titles*/public void setTextList(ArrayList<String> titles) {textList.clear();textList.addAll(titles);currentId = -1;}/*** 开始滚动*/public void startAutoScroll() {handler.sendEmptyMessage(FLAG_START_AUTO_SCROLL);}/*** 停止滚动*/public void stopAutoScroll() {handler.sendEmptyMessage(FLAG_STOP_AUTO_SCROLL);}@Overridepublic View makeView() {TextView t = new TextView(mContext);t.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);t.setMaxLines(1);t.setPadding(mPadding, mPadding, mPadding, mPadding);t.setTextColor(textColor);t.setTextSize(mTextSize);t.setClickable(true);t.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {if (itemClickListener != null && textList.size() > 0 && currentId != -1) {itemClickListener.onItemClick(currentId % textList.size());}}});return t;}/*** 设置点击事件监听* @param itemClickListener*/public void setOnItemClickListener(OnItemClickListener itemClickListener) {this.itemClickListener = itemClickListener;}/*** 轮播文本点击监听器*/public interface OnItemClickListener {/*** 点击回调* @param position 当前点击ID*/void onItemClick(int position);}}
 

activity_main.xml 文件中代码为:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:orientation="vertical"><com.example.languagemore.VerticalTextviewandroid:id="@+id/textview"android:layout_width="match_parent"android:layout_height="wrap_content" />
</LinearLayout>

MainActivity 中的代码:

public class MainActivity extends AppCompatActivity {private ArrayList titleList;private VerticalTextview mTextview;@Overrideprotected void onResume() {super.onResume();if (mTextview != null) {mTextview.startAutoScroll();}}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();//开始mTextview.startAutoScroll();}private void init() {mTextview = (VerticalTextview) findViewById(R.id.textview);titleList = new ArrayList<>();titleList.add("2.4版本更新");titleList.add("哈哈哈哈哈哈");titleList.add("水水水水水水水水水水");mTextview.setTextList(titleList);mTextview.setText(25, 5, Color.RED);//设置属性mTextview.setTextStillTime(3000);//设置停留时长间隔mTextview.setAnimTime(300);//设置进入和退出的时间间隔mTextview.setOnItemClickListener(new VerticalTextview.OnItemClickListener() {@Overridepublic void onItemClick(int position) {Toast.makeText(MainActivity.this, "点击了 : " + titleList.get(position), Toast.LENGTH_SHORT).show();}});}@Overrideprotected void onPause() {super.onPause();mTextview.stopAutoScroll();}
}

这样就可以达到上图中的效果了。

Android上下翻滚的公告相关推荐

  1. jquery实现上线翻滚效果公告

    //样式文件: <style type="text/css">* {margin: 0;padding: 0;}.scrollNews {width: 100%;hei ...

  2. android 随机翻滚字幕,自定义跑马灯字幕滚动

    当遇到一个通过横幅滚动文字来做公告通知的时候,一开始想着用TextView自带的效果 android:ellipsize="marquee",但发现有很多限制条件并不能满足需求.网 ...

  3. 50个Android应用!Win11支持运行了

    文 | 局长 出品 | OSC开源社区(ID:oschina2013) Android 应用现已支持在 Windows 11 上运行. 微软今日宣布,美国地区 Windows 11 Beta 通道的预 ...

  4. Android 仿京东快报

    我们常用的京东有一个非常好看的效果: 首页的京东快播有一个无限轮播的公告栏,先看效果: 公告内容大概每3s从中间向上滑出,同时下一条内容从底部向上滑动进入.整个过程还伴随有内容的渐变消失,动画效果很流 ...

  5. android最新版本 note8,别等了 三星S8和Note 8确认无缘升级Android 10系统

    3月2日,根据SamMobile报道,三星Galaxy S8以及Galaxy Note 8确认将不会获得Android 10的官方升级包.一般来说,三星会针对旗下智能手机提供两次系统大幅升级的机会,三 ...

  6. 360 android 漏洞,360发布安全报告 99.99%的安卓手机存在安全漏洞

    原标题:360发布安全报告 99.99%的安卓手机存在安全漏洞 [CNMO新闻]近日360互联网安全中心发布"2018年度安卓系统安全性生态环境研究报告",报告数据来自" ...

  7. .net 基于Jenkins的自动构建系统开发

    先让我给描述一下怎么叫一个自动构建或者说是持续集成 : 就拿一个B/S系统的合作开发来说,在用SVN版本控制的情况下,每个人完成自己代码的编写,阶段性提交代码,然后测试-修改,最后到所有代码完工,进行 ...

  8. uniapp跳转第三方地图导航

    1.uniapp小程序中跳转第三方地图 address: function(item) {const address = item.address;const latitude = Number(it ...

  9. 蓝牙App系列漏洞原理分析与漏洞利用

    蓝牙App系列漏洞原理分析与漏洞利用 作者: heeeeen 本文系转载,目的是学习,如有侵权,请联系删除 转载出处:http://www.ms509.com/ 蓝牙App漏洞系列分析之一CVE-20 ...

最新文章

  1. BoneCP学习笔记
  2. netty 之 telnet HelloWorld 详解
  3. 【白话机器学习】算法理论+实战之LightGBM算法
  4. c语言程序设计江宝钏第九章,C语言程序设计 (江宝钏 著) 清华大学出版社 第9章习题答案1...
  5. 安装ElasticSearch过程遇到的坑
  6. 虚拟专题:知识图谱 | 基于网络防御知识图谱的0day攻击路径预测方法
  7. caffe boost cuda __float128 undefined
  8. Vue method与computed的区别
  9. 为了健康,别做这20件事
  10. 直播系统 java_直播系统软件定制开发
  11. 两年软件开发工作总结及未来展望
  12. 浅谈标签概念及应用场景
  13. selenium web自动化判断页面元素加载完毕
  14. flash 批量编译发布fla 文件
  15. html浪漫恋爱情侣表白网站模板-html创意情侣表白网站整站源码
  16. 【pcl-ros操作】rostopic、rosmsg、rosbag常用命令
  17. veket linux输入法,智能通用输入法平台(SCIM for veket)
  18. 《孩子快抓紧妈妈的手》
  19. HTML/CSS常见面试题
  20. 方舟原始恐惧mod生物代码_《方舟:恐惧进化4》登场,各种幽灵生物你成功驯服了吗?...

热门文章

  1. JavaWeb的学习(下)
  2. Intellij idea:查找,定位文件的位置
  3. Unity3D证书(序列号)升级总结
  4. 福禄克光纤端面显微镜保障你的光纤端面
  5. python调整图片大小,png,jpg均使用
  6. 外贸企业邮箱,选择海外群发邮件稳定的邮箱
  7. wps js宏实战案例:批量汇总订单数据、识别黑名单、自动统计业绩、每笔订单生成带条形码的发货单并输出为pdf文件用于打印
  8. 用python爬取有道翻译遇到反爬,3分钟反反爬绕过其反爬
  9. 无线模拟Trace中的AGT, RTR, MAC含义
  10. Java面向对象三大特性之继承多态的预习笔记,are you ready? 面对疾风吧!