php直播源码如何实现TextView竖直滚动
发表于:2025-02-22 作者:千家信息网编辑
千家信息网最后更新 2025年02月22日,php直播源码如何实现TextView竖直滚动,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。public class AutoScr
千家信息网最后更新 2025年02月22日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 CopyOnWriteArrayListtextList; 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安全错误
数据库的锁怎样保障安全
数据库进行了冷恢复
菜鸟网络技术外包
重庆智慧时空大数据库
db2数据库恢复时点数据
网络安全工作思想
浪潮服务器 管理
全速网络技术怎么样
服务器管理可视化
软件开发能力自评估表
网络安全第二阶段
数据库培训活动
网络技术课后题
网络安全独角兽收入
安卓lol怎么换服务器
统筹管理网络安全工作
收件服务器
河南pdu服务器专用电源价格表
kettle把数据库直接
初三网络安全教育手抄报
计算机三级网络技术自治系统
法师宝宝数据库
大掌柜应用服务器连接失败
严格落实网络安全信息
计算机网络安全知识测试题
ktv服务器管理员
中国银行it和软件开发中心
剑与远征是哪的服务器
网络安全getshell
erp系统服务器和数据库
赞丽显示不被信任的服务器证书