简单实现Android滚动公告栏
发布时间 - 2026-01-10 22:45:15 点击率:次本文实现的效果,是一个滚动的公告栏,是这样的:
可以看到这个公告栏一方面是滚动,另外一方面是可点击。
实现的思路:
1.textView放在ViewFlipper中实现滑动效果(可设置左右、或者上下滚动),很明显这应该是自定义view;
2.利用textView的点击事件即可实现点击;
OK,先看看自定义view的代码:
public class MarqueeTextView extends LinearLayout {
private Context mContext;
private ViewFlipper viewFlipper;
private View marqueeTextView;
private String[] textArrays;
private MarqueeTextViewClickListener marqueeTextViewClickListener;
public MarqueeTextView(Context context) {
super(context);
mContext = context;
initBasicView();
}
public MarqueeTextView(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
initBasicView();
}
public void setTextArraysAndClickListener(String[] textArrays, MarqueeTextViewClickListener marqueeTextViewClickListener) {//1.设置数据源;2.设置监听回调(将textView点击事件传递到目标界面进行操作)
this.textArrays = textArrays;
this.marqueeTextViewClickListener = marqueeTextViewClickListener;
initMarqueeTextView(textArrays, marqueeTextViewClickListener);
}
public void initBasicView() {//加载布局,初始化ViewFlipper组件及效果
marqueeTextView = LayoutInflater.from(mContext).inflate(R.layout.marquee_textview_layout, null);
LayoutParams layoutParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
addView(marqueeTextView, layoutParams);
viewFlipper = (ViewFlipper) marqueeTextView.findViewById(R.id.viewFlipper);
viewFlipper.setInAnimation(AnimationUtils.loadAnimation(mContext, R.anim.slide_in_bottom));//设置上下的动画效果(自定义动画,所以改左右也很简单)
viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(mContext, R.anim.slide_out_top));
viewFlipper.startFlipping();
}
public void initMarqueeTextView(String[] textArrays, MarqueeTextViewClickListener marqueeTextViewClickListener) {
if (textArrays.length == 0) {
return;
}
int i = 0;
viewFlipper.removeAllViews();
while (i < textArrays.length) {
TextView textView = new TextView(mContext);
textView.setText(textArrays[i]);
textView.setOnClickListener(marqueeTextViewClickListener);
LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
viewFlipper.addView(textView, lp);
i++;
}
}
public void releaseResources() {
if (marqueeTextView != null) {
if (viewFlipper != null) {
viewFlipper.stopFlipping();
viewFlipper.removeAllViews();
viewFlipper = null;
}
marqueeTextView = null;
}
}
}
然后,主Activity异常简单(还是封装得好):
public class MainActivity extends AppCompatActivity {
private MarqueeTextView marqueeTv;
private String [] textArrays = new String[]{"this is content No.1","this is content No.2","this is content No.3"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
marqueeTv = (MarqueeTextView) findViewById(R.id.marqueeTv);
marqueeTv.setTextArraysAndClickListener(textArrays, new MarqueeTextViewClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(MainActivity.this,AnotherActivity.class));
}
});
}
@Override
protected void onDestroy() {
marqueeTv.releaseResources();
super.onDestroy();
}
}
Git地址>>https://github.com/ganshenml/MarqueeTextViewApp
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Android滚动公告栏
# Android滚动公告
# Android滚动
# android开发之横向滚动/竖向滚动的ListView(固定列头)
# android实现上下滚动的TextView
# android TextView不用ScrollViewe也可以滚动的方法
# Android中实现多行、水平滚动的分页的Gridview实例源码
# android 实现ScrollView自动滚动的实例代码
# android开发教程之文本框加滚动条scrollview
# android ListView自动滚动方法
# Android GridView实现滚动到指定位置的方法
# Android实现字幕滚动的方法
# android listview 水平滚动和垂直滚动的小例子
# 自定义
# 是一个
# 放在
# 是这样
# 也很
# 可以看到
# 很明显
# 回调
# 大家多多
# 装得
# 加载
# 这应
# String
# marqueeTextView
# View
# textArrays
# Context
# private
# mContext
# LinearLayout
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
php json中文编码为null的解决办法
高性能网站服务器配置指南:安全稳定与高效建站核心方案
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
利用vue写todolist单页应用
如何在景安云服务器上绑定域名并配置虚拟主机?
如何在腾讯云服务器上快速搭建个人网站?
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
新三国志曹操传主线渭水交兵攻略
phpredis提高消息队列的实时性方法(推荐)
如何快速生成专业多端适配建站电话?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
深圳网站制作的公司有哪些,dido官方网站?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
Mybatis 中的insertOrUpdate操作
Laravel如何实现全文搜索功能?(Scout和Algolia示例)
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
,怎么在广州志愿者网站注册?
Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录
Laravel如何记录自定义日志?(Log频道配置)
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
b2c电商网站制作流程,b2c水平综合的电商平台?
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
nginx修改上传文件大小限制的方法
Laravel如何使用withoutEvents方法临时禁用模型事件
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
如何快速建站并高效导出源代码?
Laravel如何实现用户注册和登录?(Auth脚手架指南)
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
如何在IIS中新建站点并配置端口与IP地址?
Laravel怎么在Controller之外的地方验证数据
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
如何在阿里云服务器自主搭建网站?
,南京靠谱的征婚网站?
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
如何在IIS管理器中快速创建并配置网站?
消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
如何在阿里云通过域名搭建网站?
Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】
Laravel的.env文件有什么用_Laravel环境变量配置与管理详解
海南网站制作公司有哪些,海口网是哪家的?

