现在常见的广告栏效果,自动切换广告,也可手动滑动切换。

我用ViewPager实现的,废话不多说,上代码:

1、布局文件 layout_ad_pager.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="160dp"android:baselineAligned="false" ><ImageViewandroid:id="@+id/home_default_image"android:layout_width="fill_parent"android:layout_height="wrap_content"android:scaleType="fitXY"android:src="@drawable/home_log_default"android:visibility="gone" /><android.support.v4.view.ViewPagerandroid:id="@+id/adv_pager"android:layout_width="fill_parent"android:layout_height="wrap_content"android:background="@drawable/img2" ></android.support.v4.view.ViewPager><LinearLayoutandroid:id="@+id/viewGroup"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_gravity="center_horizontal|bottom"android:layout_marginBottom="5dp"android:gravity="center"android:orientation="horizontal" ></LinearLayout></FrameLayout>

2、主要代码 AdPagerMainActivity.java

package app.adpager;import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import android.support.v7.app.ActionBarActivity;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Parcelable;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.ImageView;
import android.widget.LinearLayout;public class AdPagerMainActivity extends ActionBarActivity {private ImageView mDefaultImage = null;private ViewPager mImagePager = null;private ImageView[] mImageViews = null;private AtomicInteger what = new AtomicInteger(0);private boolean isContinue = true;private List<View> advPics;private Context mContext;private ImageView mImageView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.layout_ad_pager);init();initView();initViewPager();}/*** 初始化数据*/private void init() {mContext = this;advPics = new ArrayList<View>();}/*** 初始化控件*/private void initView() {// TODO Auto-generated method stubmDefaultImage = (ImageView) findViewById(R.id.home_default_image);mImagePager = (ViewPager) findViewById(R.id.adv_pager);}/*** void*/private void initViewPager() {// TODO Auto-generated method stubmDefaultImage.setVisibility(View.GONE);mImagePager.setVisibility(View.VISIBLE);ImageView img1 = new ImageView(mContext);img1.setBackgroundResource(R.drawable.img1);advPics.add(img1);ImageView img2 = new ImageView(mContext);img2.setBackgroundResource(R.drawable.img2);advPics.add(img2);ImageView img3 = new ImageView(mContext);img3.setBackgroundResource(R.drawable.img3);advPics.add(img3);ImageView img4 = new ImageView(mContext);img4.setBackgroundResource(R.drawable.img4);advPics.add(img4);// group是R.layou.mainview中的负责包裹小圆点的LinearLayout.ViewGroup group = (ViewGroup) findViewById(R.id.viewGroup);mImageViews = new ImageView[advPics.size()];LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(13, 13);layoutParams.setMargins(5, 0, 5, 1);for (int i = 0; i < advPics.size(); i++) {mImageView = new ImageView(this);mImageView.setLayoutParams(layoutParams);mImageViews[i] = mImageView;if (i == 0) {// 默认选中第一张图片mImageViews[i].setBackgroundResource(R.drawable.item_focus);}else {mImageViews[i].setBackgroundResource(R.drawable.item_unfocus);}group.addView(mImageViews[i]);}mImagePager.setAdapter(new AdvAdapter(advPics));mImagePager.setOnPageChangeListener(new GuidePageChangeListener());// 按下时不继续定时滑动,弹起时继续定时滑动mImagePager.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:case MotionEvent.ACTION_MOVE:isContinue = false;break;case MotionEvent.ACTION_UP:isContinue = true;break;default:isContinue = true;break;}return false;}});// 定时滑动线程new Thread(new Runnable() {@Overridepublic void run() {while (true) {if (isContinue) {viewHandler.sendEmptyMessage(what.get());whatOption();}}}}).start();}/*** 操作圆点轮换变背景*/private void whatOption() {what.incrementAndGet();if (what.get() > mImageViews.length - 1) {what.getAndAdd(-mImageViews.length);}try {if (what.get() == 1) {Thread.sleep(3000);}else {Thread.sleep(2000);}}catch (InterruptedException e) {}}/*** 处理定时切换广告栏图片的句柄*/@SuppressLint("HandlerLeak")private final Handler viewHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {mImagePager.setCurrentItem(msg.what);super.handleMessage(msg);}};/** 指引页面改监听器 */private final class GuidePageChangeListener implements OnPageChangeListener {@Overridepublic void onPageScrollStateChanged(int arg0) {}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}@Overridepublic void onPageSelected(int arg0) {arg0 = arg0 % advPics.size();for (int i = 0; i < mImageViews.length; i++) {mImageViews[arg0].setBackgroundResource(R.drawable.item_focus);if (arg0 != i) {mImageViews[i].setBackgroundResource(R.drawable.item_unfocus);}}what.set(arg0);}}/*** @Description: 广告栏PaperView 图片适配器*/private final class AdvAdapter extends PagerAdapter {private List<View> views = null;public AdvAdapter(List<View> views) {this.views = views;}@Overridepublic void destroyItem(View arg0, int arg1, Object arg2) {((ViewPager) arg0).removeView(views.get(arg1));}@Overridepublic void finishUpdate(View arg0) {}@Overridepublic int getCount() {return views.size();}@Overridepublic Object instantiateItem(View arg0, int arg1) {((ViewPager) arg0).addView(views.get(arg1), 0);return views.get(arg1);}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 == arg1;}@Overridepublic void restoreState(Parcelable arg0, ClassLoader arg1) {}@Overridepublic Parcelable saveState() {return null;}@Overridepublic void startUpdate(View arg0) {}}
}

