php直播源码如何实现TextView竖直滚动
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,php直播源码如何实现TextView竖直滚动,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。public class AutoScr
千家信息网最后更新 2026年11月02日php直播源码如何实现TextView竖直滚动
php直播源码如何实现TextView竖直滚动,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
public class AutoScrollTextView extends TextSwitcher implements ViewSwitcher.ViewFactory { private static final int FLAG_START_AUTO_SCROLL = 1001; private static final int FLAG_STOP_AUTO_SCROLL = 1002; /** * 轮播时间间隔 */ private int scrollDuration = 2000; /** * 动画时间 */ private int animDuration = 1000; /** * 文字大小 */ private float mTextSize = 14; /** * 文字Padding */ private int mPadding = 20; /** * 文字颜色 */ private int textColor = Color.BLACK; private OnItemClickListener itemClickListener; private Context mContext; /** * 当前显示Item的ID */ private volatile int currentId = -1; private CopyOnWriteArrayList textList; private Handler handler; public AutoScrollTextView(Context context) { this(context, null); mContext = context; } public AutoScrollTextView(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; init(); } @SuppressLint("HandlerLeak") private void init() { textList = new CopyOnWriteArrayList<>(); handler = new Handler() { @Override public 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, scrollDuration); break; case FLAG_STOP_AUTO_SCROLL: handler.removeMessages(FLAG_START_AUTO_SCROLL); break; } } }; setFactory(this); Animation in = new TranslateAnimation(0, 0, 300, 0); in.setDuration(animDuration); in.setInterpolator(new AccelerateInterpolator()); Animation out = new TranslateAnimation(0, 0, 0, -300); out.setDuration(animDuration); out.setInterpolator(new AccelerateInterpolator()); setInAnimation(in); setOutAnimation(out); } /** * 设置数据源 * * @param titles */ public void setTextList(ArrayList titles) { textList.clear(); textList.addAll(titles); currentId = -1; } public void setText1(String text) { if (TextUtils.isEmpty(text)) { return; } stopAutoScroll(); int width = getWidth() - mPadding * 2; TextPaint paint = new TextPaint(); paint.setTextSize(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, mTextSize, mContext.getResources().getDisplayMetrics())); if (width < paint.measureText(" ")) { return; } List lineList = new ArrayList<>(); StringBuilder newLine = new StringBuilder(); for (int i = 0; i < text.length(); i++) { if ('\n' == text.charAt(i)) { lineList.add(newLine.toString()); newLine.setLength(0); } else { newLine.append(text.charAt(i)); if (paint.measureText(newLine.toString()) > width) { lineList.add(newLine.toString().substring(0, newLine.toString().length() - 1)); i--; newLine.setLength(0); } else { if (i == text.length() - 1) { lineList.add(newLine.toString()); newLine.setLength(0); break; } } } } textList.clear(); textList.addAll(lineList); currentId = -1; } /** * 开始轮播 */ public void startAutoScroll() { if (textList.isEmpty()) { return; } if (textList.size() == 1) { setText(textList.get(0)); return; } handler.removeCallbacksAndMessages(null); handler.sendEmptyMessage(FLAG_START_AUTO_SCROLL); } /** * 停止轮播 */ public void stopAutoScroll() { handler.sendEmptyMessage(FLAG_STOP_AUTO_SCROLL); } @Override public 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() { @Override public void onClick(View v) { if (itemClickListener != null && textList.size() > 0 && currentId != -1) { itemClickListener.onItemClick(currentId % textList.size()); } } }); return t; } /** * 设置点击事件监听 */ public void setOnItemClickListener(OnItemClickListener itemClickListener) { this.itemClickListener = itemClickListener; } /** * 轮播文本点击监听器 */ public interface OnItemClickListener { /** * 点击回调 * * @param position 当前点击ID */ public void onItemClick(int position); }} 关于php直播源码如何实现TextView竖直滚动问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
文字
问题
源码
直播
时间
更多
帮助
监听
解答
易行
简单易行
事件
内容
动画
大小
小伙
小伙伴
数据
数据源
文本
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技名片
湖北九亚互联网络科技有限公司
互联网下的科技发展
互联网公司 科技公司
喔噻互联网科技
互联网金融科技创新
伴你行互联网科技有限公司
互联网 新科技
互联网科技股有哪些
深圳市运趣互联网科技有限公司
央行互联网金融科技公司
互联网校园科技培训
移动互联网年度科技创新
健康食品互联网创新科技园项目
华夏恒生互联网科技013171
洛阳共同富裕互联网科技有限公司
晋城互联网科技
长沙茂晟互联网科技有限公司
电子商务与互联网科技的关系
中国互联网公司的科技投入
科技互联网
互联网科技名片
科技互联网公司装修
智能科技公司是互联网公司吗
互联网科技小贷
互联网科技咨询
人人互联网科技是培训
哈尔滨新华互联网科技学院
众安科技工业互联网合作
互联网科技的前景