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 ...
随机推荐
- Python爬虫处理抓取数据中文乱码问题
乱码原因:因为你的文件声明为utf-8,并且也应该是用utf-8的编码保存的源文件.但是windows的本地默认编码是cp936,也就是gbk编码,所以在控制台直接打印utf-8的字符串当然是乱码了. ...
- 约瑟夫环的java实现
转自:http://www.cnblogs.com/timeng/p/3335162.html 约瑟夫环:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到 ...
- HDU-2521 反素数
反素数 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- MonkeyRunner执行Python脚本实例——发送短信增强版
很久之前就写好的了,准备写个自动执行Monkey的脚本时才想到去找它,还是写在博客里找起来方便. 这次更新了批处理自动连接设备后执行Py脚本,结构如下图: 其中shotscreen为存放截图文件夹,s ...
- python 零散记录(五) import的几种方式 序列解包 条件和循环 强调getattr内建函数
用import关键字导入模块的几种方式: #python是自解释的,不必多说,代码本身就是人可读的 import xxx from xxx import xxx from xxx import xx1 ...
- Ruby跳出多层循环 catch...throw
在编码的时候,有时候会遇到嵌套循环的情况,最内部的循环结束的时候,想跳出所有循环,这个时候我们往往采用通过内部循环设置一个flag来控制外部跳出循环条件,比如: #encoding:utf-8 for ...
- Datable 详解,及用法
一.DataSet.DataTable.DataRow.DataColumn 1] 在DataSet中添加DataTable DataSet.Tables.Add(DataTable) 实例: Dat ...
- UVa 10054 The Necklace BFS+建模欧拉回路
算法指南 主要就是建立欧拉回路 #include <stdio.h> #include <string.h> #include <iostream> #includ ...
- [TopCoder] SRM_594_DIV2.250
好长一段时间没写博客了,实在是想不出有什么好写的.近期也有对自己的职业做了一点思考,还是整理不出个所以然来,很是烦躁 ... 研究TopCoder已经有一小段时间了,都是在做之前的题目,还没有实际参加 ...
- 微信开发第4章 通过accesstoken获取用户标签管理
通过access_token获取用户标签管理: 1.获取标签列表 调用接口为: http请求方式:GET(请使用https协议) https://api.weixin.qq.com/cgi-bin/t ...