ViewPage实现幻灯广告墙

功能简介

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

核心功能实现方法

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. 文字和圆点跟踪变换

这里主要是使用监听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.自己绘制圆点

<?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实现幻灯广告墙的更多相关文章

  1. 如何在Android应用中加入广告

    转载自:http://mobile.51cto.com/aprogram-387527.htm 目前我自己的一款小程序中正进行到加入广告阶段,BAIDU了一下,找到如下好文章,非常有必要共享一下,故转 ...

  2. Android应用盈利广告平台的嵌入方法详解

    一.如何学习Android  android开发(这里不提platform和底层驱动)你需要对Java有个良好的基础,一般我们用Eclipse作为开发工具.对于过多的具体知识详细介绍我这里不展开,我只 ...

  3. 20、android解决方案(转载)

    目录: 1.广告 2.推送 3.云 4.统计 5.后端存储 6.地图 7.测试 8.托管 9.支付 10.音视频 11.社会化分享 12.存储 13.自动更新 14.轻开发 15.安全 16.图像 1 ...

  4. Android 仿 窗帘效果 和 登录界面拖动效果 (Scroller类的应用) 附 2个DEMO及源码

    在android学习中,动作交互是软件中重要的一部分,其中的Scroller就是提供了拖动效果的类,在网上,比如说一些Launcher实现滑屏都可以通过这个类去实现.下面要说的就是上次Scroller ...

  5. Android版本铎A梦幻连连看游戏源代码完整版

    我写主代码,没有版权问题,它少量小游戏和应用源代码稍后会陆续上线!哆啦A梦连连看包含了2种游戏模式和60关卡,并能够通过改动配置文件非常方便的实现自行添加新关卡.採用andengine游戏引擎开发,内 ...

  6. 一个吊丝android个人开发者的逆袭之路

    转眼间,一年多过去了,记得我开发第一款android应用的时候,那是在前年的冬天,我本人是做java的,android的学习和开发完全是业余爱好,从前年上半年到前年下半年大约花了半年的业余时间把and ...

  7. 标准之路网站上一篇文章《十天学会web标准(div+css)》的营养精华

    以下精华出自如下链接,“http://www.aa25.cn/special/10day/index.shtml”,<十天学会web标准(DIV+CSS)>. 这个内容不要删掉:“< ...

  8. 从零学习Fluter(九):正式使用flutter进入商业开发

    一下为下个app 功能模块简要划分 接口文档需要说明 公告接口 messageTitle -- 消息内容 红包墙接口 使用说明 地理位置定位 shareGetMoney - 分享活动金额 lookCo ...

  9. Android 仿 窗帘效果 和 登录界面拖动效果 (Scroller类的应用) 附 2个DEMO及源代码

    在android学习中,动作交互是软件中重要的一部分.当中的Scroller就是提供了拖动效果的类,在网上.比方说一些Launcher实现滑屏都能够通过这个类去实现.以下要说的就是上次Scroller ...

随机推荐

  1. 实验记录贴 —— 账号同步实验 RTX 和 LDAP(AD域)

    目前,公司有多个系统,RTX,邮箱(MD),OA,NC. 这些系统之间,如果要实现单点登录的话,账户肯定需要同步,或者某一种映射机制. 如果所有数据都和中央账号数据库(LDAP,这里是AD域)看齐,那 ...

  2. (转载)javascript转自世纪流年blog

    (转载)http://www.cnblogs.com/tfe/articles/164205.html 础知识 2005年5月2日22:25星期一 [ Dhtml ] 有些时候你精通一门语言,但是会发 ...

  3. Grading

    100 >= A >= 93 > A- >= 90; 90 > B+ >= 87 > B >= 83 > B- >= 80; 80 > ...

  4. JS实现表单输入Enter键转换焦点框

    <form> <input type="text" onkeypress="return handleEnter(this, event)"& ...

  5. Test2014-3-1 魅力值比较

    魅力值比较 [问题描述] 大学生恋爱的问题造成了数量众多的异地恋,有许多J大的女生早早被Q大男生追走,这导致了J大男生的强烈不满.就在吐血高调地向一位J大美女展开攻势的之后,J大男生终于爆发了. 为了 ...

  6. 修复直接删除linux系统后grub丢失错误

    如果删除了系统后,grub丢失,开机出现“grub>”的话,可以用如下代码进入目标linux系统:grub>ls (hd0,X)/boot             //x为目标系统所在分区 ...

  7. yum puppet 并整合控制台

    上篇说了下在ubuntu12.04上安装puppet,安装的版本为puppet2.7.11版本,今天尝试了下在CentOS6.4系统上安装puppet 3.1.1版本,本文参考chenshake的文章 ...

  8. [Yii][RBAC]Yii中应用RBAC完全指南

    开端筹办 Yii供给了强大的设备机制和很多现成的类库.在Yii中应用RBAC是很简单的,完全不须要再写RBAC代码.所以筹办工作就是,打开编辑器,跟我来. 设置参数.建树数据库 在设备数组中,增长以下 ...

  9. hdoj 2063 过山车【匈牙利算法+邻接矩阵or邻接表】

    过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  10. Servlet实现数据库查询(MyEclipse10,Tomcat7.0,JDK1.7,)——Java Web练习(三)

    1.MyEclipse | New Web Project :TestServlet01,修改index.jsp的代码: <%@ page language="java" i ...