垂直滚动公告栏
来源:互联网 发布:科比各项数据 编辑:程序博客网 时间:2024/05/18 03:50
import android.content.Context;import android.graphics.Color;import android.os.Handler;import android.os.Message;import android.text.TextUtils;import android.util.AttributeSet;import android.util.TypedValue;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;
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 = 16; 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; private boolean isBegin = false; public VerticalTextView(Context context) { this(context, null); } 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, 70, 0); in.setDuration(animDuration); in.setInterpolator(new AccelerateInterpolator()); Animation out = new TranslateAnimation(0, 0, 0, -70); out.setDuration(animDuration); out.setInterpolator(new AccelerateInterpolator()); setInAnimation(in); setOutAnimation(out); } /** * 间隔时间 */ public void setTextStillTime(final long time) { 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, 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() { if (isBegin) { return; } isBegin = true; handler.sendEmptyMessage(FLAG_START_AUTO_SCROLL); }//停止滚动public void stopAutoScroll() { if (!isBegin){ return; } isBegin = false; 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, 0, mPadding, 0); t.setTextColor(textColor); t.setEllipsize(TextUtils.TruncateAt.END); t.setTextSize(TypedValue.COMPLEX_UNIT_SP, 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 { // 点击回调 void onItemClick(int position); }}
阅读全文
0 0
- 垂直滚动公告栏
- 滚动公告栏
- 滚动公告栏代码
- 自动滚动的公告栏
- 公告栏无间隙滚动
- 向上滚动公告栏
- Android 滚动的公告栏
- Android 滚动的公告栏
- android滚动公告栏
- 自定义控件之垂直公告栏
- 滚动的公告栏的实现
- 公告栏文字上下滚动效果
- jQuery公告栏文字滚动插件
- 一段动态滚动公告栏的js代码
- 纯JS打造循环间隔滚动公告栏
- ASP.net制作滚动公告栏的方法
- Java技巧:JLabel公告栏文字滚动效果
- 原生js实现公告栏向上滚动
- 【Java基础Demo】模仿用户登录
- 2017第6届全球软件案例研究峰会—TOP100案例征集中......
- Objective-C的语法及与Java、C++的对比
- 10.16 Loi队内胡策 贪心+毒瘤输入+DP+数论
- android Calendar使用 年月日时分秒
- 垂直滚动公告栏
- caffe中MNIST数据集训练与测试LeNet
- C#基础知识-XML介绍及基本操作
- iframe刷新父页面
- INSTRUMENTATION_STATUS: Error=Unable to find instrumentation info的一种解决方法
- Linux更新python版本(2.6---2.7)
- 从零一起学react(7)---Create React App简介
- MySQL日期 字符串 时间戳互转
- printf输出格式总结