博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ViewPage实现幻灯广告墙
阅读量:5275 次
发布时间:2019-06-14

本文共 2531 字,大约阅读时间需要 8 分钟。

 
 

ViewPage实现幻灯广告墙

功能简介

  1. 类似幻灯片功能
  2. 自动切换图片
  3. 触摸停止切换图片
  4. 自带标题功能和切换圆点

核心功能实现方法

1. 布局
2. ViewPage自定义适配器
/** * ViewPage适配器而已 */ class myAdatper extends PagerAdapter {
@Override public int getCount() {
return count; } /** * 确定是否展示和反对的是否是同一个对象 */ @Override public boolean isViewFromObject(View view, Object object) {
return view == object; } /** * 添加机制。 */ @Override public Object instantiateItem(ViewGroup container, int position) {
ImageView view = new ImageView(getApplicationContext()); view.setImageResource(mImage[position % mImage.length]); // view.setBackgroundResource(resid) //填充父控件 container.addView(view); return view; } /** * 独特的销毁机制 , 控制内存方式, 用语默认只加载3个页面 */ @Override public void destroyItem(ViewGroup container, int position, Object object) {
// 移除容器当中的View container.removeView((ImageView) object); } }
3. helder消息,实现自动切换功能

这里原理是我们可以通过handler.sendEmptyMessageDelayed(0, 2000)发送延时消息,通过handleMessage接受后,再次发送,类似递归功能。触摸停止使用handler.removeCallbacksAndMessages(null)移除所有消息队列里面的消息实现停止轮播

Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
// 自动跟换轮播图片 int currentItem = vpteach.getCurrentItem(); currentItem++; vpteach.setCurrentItem(currentItem); handler.sendEmptyMessageDelayed(0, 2000); }; };
 
4. 触摸取消切换
//设置 触摸停止滚动 vpteach.setOnTouchListener(new OnTouchListener() {
@Override public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: //移除所有消息 handler.removeCallbacksAndMessages(null); break; case MotionEvent.ACTION_UP: handler.sendEmptyMessageDelayed(0, 2000); break; default: break; } return false; } });
5. 文字和圆点跟踪变换

这里主要是使用监听ViewPagesetOnPageChangeListener事件,来改变TextView文本当中文字

// 滑动更新标题。 。 vpteach.setOnPageChangeListener(new OnPageChangeListener() {
// 某一页页被选中时 @Override public void onPageSelected(int position) {
// 滑动设置简介。 int index = position % mImageDes.length; tvTitle.setText(mImageDes[index]); ll_contaier.getChildAt(index).setEnabled(true); ll_contaier.getChildAt(prePosation).setEnabled(false); prePosation = index; } // 滑动是调用 @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
} // 滑动状态改变时。 @Override public void onPageScrollStateChanged(int state) {
} });

 6.自己绘制圆点

总结

Handler , ViewPage, shape,自定义适配器的使用。

以后自己复习中多注意他们之间的联系可以实现的功能。

效果

转载于:https://www.cnblogs.com/ganwei/p/4827746.html

你可能感兴趣的文章
24-单调递增最长子序列(多种解法总结)
查看>>
url传值中文乱码
查看>>
js 操作方法
查看>>
Spring3之Security
查看>>
Node,Document,HTMLDocument,HTMLCollection解析
查看>>
Linux网络技术管理
查看>>
Apache web服务
查看>>
随机数
查看>>
mac 安装cmake
查看>>
PHP-7.1 源代码学习:字节码在 Zend 虚拟机中的解释执行 之 概述
查看>>
我的常用网站收集
查看>>
Why-are-GPUs-well-suited-to-deep-learning
查看>>
从Zero到Hero,OpenAI重磅发布深度强化学习资源
查看>>
浏览器上网 (Safari & Chrome)
查看>>
京东2019春招Java工程师编程题题解
查看>>
java后台开发实习--第一次面试
查看>>
BZOJ3507: [Cqoi2014]通配符匹配
查看>>
BZOJ 2500 幸福的道路(race) 树上直径+平衡树
查看>>
端口报错listen eaddrinuse:::xxx
查看>>
vue强制更新$forceUpdate()
查看>>