viewPager的无限轮播加底部小圆点
2016-12-21 19:38
344 查看
功能我想大家都知道,废话不多说。
上代码
private ViewPager vp;
private LinearLayout ll;
private ArrayList<ImageView> circles;
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
vp.setCurrentItem(vp.getCurrentItem() + 1);
mHandler.sendEmptyMessageDelayed(0, 2000);
}
};
protected void initViews(View v) {
PullToRefreshScrollView scrollView = (PullToRefreshScrollView) v.findViewById(R.id.fragment_home_scrollview);
vp = (ViewPager) v.findViewById(R.id.fragment_home_viewpager);
ll = (LinearLayout) v.findViewById(R.id.fragment_home_ll);
TextView allGoods = (TextView) v.findViewById(R.id.fragment_home_allgoods);
recyclerView = (RecyclerView) v.findViewById(R.id.fragment_home_recyclerview);
//设置布局管理器
LinearLayoutManager manager = new LinearLayoutManager(getContext());
// FullyLinearLayoutManager layoutManager = new FullyLinearLayoutManager(getContext());
recyclerView.setLayoutManager(manager);
recyclerView.setNestedScrollingEnabled(false);
vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
for (int i = 0; i < circles.size(); i++) {
if (position % circles.size() == i) {
circles.get(i).setSelected(true);
} else {
circles.get(i).setSelected(false);
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
vp.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mHandler.removeCallbacksAndMessages(null);
break;
case MotionEvent.ACTION_UP:
mHandler.sendEmptyMessageDelayed(0, 2000);
break;
}
return false;
}
});
allGoods.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getActivity(), AllGoodsActivity.class));
}
});
}
//这边你可以根据需求加载你要展示的图片
private void prepareData() {
final ArrayList<ImageView> imageViews = new ArrayList<>();
circles = new ArrayList<>();
for ( int i = 0; i < 5; i++) {
final int j=i;
ImageView imageView = new ImageView(getContext());
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
ImageUtils.loadImagView(this, ad1.get(i).getImage(), imageView);
imageViews.add(imageView);
ImageView circle = new ImageView(getContext());
circle.setImageResource(R.drawable.selector_cicle);
circle.setPadding(8, 3, 3, 3);
ll.addView(circle);
circles.add(circle);
//为图片添加点击事件
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getActivity().startActivity(new Intent(getActivity(), MyWebView.class)
.putExtra("url",ad1.get(j).getAd_type_dynamic_data()));
}
});
}
ViewPagerAdapter adapter = new ViewPagerAdapter(imageViews);
vp.setAdapter(adapter);
vp.setCurrentItem(100);
circles.get(100 % circles.size()).setSelected(true);
mHandler.sendEmptyMessageDelayed(0, 2000);
}
下面是小圆点
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"
>
<size android:height="7dp" android:width="7dp"></size>
<solid android:color="@color/gray"></solid>
</shape>
小矩形
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
>
<corners android:radius="3dp"></corners>
<size android:width="12dp" android:height="7dp"></size>
<solid android:color="@color/white"></solid>
</shape>
小圆点选择器
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
>
<item android:state_selected="true" android:drawable="@drawable/shape_viewpager_rect"></item>
<item android:state_selected="false" android:drawable="@drawable/shape_viewpager_cicle"></item>
</selector>
下面是布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:id="@+id/fragment_home_rl"
android:layout_height="200dp">
<android.support.v4.view.ViewPager
android:id="@+id/fragment_home_viewpager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
/>
<LinearLayout
android:id="@+id/fragment_home_ll"
android:layout_marginTop="170dp"
android:gravity="end"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="20dp"/>
</RelativeLayout>
好了,下面是viewpager的适配器
public class ViewPagerAdapter extends PagerAdapter {
private ArrayList<ImageView> images;
public ViewPagerAdapter(ArrayList<ImageView> images) {
this.images = images;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView imageView = images.get(position%images.size());
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
}
到这viewpager的无限轮播就结束了,0.0;
上代码
private ViewPager vp;
private LinearLayout ll;
private ArrayList<ImageView> circles;
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
vp.setCurrentItem(vp.getCurrentItem() + 1);
mHandler.sendEmptyMessageDelayed(0, 2000);
}
};
protected void initViews(View v) {
PullToRefreshScrollView scrollView = (PullToRefreshScrollView) v.findViewById(R.id.fragment_home_scrollview);
vp = (ViewPager) v.findViewById(R.id.fragment_home_viewpager);
ll = (LinearLayout) v.findViewById(R.id.fragment_home_ll);
TextView allGoods = (TextView) v.findViewById(R.id.fragment_home_allgoods);
recyclerView = (RecyclerView) v.findViewById(R.id.fragment_home_recyclerview);
//设置布局管理器
LinearLayoutManager manager = new LinearLayoutManager(getContext());
// FullyLinearLayoutManager layoutManager = new FullyLinearLayoutManager(getContext());
recyclerView.setLayoutManager(manager);
recyclerView.setNestedScrollingEnabled(false);
vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
for (int i = 0; i < circles.size(); i++) {
if (position % circles.size() == i) {
circles.get(i).setSelected(true);
} else {
circles.get(i).setSelected(false);
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
vp.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mHandler.removeCallbacksAndMessages(null);
break;
case MotionEvent.ACTION_UP:
mHandler.sendEmptyMessageDelayed(0, 2000);
break;
}
return false;
}
});
allGoods.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getActivity(), AllGoodsActivity.class));
}
});
}
//这边你可以根据需求加载你要展示的图片
private void prepareData() {
final ArrayList<ImageView> imageViews = new ArrayList<>();
circles = new ArrayList<>();
for ( int i = 0; i < 5; i++) {
final int j=i;
ImageView imageView = new ImageView(getContext());
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
ImageUtils.loadImagView(this, ad1.get(i).getImage(), imageView);
imageViews.add(imageView);
ImageView circle = new ImageView(getContext());
circle.setImageResource(R.drawable.selector_cicle);
circle.setPadding(8, 3, 3, 3);
ll.addView(circle);
circles.add(circle);
//为图片添加点击事件
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getActivity().startActivity(new Intent(getActivity(), MyWebView.class)
.putExtra("url",ad1.get(j).getAd_type_dynamic_data()));
}
});
}
ViewPagerAdapter adapter = new ViewPagerAdapter(imageViews);
vp.setAdapter(adapter);
vp.setCurrentItem(100);
circles.get(100 % circles.size()).setSelected(true);
mHandler.sendEmptyMessageDelayed(0, 2000);
}
下面是小圆点
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"
>
<size android:height="7dp" android:width="7dp"></size>
<solid android:color="@color/gray"></solid>
</shape>
小矩形
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
>
<corners android:radius="3dp"></corners>
<size android:width="12dp" android:height="7dp"></size>
<solid android:color="@color/white"></solid>
</shape>
小圆点选择器
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
>
<item android:state_selected="true" android:drawable="@drawable/shape_viewpager_rect"></item>
<item android:state_selected="false" android:drawable="@drawable/shape_viewpager_cicle"></item>
</selector>
下面是布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:id="@+id/fragment_home_rl"
android:layout_height="200dp">
<android.support.v4.view.ViewPager
android:id="@+id/fragment_home_viewpager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
/>
<LinearLayout
android:id="@+id/fragment_home_ll"
android:layout_marginTop="170dp"
android:gravity="end"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="20dp"/>
</RelativeLayout>
好了,下面是viewpager的适配器
public class ViewPagerAdapter extends PagerAdapter {
private ArrayList<ImageView> images;
public ViewPagerAdapter(ArrayList<ImageView> images) {
this.images = images;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView imageView = images.get(position%images.size());
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
}
到这viewpager的无限轮播就结束了,0.0;
相关文章推荐
- ViewPager带底部圆点导航,实现自动轮播,无限滑动
- ViewPager无限自动轮播小圆点+网络加载图片+活动倒计时
- viewpager的无限轮播和小圆点的改变
- 支持图片无限轮播的BannerLayout,小圆点,提示栏,页码统统满足
- ViewPager自动无限轮播加小圆点
- ViewPager自动轮播+底部文字动态+底部小圆点动态滑动
- Android ViewPager无限循环实现底部小圆点动态滑动
- 无限轮播加小圆点(从网络获取图片)
- 集成实现ViewPager的无限轮播和圆点变动
- viewpager无限轮播(从网络上获取图片小圆点)
- ViewPager+小圆点的无限轮播
- js轮播图透明度切换(带上下页和底部圆点切换)
- 无限轮播图的布局和小圆点的实现
- Viewpager 自动轮播(无限循环) ,手动滑动时停止轮播+底部小圆点(二)
- ViewPager实现无限轮播
- ViewPager实现自动轮播+手动添加小圆点的Mainactivity
- Viewpager自动无限轮播+小圆点
- ViewPager底部圆点指示器
- viewpager无限轮播、加小圆点
- ViewPager实现无限循环轮播图控件