自定义View--单行上下滚动广告
来源:互联网 发布:开票软件是什么 编辑:程序博客网 时间:2024/06/14 16:37
效果图
实现思路
本来想用ViewPager的上下滚动来实现,然后发现要又重写ViewPager和滚动效果,比较麻烦,于是就用2个TextView轮流移动实现。
最后发现android的ViewFlipper就可以实现了。。
实现代码
public class ScrollBanner extends LinearLayout { private TextView mBannerTV1; private TextView mBannerTV2; private Handler handler; private boolean isShow; private int startY1, endY1, startY2, endY2; private Runnable runnable; private List<String> list; private int position = 0; private int offsetY = 100; public ScrollBanner(Context context) { this(context, null); } public ScrollBanner(Context context, AttributeSet attrs) { this(context, attrs, 0); } public ScrollBanner(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); View view = LayoutInflater.from(context).inflate(R.layout.view_scroll_banner, this); mBannerTV1 = (TextView) view.findViewById(R.id.tv_banner1); mBannerTV2 = (TextView) view.findViewById(R.id.tv_banner2); handler = new Handler(); runnable = new Runnable() { @Override public void run() { isShow = !isShow; if (position == list.size()) position = 0; if (isShow) { mBannerTV1.setText(list.get(position++)); } else { mBannerTV2.setText(list.get(position++)); } startY1 = isShow ? 0 : offsetY; endY1 = isShow ? -offsetY : 0; ObjectAnimator.ofFloat(mBannerTV1, "translationY", startY1, endY1).setDuration(300).start(); startY2 = isShow ? offsetY : 0; endY2 = isShow ? 0 : -offsetY; ObjectAnimator.ofFloat(mBannerTV2, "translationY", startY2, endY2).setDuration(300).start(); handler.postDelayed(runnable, 3000); } }; } public List<String> getList() { return list; } public void setList(List<String> list) { this.list = list; } public void startScroll() { handler.post(runnable); } public void stopScroll() { handler.removeCallbacks(runnable); }}
- view_scroll_banner.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:padding="10dp"> <TextView android:id="@+id/tv_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:text="公告" android:textColor="#e76712" android:textSize="16sp" /> <View android:id="@+id/view_divider" android:layout_width="1dp" android:layout_height="match_parent" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_toRightOf="@id/tv_title" android:background="#DDDDDD" /> <TextView android:id="@+id/tv_banner1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_toRightOf="@+id/view_divider" android:ellipsize="end" android:singleLine="true" android:text="热烈欢迎领导光临" /> <TextView android:id="@+id/tv_banner2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_toRightOf="@+id/view_divider" android:ellipsize="end" android:singleLine="true" android:text="喜庆国庆欢乐大酬宾" /></RelativeLayout>
- 使用方法
scrollBanner.setList(list);scrollBanner.startScroll();
3 0
- 自定义View--单行上下滚动广告
- 单行上下滚动广告
- 简易单行文字上下滚动js
- Android滚动条广告,可以设置自定义view的ViewSwitcher
- 随鼠标上下滚动的广告条
- Android 上下滚动的广告条
- TextView 上下广告翻滚 和 左右滚动
- 上下滚动文字自定义控件
- 最精简的平滑的JS新闻单行上下滚动
- Android自定义View(LimitScrollerView-仿天猫广告栏上下滚动效果)
- 自定义view,实现上下滑动
- Android 上下滚动条、轮训滚动、广告条
- Android 上下滚动条、轮训滚动、广告条
- 自定义view滚动列表
- 自定义View 滚动条
- 自定义View-平滑滚动
- Android自定义View——仿1号店垂直滚动广告条实现
- Android自定义View——仿1号店垂直滚动广告条实现
- 【Android 基础】Animation 动画介绍和实现
- Save & Apply mechanism of luci
- 《深入理解Java虚拟机》读后总结 (四)JVM垃圾回收
- 常见的C语言内存错误及对策
- 每天laravel-20160816| Container -19
- 自定义View--单行上下滚动广告
- 关于JAVA中的异常那些事儿
- 简易百度定位
- 准备写博客
- 超级牛皮的oracle的分析函数over(Partition by...) 及开窗函数
- js仿手机端九宫格登录功能
- Sybse数据库管理工具,查看表之间的依赖关系
- hdu 2717 BFS
- 【Codeforces】-#667A- Pouring Rain