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 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();    }    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 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); }}

更多相关文章

  1. Android双向滚动ScrollView
  2. Android(安卓)Recyclerview 滚动事件监听
  3. Android(安卓)安卓使用MediaPlayer播放列表视频
  4. Android(安卓)可下拉上拉效果的ScrollView
  5. Android(安卓)Tab点击监听 自定义事件
  6. android 新手学习笔记 点击事件
  7. android 新手学习笔记 点击事件
  8. Android(安卓)中文 API (100) —— ScrollView
  9. android gridview按钮边框和定制点击颜色

随机推荐

  1. Android(安卓)app安装路径 2
  2. android 混合开发 跳转 Flutter 黑屏问题
  3. Android(安卓)4.2短信发送流程小记
  4. Android(安卓)Studio打包APK文件的具体方
  5. android inflate初探
  6. android监听app安装与卸载
  7. Android(安卓)8.0 SystemUI(一)
  8. android 自动化测试方法
  9. Android打开不同类型文件
  10. Android(安卓)开发必备AS插件,写下来,方便