<?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(); } }