ViewPager图片无限自动轮播
2017-03-31 11:20
471 查看
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="300dp"></android.support.v4.view.ViewPager> <LinearLayout android:orientation="horizontal" android:layout_alignBottom="@id/vp" android:layout_marginBottom="10dp" android:gravity="center" android:id="@+id/liear" android:layout_width="match_parent" android:layout_height="20dp"></LinearLayout> </RelativeLayout>
package xixinxin.bawie.com.item1.activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import com.google.gson.Gson; import org.xutils.common.Callback; import org.xutils.http.RequestParams; import org.xutils.x; import java.util.List; import xixinxin.bawie.com.item1.R; import xixinxin.bawie.com.item1.bean.User; public class MainActivity extends AppCompatActivity { private ViewPager vp; private LinearLayout liear; private List<User.ResultBean.AdvsBean> advs; private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化注解 x.view().inject(this); //找控件 intiView(); //获取网络数据 getServiceData(); } private void getServiceData() { String url = "http://www.babybuy100.com/API/getShopOverview.ashx"; RequestParams params = new RequestParams(url); x.http().get(params, new Callback.CacheCallback<String>() { private String result = null; @Override public boolean onCache(String result) { this.result = result; return false; } @Override public void onSuccess(String result) { if (result != null) { this.result = result; } getData(result); } @Override public void onError(Throwable ex, boolean isOnCallback) { } @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { } }); } private void getData(String result) { Gson gson = new Gson(); User user = gson.fromJson(result, User.class); advs = user.getResult().getAdvs(); vp.setAdapter(new MyAdapter()); //创建小圆点 initPoint(); vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { //获取小圆点数据 int childCount = liear.getChildCount(); for (int i = 0; i < childCount; i++) { View childAt = liear.getChildAt(i); //页面改变时切换小圆点 childAt.setEnabled(i == position % (advs.size()) ? false : true); } } @Override public void onPageScrollStateChanged(int state) { } }); } private void initPoint() { for (int i = 0; i < advs.size(); i++) { //创建小圆点控件 View view = new View(this); //设置 背景选择器 view.setBackgroundResource(R.drawable.selector); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(20, 20); //创建小圆点间距 params.rightMargin = 10; //把小圆点添加到容器 liear.addView(view, params); view.setTag(i); } View view = liear.getChildAt(0); view.setEnabled(false); } private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 0) { int current = (int) msg.obj; vp.setCurrentItem(current + 1); } } }; public void startSwitch() { new Thread() { @Override public void run() { while (true) { int item = vp.getCurrentItem(); Message msg = Message.obtain(); msg.what = 0; msg.obj = item; handler.sendMessageDelayed(msg, 2000); } } }.start(); } public void stopSwitch() { handler.removeCallbacksAndMessages(null); } public class MyAdapter extends PagerAdapter { @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView imageView = new ImageView(MainActivity.this); x.image().bind(imageView, advs.get(position % advs.size()).getPic()); container.addView(imageView); return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } } private void intiView() { vp = (ViewPager) findViewById(R.id.vp); liear = (LinearLayout) findViewById(R.id.liear); } @Override protected void onStart() { super.onStart(); startSwitch(); } @Override protected void onStop() { super.onStop(); stopSwitch(); } }
相关文章推荐
- ViewPager图片自动+手动左右无限轮播
- 自定义ViewPager 图片无限自动轮播
- viewpager自动无限轮播(网络请求的图片)
- android viewPager网络加载图片无限自动轮播
- ViewPager的自动无限轮播
- Android使用ViewPager实现图片轮播(高度自适应,左右循环,自动轮播)
- ViewPager + Handler 实现的图片自动轮播
- 安卓:ViewPager,添加图片方式2及标题版,自动轮播版(第一种)
- android的ViewPager实现加载网络图片并自动轮播
- ViewPager的图片无限轮播
- 获取网络图片+ViewPager+自动轮播
- ViewPager无限自动轮播+动画
- android无限轮播banner图片--viewpager
- ViewPager轮播图:自动无限轮播,手指长按停止,实现点击事件(实用版)
- ViewPager详解(三)——自动轮播图片小于三张的问题解决
- ViewPager无限自动轮播
- handler+viewpager无限轮播图片
- 自定义ViewPager自动轮播图片(二)
- ViewPager+Handler实现图片自动轮播的效果
- Android 仿网易新闻 ViewPager 实现图片自动轮播