使用viewPage实现图片轮播
概述
前期准备
布局
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v4.view.ViewPager android:id="@+id/viewpage" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v4.view.ViewPager> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom"> <LinearLayout android:id="@+id/root" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:orientation="horizontal"></LinearLayout> </RelativeLayout></FrameLayout>编码
初始化
LayoutInflater.from(context).inflate(R.layout.activtity_viewpage,this);
root = (LinearLayout) findViewById(R.id.root);viewPager= (ViewPager) findViewById(R.id.viewpage); adapter=new MyAdapter();viewPager.setAdapter(adapter);viewPager.addOnPageChangeListener(this); @Override public int getCount() { return Images.mgIds.length; } @Override public boolean isViewFromObject(View view, Object object) { return object==view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(imageViews.get(position)); } @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(imageViews.get(position)); return imageViews.get(position); } imageViews=new ArrayList<>(); for (int i = 0; i< Images.mgIds.length; i++){ ImageView img=new ImageView(context); img.setImageResource(Images.mgIds[i]); imageViews.add(img); } points = new ArrayList<>(); for (int i = 0; i < Images.mgIds.length; i++) { ImageView img = new ImageView(context); if (i == position) { img.setImageResource(R.drawable.page_indicator_focused); } else { img.setImageResource(R.drawable.page_indicator_unfocused); } root.addView(img); points.add(img); } /** * 当前展示的第position张图片 * @param position */ @Override public void onPageSelected(int position) { this.position=position; setImageBackGround(position); }增加 自动播放功能
timer=new Timer(); if (task!=null){ task.cancel(); } task=new viweTask(); timer.schedule(task,2000,3000);/** * 自动播放任务 */ private class viweTask extends TimerTask{ @Override public void run() { if (position == Images.mgIds.length - 1) { position = 0; } else { position++; } handler.sendEmptyMessage(1); } }private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); viewPager.setCurrentItem(position); setImageBackGround(position); } }; /** * * @param state 1手指触摸屏幕;2 滑动;0 滑动完成 */ @Override public void onPageScrollStateChanged(int state) { if (state==1){ playing=false; }else { playing=true; } }增加 每一项的点击事件回调
//设置回调接口 private OnPageImageItemClick mOnPageImageItemClick; public interface OnPageImageItemClick{ public void PageImageItemClick(ImageView imageItem,int position); } public void setOnPageImageItemClick(OnPageImageItemClick click){ this.mOnPageImageItemClick=click; } final ImageView nowView=imageViews.get(position); nowView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) {// Log.d(TAG, "position:" + position+" clicked!"); mOnPageImageItemClick.PageImageItemClick(nowView,position); } }); viewPager.setOnPageImageItemClick(new MyViewPager.OnPageImageItemClick() { @Override public void PageImageItemClick(ImageView imageItem, int position) { Log.d("MainActivity", "position:" + position); } });使用viewPage实现图片轮播的更多相关文章
- Android 使用ViewPager 做的半吊子的图片轮播
Android 使用ViewPager 做的半吊子的图片轮播 效果图 虽然不咋样,但是最起码的功能是实现了,下面我们来一步步的实现它. 界面 下面我们来分析一下界面的构成 整体的布局: 因为我们要做出 ...
- 原生js+css3实现图片自动切换,图片轮播
运用CSS3transition及opacity属性 制作图片轮播动画 自己这两天根据用js来控制触发CSS3中transition属性,从而写出来的以CSS3动画为基础,js控制过程的图片轮播 运用 ...
- 纯javaScript、jQuery实现个性化图片轮播
纯javaScript实现个性化图片轮播 轮播原理说明<如上图所示>: 1. 画布部分(可视区域)属性说明:overflow:hidden使得超出画布部分隐藏或说不可见.position: ...
- jQuery个性化图片轮播效果
jQuery个性化图片轮播效果 购物产品展示:图片轮播器<效果如下所示> 思路说明: 每隔一段时间,实现图片的自动切换及选项卡选中效果,鼠标划入图片动画停止,划出或离开动画开始 两个区域: ...
- 原生JS实现"旋转木马"效果的图片轮播插件
一.写在最前面 最近都忙一些杂七杂八的事情,复习软考.研读经典...好像都好久没写过博客了... 我自己写过三个图片轮播,一个是简单的原生JS实现的,没有什么动画效果的,一个是结合JQuery实现的, ...
- 基于面向对象的图片轮播(js原生代码)
无论你想走多远,你都需要不断地走下去.前端最精华的便是原生的js,这也是我们前端工程师的技术分层的重要指标,也提现这你的代码能力,开发的水平.废话不多说,进入今天的主要分享————基于面向对象思想的图 ...
- jquery 图片轮播demo实现
转载注明出处!!! 转载注明出处!!! 转载注明出处!!! 图片轮播demo,弄清楚过程其实是一个很简单的东西,看网上都没有什么实质性的代码,就自己把过程捋了一遍实现了. 这次因为随手写的,所以没有做 ...
- PgwSlideshow-基于Jquery的图片轮播插件
0 PgwSlideshow简介 PgwSlideshow是一款基于Jquery的图片轮播插件,基本布局分为上下结构,上方为大图轮播区域,用户可自定义图片轮播切换的间隔时间,也可以通过单击左右方向按键 ...
- 一分钟搞定AlloyTouch图片轮播
一分钟搞定AlloyTouch图片轮播 轮播图也涉及到触摸和触摸反馈,同时,AlloyTouch可以把惯性运动打开或者关闭,并且设置min和max为运动区域,超出会自动回弹.除了一般的竖向滚动,A ...
随机推荐
- Tarjan算法及其应用
Tarjan算法及其应用 引入 tarjan算法可以在图上求解LCA,强连通分量,双联通分量(点双,边双),割点,割边,等各种问题. 这里简单整理一下tarjan算法的几个应用. LCA http:/ ...
- Python虚拟机中的一般表达式(一)
在Python虚拟机框架这一章中,我们通过PyEval_EvalFrameEx看到了Python虚拟机的整体框架.而这章开始,我们将了解Python虚拟机是如何完成对Python的一般表达式的执行,这 ...
- webdriver高级应用- 测试过程中发生异常或断言失败时进行屏幕截图
封装了三个类来实现这个功能: 1.DataUtil.py 用于获取当前的日期以及时间,用于生成保存截图文件的目录名,代码如下: #encoding=utf-8 import time from dat ...
- python学习-- for和if结合使用
for和if结合使用: <h1> {% for i in contents %} {{ i }}{# 注意i也要用两个大括号 #} {% endfor %} </h1> < ...
- 使用sami生成文档
从composer安装sami $ composer require sami/sami composer自动配置完以后,可以先测试一下是否安装成功.只要不带参数的运行一下sami,就会知道结果. $ ...
- 下载,配置环境变量,第一个demo
一.在 http://www.oracle.com 下载java JDK 安装到自定义的地方. 二.配置环境变量:在我的电脑→高级系统设置→环境变量 ① 找到Path新增一个路径(该路径为JDK存放的 ...
- 刷题总结——Cut the Sequence(POJ 3017 dp+单调队列+set)
题目: Description Given an integer sequence { an } of length N, you are to cut the sequence into sever ...
- 你所在的公司是如何实施DEVOPS的?
工欲善其事,必先利其器,现在大家在DevOps领域最关注的还是在工具层面.下面是我跟这么多公司接触下来,大家使用比较多的工具:1.监控工具比较老牌的就是Zabbix,Nagios,用Zabbix的感觉 ...
- 5whys分析法在美团工程师中的实践
转载美团博客:https://tech.meituan.com/5whys-method.html 前言 网站的质量和稳定性对于用户和公司来说至关重要,但是在网站的快速发展过程中,由于各种原因导致事故 ...
- JAVA Apache POI 之sax 解析10万级大数量数据
第一步让我们来看看我们的大量数据的excel 文件 好的下面第二步看一下代码: package com.chinait.utils; /** * 写这个东西主要是最近做了一个联通的数据迁移工作,他们就 ...