使用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);
}
});
转载于:https://www.cnblogs.com/android-blogs/p/5724725.html
使用viewPage实现图片轮播相关推荐
- Android 使用ViewPager 做的半吊子的图片轮播
Android 使用ViewPager 做的半吊子的图片轮播 效果图 虽然不咋样,但是最起码的功能是实现了,下面我们来一步步的实现它. 界面 下面我们来分析一下界面的构成 整体的布局: 因为我们要做出 ...
- 制作支持View,图片轮播的Banner
之前有一个项目中有用到轮播,不过不是简单的轮播图片就完了,而是要轮播很多个View,一开始我的想法和大家一样在github在一个算了,哈哈,不过在试用了很多个项目之后都觉得不能完全满足我的需求,大部分 ...
- Android图片轮播效果
适配器 import android.support.v4.view.PagerAdapter; import android.util.Log; import android.view.View; ...
- Android之——史上最简单图片轮播广告效果实现
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/48049913 如今的Android开发需求越来越来多,实现效果越来越酷炫,很多An ...
- 网站项目必备——12款白富美型 jQuery 图片轮播插件
转自:http://www.cnblogs.com/lhb25/archive/2013/01/06/jquery-image-carousel-effect.html 图片轮播是网站中的常用功能,用 ...
- DEDECMS后台上传banner图控制图片轮播
将图片轮播做到后台控制,无论是dedecms还是其他的程序都是一样的重要,方便客户自己调试,不然动不动就拿FTP开刷,一个是操作不方便,增加了使用上的难度,另外也有一定的风险,很可能由于操作生疏,误操 ...
- android首页图片轮播效果,Android_Android自动播放Banner图片轮播效果,先看一下效果图支持本地图 - phpStudy...
Android自动播放Banner图片轮播效果 先看一下效果图 支持本地图片以及网络图片or本地网络混合. 使用方式: android:id="@+id/banner" andro ...
- 淘宝装修:第一日 —— 图片轮播
先添加一个自定义内容区,进入源码编辑,如下图所示: 添加源码如下: <TABLE border=0 cellSpacing=0 cellPadding=0 width=773 height=22 ...
- 电子商店——图片轮播
电子商店的图片轮播功能,有以下特点 1. 高性能 2. 美观大方 3. 兼容IE 6.IE 8+和Firefox 3+等浏览器 4. 总体积要小(除图片外)3k 5. js简单易懂(40行) 首先让我 ...
最新文章
- Spark基础知识解答
- centos7.0 安装nginx
- 2015.08.15冒泡排序
- MySQL的binlog日志
- numpy.argmax详解
- java类函数默认的保护级别_事件说明
- mysql数据库 day05
- Codeforces Round #311 (Div. 2)B. Pasha and Tea 水题
- python之路 -- 并发编程之进程
- win7下还原快捷方式的打开方式
- 【fences下载】
- 使用Python编写简单的端口扫描程序
- AWS学习(一)——AWS云技术基础
- React18正式版发布,未来发展趋势是?
- 解剖SQLSERVER 第十七篇 使用 OrcaMDF Corruptor 故意损坏数据库(译)
- Twitter账号总被关联封号? 如何解决?
- nokogiri 足球比赛数据
- 变身“流程公司” 什么工作流合适
- 1013---IBM X3850 X6 重新构建Raid5---过程记录
- 扎心!原来在月薪3000和30000的差距竟是这样
热门文章
- centos 6.5 rsync+inotify 实时同步
- hc06发送at无回应_(完结)(温言穆霆琛)全章节~~全文阅读无弹窗广告
- Preparedstatement和statement 区别
- 数据科学入门与实战:Matplotlib绘图基础一
- c语言怎么算n以内素数,关于求N以内素数的一点小问题(N小于一亿)
- java连接kafka接收不到数据_Kafka客户端无法接收消息
- equalwith java_java中==与equal()方法的区别
- java关闭数据库连接语句,java下连接mysql数据库 ——删除语句——delete
- 实验八 java多线程操作_20182310实验八实验报告
- java 字符串加一个int_Java 输入多行字符串或者多个int数值