ViewPager总结
https://github.com/youth5201314/banner
if (banner == null)
return;
//设置banner样式
banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR);
//设置图片加载器
banner.setImageLoader(new GlideImageLoader());
//设置图片集合
banner.setImages(images);
//设置banner动画效果
banner.setBannerAnimation(Transformer.DepthPage);
//设置标题集合(当banner样式有显示title时)
// banner.setBannerTitles(titles);
//设置自动轮播,默认为true
banner.isAutoPlay(true);
//设置轮播时间
banner.setDelayTime(5000);
//设置指示器位置(当banner模式中有指示器时)
banner.setIndicatorGravity(BannerConfig.CENTER);
//banner设置方法全部调用完毕时最后调用
banner.start();
}
1.添加布局fragment_hall_head.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/transparent"
android:orientation="vertical">
<FrameLayout
android:id="@+id/fl"
android:layout_width="match_parent"
android:layout_height="300px"> <android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="300px" /> <LinearLayout
android:id="@+id/ll_points"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal"
android:layout_marginBottom="11dp"
android:orientation="horizontal" /> </FrameLayout>
</LinearLayout> 2.添加资源文件
shape_xiao_yuan_quan_selected.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<size
android:width="8dp"
android:height="8dp" />
<stroke
android:width="1px"
android:color="@color/colorAccent" />
<solid android:color="@color/colorAccent" />
</shape>
shape_xiao_yuan_quan_nomal.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<size
android:width="8dp"
android:height="8dp" />
<stroke
android:width="1px"
android:color="@color/white" />
<solid android:color="@color/white" />
</shape> 3.查找控件
List<String> imgesUrl = new ArrayList<>();
imgesUrl.add("http://img3.fengniao.com/forum/attachpics/913/114/36502745.jpg");
imgesUrl.add("http://imageprocess.yitos.net/images/public/20160910/99381473502384338.jpg");
imgesUrl.add("http://imageprocess.yitos.net/images/public/20160910/77991473496077677.jpg");
imgesUrl.add("http://imageprocess.yitos.net/images/public/20160906/1291473163104906.jpg");
Banner banner = new Banner(MainActivity.this, imgesUrl, findViewById(R.id.fl));
4.添加动画类:
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout; import java.util.List; /**
* Created by Administrator on 2017/2/28.
*/ public class Banner {
private LinearLayout llPoints; //图片里面的小圆点
private ViewPager viewPager; //图片轮播
List<String> imgesUrl;
Context context;
View view; public Banner(Context context, List<String> imgesUrl, View view) {
this.context = context;
this.imgesUrl = imgesUrl;
this.view = view;
viewPager = (ViewPager) view.findViewById(R.id.viewPager);
llPoints = (LinearLayout) view.findViewById(R.id.ll_points);
startBanner();
} /**
* 处理轮播图
*/ public void startBanner() {
MyPagerAdapter myPagerAdapter = new MyPagerAdapter();
viewPager.setAdapter(myPagerAdapter);
viewPager.setCurrentItem(imgesUrl.size() * 10000);
startRool();
//初始化ViewPager轮播小圆圈
llPoints.removeAllViews();
for (int i = 0; i < imgesUrl.size(); i++) {
ImageView point = new ImageView(context);
if (i == 0) {
point.setImageResource(R.drawable.shape_xiao_yuan_quan_selected);
} else {
point.setImageResource(R.drawable.shape_xiao_yuan_quan_nomal);
}
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
if (i > 0) {
params.leftMargin = dp2px(context, 8);
}
llPoints.addView(point, params);
}
//ViewPager的轮播效果(小圆圈改变)
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
position = position % imgesUrl.size();
for (int i = 0; i < llPoints.getChildCount(); i++) {
ImageView image = (ImageView) llPoints.getChildAt(i);
if (i == position) {
image.setImageResource(R.drawable.shape_xiao_yuan_quan_selected);
} else {
image.setImageResource(R.drawable.shape_xiao_yuan_quan_nomal);
}
}
} @Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override
public void onPageScrollStateChanged(int state) { }
}); }
/**
* 轮播图的adapter
*/ class MyPagerAdapter extends PagerAdapter {
@Override
public int getCount() {
return Integer.MAX_VALUE;
} @Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
} @Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
} @Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView imageView = new ImageView(context);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
// ImageLoader.getInstance().displayImage(imgesUrl.get(position % imgesUrl.size()), imageView);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { }
});
imageView.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
handler.removeCallbacksAndMessages(null);
break;
case MotionEvent.ACTION_UP:
handler.sendEmptyMessageDelayed(1, 2000);
break;
/**
* 当保持按下操作,并从此控件移到外层控件时,就会触发ACTION_CANCEL事件时,
* 当前的手势被中断,不会在接收它的记录
* 将它当做ACTION_UP事件进行处理比较好
*/
case MotionEvent.ACTION_CANCEL:
handler.sendEmptyMessageDelayed(1, 2000);
break; default:
break;
}
// true处理这个事件
return true;
}
}); container.addView(imageView);
return imageView;
}
} Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 1) {
int currentItem = viewPager.getCurrentItem();
currentItem++;
viewPager.setCurrentItem(currentItem);
startRool();
}
} }; private void startRool() {
handler.sendEmptyMessageDelayed(1, 3000);
} public static int dp2px(Context context, int dp) {
// 获取像素密码
float density = context.getResources().getDisplayMetrics().density;
return (int) (dp * density + 0.5f);
}
}
ViewPager总结的更多相关文章
- 踩石行动:ViewPager无限轮播的坑
2016-6-19 前言 View轮播效果在app中很常见,一想到左右滑动的效果就很容易想到使用ViewPager来实现.对于像我们常说的banner这样的效果,具备无限滑动的功能是可以用ViewPa ...
- Android ViewPager打造3D画廊
本文已授权微信公众号:鸿洋(hongyangAndroid)在微信公众号平台原创首发. 网上有很多关于使用Gallery来打造3D画廊的博客,但是在关于Gallery的官方说法中表明: This cl ...
- Android中Fragment和ViewPager那点事儿(仿微信APP)
在之前的博文<Android中使用ViewPager实现屏幕页面切换和引导页效果实现>和<Android中Fragment的两种创建方式>以及<Android中Fragm ...
- TabLayout + ViewPager
一.实现思路 1.在build.gradle中添加依赖,例如: compile 'com.android.support:support-v4:23.4.0'compile 'com.android. ...
- android内部培训视频_第三节(3)_常用控件(ViewPager、日期时间相关、ListView)
第三节(2):常用控件之ViewPager.日期时间相关.ListView 一.ViewPager 实例:结合PagerAdapter滑动切换图片 二.日期时间相关:AnalogClock\Dig ...
- 简单的ViewPager了解Scroller类
View滑动是自定义ViewGroup中十分常见的一个功能.Android提供了多种View滑动的方法. layout方法 offsetLeftAndRight()与offsetTopAndBotto ...
- PagerSlidingTabStrip介绍及使用,让ViewPager更绚丽
转载请注明出处http://blog.csdn.net/harryweasley/article/details/42290595,谢谢. 以前一直想着,ViewPager中间的那个横线怎么跟着屏幕的 ...
- 详细分析Android viewpager 无限循环滚动图片
由于最近在忙于项目,就没时间更新博客了,于是趁着周日在房间把最近的在项目中遇到的技术总结下.最近在项目中要做一个在viewpager无限滚动图片的需求,其实百度一下有好多的例子,但是大部分虽然实现了, ...
- 一行代码引入 ViewPager 无限循环 + 页码显示
(出处:http://www.cnblogs.com/linguanh) 前序: 网上的这类 ViewPager 很多,但是很多都不够好,体现在 bug多.对少页面不支持,例如1~2张图片.功能整合不 ...
- 使用ViewPager实现自动轮播
很多APP中都实现了类似引导页的自动轮播,不由得想到昨天的引导页上修改一下代码实现轮播. 其实大体上只需要添加一个线程循环执行就可以了. 项目已同步至:https://github.com/nanch ...
随机推荐
- 宝宝舌苔发白,消化不好 http://wenwen.soso.com/z/q103192661.htm
你好,宝宝咳嗽,如果舌苔是白的,则是风寒咳嗽,说明孩子寒重,咳嗽的痰也较稀.白黏,并兼有鼻塞流涕,这时应吃一些温热.化痰止咳的食品.如果孩子的舌苔是黄.红,则是风热咳嗽,说明孩子内热较大,咳嗽的痰黄. ...
- LeetCode OJ-- Maximum Subarray @
https://oj.leetcode.com/problems/maximum-subarray/ 给了一个数组一列数,求其中的连续子数组的最大和. O(n)复杂度 class Solution { ...
- webservice原理及基于cxf开发的基本流程
一.SOA和webservice SOA(service-Oriented Architecture)是面向服务的架构,是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的 ...
- QUICK START GIT
install git at you laptop https://git-scm.com/downloads config git at you laptop git config --global ...
- ios学习的博客地址
1.文顶顶博客 http://www.cnblogs.com/wendingding/ 2.唐巧的博客: http://blog.devtang.com/ 唐巧总结的40个国人iOS技术博客 博客 ...
- 洛谷——P1977 出租车拼车
题目背景 话说小 x 有一次去参加比赛,虽然学校离比赛地点不太远,但小 x 还是想坐 出租车去.大学城的出租车总是比较另类,有“拼车”一说,也就是说,你一个人 坐车去,还是一堆人一起,总共需要支付的钱 ...
- centos 7 mysql 离线安装教程
1. 解压下载的zip包,会发现有以下几个rpm包: MySQL-client-advanced-5.6.22-1.el7.x86_64.rpm MySQL-devel-advanced-5.6.22 ...
- Java开发笔记(一百零三)线程间的通信方式
前面介绍了多线程并发之时的资源抢占情况,以及利用同步.加锁.信号量等机制解决资源冲突问题,不过这些机制只适合同一资源的共享分配,并未涉及到某件事由的前因后果.日常生活中,经常存在两个前后关联的事务,像 ...
- html中常用的标签小结
内容详细标签: <h1>~<h6>标题标签<pre>格式化文本<u>下划线(underline)<i>斜体字(italics)<cit ...
- Win7无法启动,缺少系统文件ecache.sys怎么办
网上下载ecache.sys这个文件放到System32目录下即可 http://www.wenjian.net/file/ecache.sys.html