android开发类似淘宝京东头条的垂直跑马灯效果
2016-07-15 11:02
337 查看
在Android中,左右的跑马灯效果非常容易实现,只需要在xml里面设置它的属性就可以了,但是要做到垂直的跑马灯,在xml中设置属性是不能实现的,下面就需要我们自定义textview来实现这个效果。
然后再xml中引入,在activity中调用setData()即可,这里注意:ll_fliptext是包裹fliptextview的父容器(线性,相对)
package com.msstudent.view; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.os.Handler; import android.os.Message; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.view.animation.AnimationUtils; import android.widget.TextSwitcher; import com.msstudent.activity.R; import com.msstudent.entity.SS_noticeBean; /** * * @ClassName: FlipTextView * @Description: TODO(垂直文本跑马灯) * @author henry * @date 2015-11-25 下午5:16:48 * */ public class FlipTextView extends TextSwitcher implements TextSwitcher.ViewFactory { private List<SS_noticeBean> demoBeans = new ArrayList<SS_noticeBean>(); private int mIndex; private ItemDataListener itemDataListener; private View view ; //click view private static final int AUTO_RUN_FLIP_TEXT = 11; private static final int WAIT_TIME = 3500; public FlipTextView(Context context) { super(context); init(); } public FlipTextView(Context context, AttributeSet attrs) { super(context, attrs); init(); } private void init(){ setFactory(this); setInAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.trans_bottom_to_top_in_fast)); setOutAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.trans_bottom_to_top_out_fast)); } @Override public View makeView() { return LayoutInflater.from(getContext()).inflate(R.layout.flip_item_text_view,null); } Handler mHandler = new Handler(){ @Override public void handleMessage(Message msg) { switch (msg.what){ case AUTO_RUN_FLIP_TEXT: if(demoBeans.size()>0){ mHandler.sendEmptyMessageDelayed(AUTO_RUN_FLIP_TEXT,WAIT_TIME); setText(demoBeans.get(mIndex).getTitle()); } mIndex++; if(mIndex>demoBeans.size()-1){ mIndex=0; } view.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { if(mIndex==0){ itemDataListener.onItemClick(demoBeans.size()-1); }else{ itemDataListener.onItemClick(mIndex-1); } } }); break; } } }; public void setData(List<SS_noticeBean> datas,ItemDataListener listener,View v){ view = v; itemDataListener = listener; if(demoBeans.size()>0){ demoBeans.clear(); } demoBeans.addAll(datas); mIndex = 0; mHandler.removeMessages(AUTO_RUN_FLIP_TEXT); mHandler.sendEmptyMessage(AUTO_RUN_FLIP_TEXT); } public abstract interface ItemDataListener{ public void onItemClick(int position); } }
然后再xml中引入,在activity中调用setData()即可,这里注意:ll_fliptext是包裹fliptextview的父容器(线性,相对)
private void initData() { if (demoBeans.get(0).getResult() == null) { } else { pmd_tv.setData(demoBeans.get(0).getResult(), itemDataListener, ll_fliptext); } } private FlipTextView.ItemDataListener itemDataListener = new FlipTextView.ItemDataListener() { @Override public void onItemClick(int position) { Intent intent = new Intent(getActivity(),NoticeActivity.class); startActivity(intent); } };
相关文章推荐
- Android 数据存储相关
- 如何在JNI工程中使用第三方库文件
- Android Studio快捷键
- Android开发首页欢迎界面跳转功能的实现
- android基础——handler机制的原理
- Android Studio离线配置
- Android趣闻+++专业名词
- Android 调节屏幕亮度
- 自学Android之路
- android NDK使用过程中遇到的一些问题
- Android中visibility属性VISIBLE、INVISIBLE、GONE的区别
- Android检测View的可见性
- android手机短信获取
- Android开源工具项目集合!
- Android jni中数组参数的传递方式
- Android 绘图(一) Paint
- Android AutoCompleteTextView自动提示文本框实例代码
- android 控件自定义样式
- Android 开发笔记
- android listview 异步加载图片并防止错位