本文实例为大家分享了Android自动播放Banner图片轮播的具体代码,供大家参考,具体内容如下

先看一下效果图

支持本地图片以及网络图片or本地网络混合。

使用方式:

android:id="@+id/banner"

android:layout_width="match_parent"

android:layout_height="230dip">

核心代码:

int length = mList.size();

View view = LayoutInflater.from(mContext).inflate(R.layout.banner_view,this,true);

LinearLayout ll = (LinearLayout) view.findViewById(R.id.ll_points);

vp= (ViewPager) view.findViewById(R.id.vp);

ll.removeAllViews();

LinearLayout.LayoutParams ll_parmas = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);

ll_parmas.leftMargin=5;

ll_parmas.rightMargin=5;

for(int i=0;i

ImageView img = new ImageView(mContext);

img.setLayoutParams(ll_parmas);

if(i==0){

img.setImageResource(R.mipmap.dot_focus);

}else{

img.setImageResource(R.mipmap.dot_blur);

}

ll.addView(img);

mImgs.add(img);

final ImageView imgforview = new ImageView(mContext);

imgforview.setOnClickListener(this);

imgforview.setScaleType(ImageView.ScaleType.FIT_XY);

if(mList.get(i).getType()==0){//本地图片

imgforview.setImageResource(mList.get(i).getDrawableforint());

}else{//网络

Glide.with(mContext).load(mList.get(i).getDrawableforurl()).diskCacheStrategy(DiskCacheStrategy.ALL).into(imgforview);

// Glide.with(mContext).load(mList.get(i).getDrawableforurl()).listener(new RequestListener() {

// @Override

// public boolean onException(Exception e, String model, Target target, boolean isFirstResource) {

// Log.d("yu","Faile:"+e.toString());

// return false;

// }

//

// @Override

// public boolean onResourceReady(GlideDrawable resource, String model, Target target, boolean isFromMemoryCache, boolean isFirstResource) {

// imgforview.setImageDrawable(resource);

// return false;

// }

// }).into(imgforview);

// Log.d("yu","url: "+mList.get(i).getDrawableforurl());

}

mViews.add(imgforview);

}

vp.setAdapter(new MyAdapter());

vp.addOnPageChangeListener(onPageChange);

自动轮播利用的是handler的postdelay方法。

private Runnable task = new Runnable() {

@Override

public void run() {

if(isAuto){

currentItem = currentItem%(mViews.size());

// Log.d("yu","runalbe "+currentItem);

if(currentItem==0){

vp.setCurrentItem(currentItem,false);

}else{

vp.setCurrentItem(currentItem);

}

currentItem++;

mHandle.postDelayed(task,delaytime);

}else{

mHandle.postDelayed(task,delaytime);

}

}

};

利用isAuto判断是否正在自动轮播 如果为false 不自动切换item。isAuto赋值操作位于OnPageChangeListener的onPageScrollStateChanged方法中:

public void onPageScrollStateChanged(int state) {

switch (state){

case ViewPager.SCROLL_STATE_IDLE://用户什么都没有操作

isAuto=true;

currentItem = vp.getCurrentItem();

// Log.d("yu","IDLE"+currentItem);

// if(vp.getCurrentItem()==mViews.size()){

// vp.setCurrentItem(0,false);

// }

break;

case ViewPager.SCROLL_STATE_DRAGGING://正在滑动

isAuto =false;

break;

case ViewPager.SCROLL_STATE_SETTLING://滑动结束

isAuto=true;

break;

}

}

当状态为SCROLL_STATE_DRAGGING时 说明用户正在操作 ,看下源码中的解释:

/**

* Indicates that the pager is in an idle, settled state. The current page

* is fully in view and no animation is in progress.

*/

public static final int SCROLL_STATE_IDLE = 0;

/**

* Indicates that the pager is currently being dragged by the user.

*/

public static final int SCROLL_STATE_DRAGGING = 1;

/**

* Indicates that the pager is in the process of settling to a final position.

*/

public static final int SCROLL_STATE_SETTLING = 2;

大致意思呢就是 0代码没有任何操作。1页面正在被用户拖动。2代表成功切换至下一页面。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