图片资源:

Android:用ViewPager实现广告栏相关推荐

  1. android 弹出fragment,Android中ViewPager获取当前显示的Fragment

    前言 在项目中,有时会用到在ViewPager中显示同样类型的Fragment,同时这样的Fragment的个数是动态的,但是PagerAdapter没有给我们提供getCurrentFragment ...

  2. android双重for循环,Android实现ViewPager无限循环效果(二)

    本文实例为大家分享了Android实现ViewPager无限循环效果的第二种方式,供大家参考,具体内容如下 原理:在Adapter中将getCount设置为无限大 package com.xiaoma ...

  3. Android 使用ViewPager 做的半吊子的图片轮播

    Android 使用ViewPager 做的半吊子的图片轮播 效果图 虽然不咋样,但是最起码的功能是实现了,下面我们来一步步的实现它. 界面 下面我们来分析一下界面的构成 整体的布局: 因为我们要做出 ...

  4. android 禁止Viewpager左右滑动功能

    今天,简单讲讲Android如何禁止Viewpager左右滑动功能. 原理: 百度后发现重写ViewPager,覆盖ViewPager的onInterceptTouchEvent(MotionEven ...

  5. Android 解决ViewPager双层嵌套的滑动问题

    Android 解决ViewPager双层嵌套的滑动问题 参考文章: (1)Android 解决ViewPager双层嵌套的滑动问题 (2)https://www.cnblogs.com/zhujia ...

  6. android 滑动缩放监听,基于Android的ViewPager动画特效实现页面左右滑动效果(实现缩放...

    基于Android的ViewPager动画特效实现页面左右滑动效果(实现缩放 基于Android的ViewPager动画特效实现页面左右滑动效果(实现缩放和透明效果) 在上一个项目的基础上做修改,项目 ...

  7. android左右滑动fragment,Android基于ViewPager+Fragment实现左右滑屏效果的方法

    本文实例讲述了Android基于ViewPager+Fragment实现左右滑屏效果的方法.分享给大家供大家参考,具体如下: 1.xml布局模板 android:id="@+id/local ...

  8. 微信小程序手把手教你实现类似Android中ViewPager控件效果

    微信小程序手把手教你实现类似Android中ViewPager控件效果 前言 需求分析 头部TAB 滑动的内容部分 最终版本 尾巴 前言 在做Android开发的时候,ViewPager是开发者使用频 ...

  9. 视频教程-Android之ViewPager,Fragment知识全讲-Android

    Android之ViewPager,Fragment知识全讲 刘志远,北京邮电大学硕士研究生, 北京育华志远科技有限公司创始人, 育华志远教育品牌负责人,育华志远课程体系打造者. 率领团队为互联网行业 ...

  10. android圆球触摸怎么实现,Android利用ViewPager实现带小圆球的图片滑动

    Android利用ViewPager实现带小圆球的图片滑动 发布时间:2020-10-02 05:55:29 来源:脚本之家 阅读:69 作者:antimage08 在上文实现的带小圆球的图片滑动的通 ...

最新文章

  1. usaco ★Fractions to Decimals 分数化小数
  2. 机器学习中的优化方法小结
  3. 乐观锁和悲观锁的区别(最全面的分析)
  4. boost::signals2模块实现使用自动连接管理的测试程序
  5. 【机器学习】次梯度(subgradient)方法
  6. 利用insert、update和delete命令可以同时对多个表进行操作_学习笔记-操作系统(1)...
  7. 信息学奥赛一本通 1027:输出浮点数 | OpenJudge NOI 1.1 07
  8. mfc控件位置随对话框窗口移动
  9. The use specified as definer('root'@'%') does not exist的解决办法
  10. python常见面试题(三)
  11. 美团遭遇反垄断调查;微信利用社交垄断封杀西瓜视频;Qt 6 for Python发布|极客头条...
  12. linux ext4 文件大小,刨根问底:ext3/ext4文件系统最大空间及单个文件大小演算法则...
  13. Java GUI——Java图形用户界面
  14. jmail邮件服务器,ASP Dimac W3 JMail 邮件收发组件函数(JMail使用详解)
  15. 特殊符号大全(无穷的想象力)
  16. 奥运五环的含义及其颜色对应码
  17. 中国大学最卷的专业,让我读上了
  18. Excel编号相同数字
  19. ORA-1555,oracle读一致性
  20. 【计算机网络】读书笔记之《HTTP权威指南》

热门文章

  1. 分析一次安装后EM启动遇到的怪问题
  2. RKFW的update.img解包和打包
  3. UITextField设置左侧图片、文字居中(占位符的位置)
  4. python3爬取网易云音乐《我们》全部评论
  5. STC 51单片机46——看门狗测试
  6. Linux_父子进程与fork
  7. 中龍鸿业安全稳定必学的盘口言语有哪些?什么是盘口言语?
  8. 2000坐标系xy坐标几位_2000坐标(国家2000坐标xy各几位)
  9. 马云的双11计算机发展史图片,阿里张建锋:今年双11是机器和人一起来指挥
  10. java毕设 springboot垃圾分类管理系统(含源码+论文)