ViewPage实现幻灯广告墙
ViewPage实现幻灯广告墙
功能简介
- 类似幻灯片功能
- 自动切换图片
- 触摸停止切换图片
- 自带标题功能和切换圆点
核心功能实现方法
1. 布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<android.support.v4.view.ViewPager
android:id="@+id/vp_text"
android:layout_width="match_parent"
android:layout_height="170dp" />
<!-- 小圆点的布局文件 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="#a000"
android:orientation="vertical"
>
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:text="标题"
android:textColor="#fff"
android:textSize="18sp" />
<LinearLayout
android:id="@+id/ll_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="horizontal"
></LinearLayout>
</LinearLayout>
</FrameLayout>
</LinearLayout>
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. 文字和圆点跟踪变换
这里主要是使用监听ViewPage的setOnPageChangeListener事件,来改变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.自己绘制圆点
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="ring"
>
<size android:width="5dp"
android:height="5dp"
/>
<!-- 圆点原色 -->
<solid android:color="#CD6090" />
</shape>
总结
Handler , ViewPage, shape,自定义适配器的使用。
以后自己复习中多注意他们之间的联系可以实现的功能。
效果

ViewPage实现幻灯广告墙的更多相关文章
- 如何在Android应用中加入广告
转载自:http://mobile.51cto.com/aprogram-387527.htm 目前我自己的一款小程序中正进行到加入广告阶段,BAIDU了一下,找到如下好文章,非常有必要共享一下,故转 ...
- Android应用盈利广告平台的嵌入方法详解
一.如何学习Android android开发(这里不提platform和底层驱动)你需要对Java有个良好的基础,一般我们用Eclipse作为开发工具.对于过多的具体知识详细介绍我这里不展开,我只 ...
- 20、android解决方案(转载)
目录: 1.广告 2.推送 3.云 4.统计 5.后端存储 6.地图 7.测试 8.托管 9.支付 10.音视频 11.社会化分享 12.存储 13.自动更新 14.轻开发 15.安全 16.图像 1 ...
- Android 仿 窗帘效果 和 登录界面拖动效果 (Scroller类的应用) 附 2个DEMO及源码
在android学习中,动作交互是软件中重要的一部分,其中的Scroller就是提供了拖动效果的类,在网上,比如说一些Launcher实现滑屏都可以通过这个类去实现.下面要说的就是上次Scroller ...
- Android版本铎A梦幻连连看游戏源代码完整版
我写主代码,没有版权问题,它少量小游戏和应用源代码稍后会陆续上线!哆啦A梦连连看包含了2种游戏模式和60关卡,并能够通过改动配置文件非常方便的实现自行添加新关卡.採用andengine游戏引擎开发,内 ...
- 一个吊丝android个人开发者的逆袭之路
转眼间,一年多过去了,记得我开发第一款android应用的时候,那是在前年的冬天,我本人是做java的,android的学习和开发完全是业余爱好,从前年上半年到前年下半年大约花了半年的业余时间把and ...
- 标准之路网站上一篇文章《十天学会web标准(div+css)》的营养精华
以下精华出自如下链接,“http://www.aa25.cn/special/10day/index.shtml”,<十天学会web标准(DIV+CSS)>. 这个内容不要删掉:“< ...
- 从零学习Fluter(九):正式使用flutter进入商业开发
一下为下个app 功能模块简要划分 接口文档需要说明 公告接口 messageTitle -- 消息内容 红包墙接口 使用说明 地理位置定位 shareGetMoney - 分享活动金额 lookCo ...
- Android 仿 窗帘效果 和 登录界面拖动效果 (Scroller类的应用) 附 2个DEMO及源代码
在android学习中,动作交互是软件中重要的一部分.当中的Scroller就是提供了拖动效果的类,在网上.比方说一些Launcher实现滑屏都能够通过这个类去实现.以下要说的就是上次Scroller ...
随机推荐
- Linux kernel get_prng_bytes函数数字错误漏洞
漏洞名称: Linux kernel get_prng_bytes函数数字错误漏洞 CNNVD编号: CNNVD-201310-142 发布时间: 2013-10-11 更新时间: 2013-10-1 ...
- centos 6.4 大容量磁盘分区步骤
首先安装分区工具 yum install parted 假设需要分区的设备为/dev/sdb 运行如下命令 parted /dev/sdb (parted) mklabel gpt #大于2TB的磁盘 ...
- HDU-1233 还是畅通工程 (prim 算法求最小生成树)
prim 算法求最小生成树 还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth ...
- [Boost::Polygon]多边形相减得到新的多边形序列
#include <iostream> #include <boost/polygon/polygon.hpp> #include <cassert> namesp ...
- MVC 依赖注入/控制反转
http://www.cnblogs.com/cnmaxu/archive/2010/10/12/1848735.html http://www.cnblogs.com/artech/archive/ ...
- Javascript之<script>标签
把javascript代码插入到HTML页面中需要使用<script>标签,使用这个元素可以使javascript和html标记混合在一个页面中,也可以引入外部的javascript文件. ...
- HTML快速参考
HTML 模版 html> <head> <meta charset="utf-8"/> <title>html template< ...
- 【python自动化第七篇:面向对象进阶】
知识点概览: 静态方法,类方法,属性方法 类的特殊方法 反射 异常处理 socket开发基础 一.静态方法:@staticmethod 只是名义上归类管理,实际上在静态方法里访问不了类或者实例中的任何 ...
- runnable:在线IDE+代码片段分享
在我之前的博客20个最好的在线IDE中列举过很多在线IDE,可以很方便的在云端执行代码,这样在你手头没有编译器时想试个小程序会非常有用. 今天介绍的这个网站runnable把在线IDE和代码片段结合了 ...
- Cookie案例分析
一.案例- 显示用户上次访问的时间 当用户第一次访问该页面的时候提示:你好,你是第一次访问本页面,当前时间为:2016-11-3 22:10:30 第n次访问该页面时:欢迎回来,你上次访问的时间是:2 ...