android 自动播放 幻灯片,Android自动播放Banner图片轮播效果相关推荐

  1. android首页图片轮播效果,Android_Android自动播放Banner图片轮播效果,先看一下效果图支持本地图 - phpStudy...

    Android自动播放Banner图片轮播效果 先看一下效果图 支持本地图片以及网络图片or本地网络混合. 使用方式: android:id="@+id/banner" andro ...

  2. Android App图片轮播效果的组件化

    简介 一个通用的图片轮播效果的通用组件,方便开发者快速集成. 初学者,其实应该实现一个自定义控件的,改天有空,在学习下吧,学习能力一般,以前也没写过java,这个组件都写了好久,惭愧啊. 背景 笔者参 ...

  3. android 自适应图片轮播,Android使用Recyclerview实现图片轮播效果的方法

    Android使用Recyclerview实现图片轮播效果的方法 发布时间:2020-06-23 15:47:58 来源:亿速云 阅读:113 作者:清晨 这篇文章将为大家详细讲解有关Android使 ...

  4. Axure教程-Banner图片轮播(二)-热区与条件判断

    在<Axure教程 Banner图片轮播(一)>基础上增加图片切换按钮. 效果: 轮播2 元件:动态面板和热区 步骤: 1,继续添加动态面反,设置如下: 2,在state1中添加添加三个& ...

  5. 响应式banner图片轮播布局代码

    响应式banner图片轮播布局代码 基于jQuery制作企业家具网站首页banner响应式图片轮播,支持带左右按钮控制图片淡出淡现切换效果.手机自适应屏幕大小.修改:添加json动态数据轮播图片. 演 ...

  6. 【Android】首页图片轮播效果(淘宝、京东首页广告效果)

    目前很多APP中都有这个图片轮播的功能,项目中也时常会用到,图片轮播一般是在用户不主动进行切换的时候每隔一段时间进行自动切换,用户主动切换时停止自动切换,手指离开时重新计时开始轮播,下面我们就来实现这 ...

  7. Android使用viewpager实现图片轮播效果

    自定义View实现图片轮播,实现了图片自动轮播,手动滑动,轮播标题,以及点击事件. 里面有很多注释 一.文件布局 二.代码 ImageBannerViewGroup类 /*** Created by ...

  8. Android图片轮播效果

    适配器 import android.support.v4.view.PagerAdapter; import android.util.Log; import android.view.View; ...

  9. Android fragment中广告图片轮播效果的实现(附图 )

    作者刚刚接触android小白一枚,这是本人在CSDN上写的第一篇博客..出于写博客的目的:一也是最重要的想让像我这样的android初学者少走点弯路,本以为这个功能实现起来挺简单的,但是项目要求在f ...

最新文章

  1. (转)angular进行md5加密 base64加密 哈希加密
  2. 关于ABAP高级顾问应该掌握的技术
  3. 【最简单的例子】Editor.md的初步使用
  4. python中argsort,sort 和 sorted,operator.itemgetter函数
  5. duilib进阶教程 -- 改进窗口拖动 (12)
  6. html5页面结构案例,前端学习笔记(五)HTML+CSS静态页面实战案例:幸福西饼首页和百度首页...
  7. C++实现树的基本操作,界面友好,操作方便,运行流畅,运用模板
  8. [转载] python中sort,sorted,reverse,reversed的区别
  9. iOS:授权用户定位NSLocationManager的使用
  10. hadoop Configured Configrable Configuration Tool 源码详解
  11. 【HAVENT原创】nginx 配置
  12. 打太极不协调的二三事
  13. Hibernate表间映射时HHH000142异常
  14. 台式计算机关机后自行重启,台式电脑点关机后又自动重启怎么处理
  15. python判断负数_python中的负数
  16. 我参加NVIDIA Sky Hackathon 训练文件的路径设置
  17. 可穿戴产品中四大心率监测方法盘点
  18. Hair卡通渲染的效果(各向异性)
  19. Linux常用语法笔记
  20. Codeforces C. Ehab and Path-etic MEXs (树 / 构造 / MEX)

热门文章

  1. 直播房间竞拍实现-PHP7.3+swool扩展+redis缓存+Apicloud业务实现
  2. 美团里的科学家和外卖中的 AI
  3. Mac的代理proxies配置Bypass proxy settings for these Hosts Domains 无法写多个,逗号自动变顿号
  4. 入耳式无线蓝牙耳机哪款好?无线入耳式蓝牙耳机音质排行榜
  5. 深度学习:鞍点以及如何跳出鞍点
  6. Linux ===> Linux设置临时ip命令
  7. 这几张图片让你每天多扫几张福,还有可能出现敬业福
  8. PotPlayer 旋转视频【快捷键:Alt + K 循环旋转】
  9. Java项目:校园运动会管理系统(java+JSP+Servlet+JavaBean+Mysql)
  10. css水平居中和垂直居中