public class MainActivity extends Activity {
private ViewPager viewPager;
private List<Integer> list;
private RadioGroup group;
private int i;
//1.
private Handler handler = new Handler(){
//接受消息并且进行处理消息
public void handleMessage(android.os.Message msg) {
//6设置
viewPager.setCurrentItem(msg.what);
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取资源ID
viewPager = (ViewPager) findViewById(R.id.viewpager);
group = (RadioGroup) findViewById(R.id.group);
//定义数据源
list = new ArrayList<Integer>();
list.add(R.drawable.img_nature1);
list.add(R.drawable.img_nature2);
list.add(R.drawable.img_nature3);
list.add(R.drawable.img_nature4);
list.add(R.drawable.img_nature5);
//创建适配器
ViewpagerAdapter adapter = new ViewpagerAdapter(this, list);
viewPager.setAdapter(adapter);
//将图片设置在中间的位置进行展示
viewPager.setCurrentItem(list.size()*10000);
//3.得到图片当前的位置
i = viewPager.getCurrentItem();
//2.开启线程
new Thread(){
public void run() {
//4.循环每秒进行增加
while (true) {
try {
//休眠2秒
sleep(2000);
i++;
//5发送
handler.sendEmptyMessage(i);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
}.start();
//设置ViewPager滑动监听 滑动可以控制Button的选中
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
//页选中
@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
//3.
switch (arg0%list.size()) {
case 0:
group.check(R.id.but01);//选中对应的button
break;
case 1:
group.check(R.id.but02);//选中对应的button
break;
case 2:
group.check(R.id.but03);//选中对应的button
break;
case 3:
group.check(R.id.but04);//选中对应的button
break;
case 4:
group.check(R.id.but05);//选中对应的button
break;
default:
break;
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
适配器的设置:
public class ViewpagerAdapter extends PagerAdapter{
private Context context;
private List<Integer> list;
public ViewpagerAdapter(Context context, List<Integer> list) {
super();
this.context = context;
this.list = list;
}
//条目的总数
@Override
public int getCount() {
// TODO Auto-generated method stub
return Integer.MAX_VALUE;//1.将图片的数量最大
}
//View得到的图片和Object添加的图片是否匹配 如果匹配返回true
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
}
//添加
@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
//创建ImageView
ImageView imageView = new ImageView(context);
//设置图片
//setImageResource 对应SRC 2进行取模进行循环使用图片
imageView.setImageResource(list.get(position%list.size()));
//拉伸图片 全部展示
imageView.setScaleType(ScaleType.FIT_XY);
container.addView(imageView);
return imageView;
}
//销毁 super.destroyItem(container, position, object); 必须删 里面抛的是异常
//Object 得到添加的图片
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
container.removeView((View) object);
}
}
//以上图片是死的数据。下面是网络上获取图片
public class Fragment02 extends Fragment {
private static final String TAG = "Fragment02";
private View view;
private ViewPager banner;
private List<BannerBean.DataBean> data;
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
if (msg.what == 0){
int currentItem = banner.getCurrentItem();
banner.setCurrentItem(currentItem + 1);
sendEmptyMessageDelayed(0,2000);
}
}
};
public Fragment02() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
view = inflater.inflate(R.layout.fragment_fragment02, container, false);
initViews();
loadView();
return view;
}
private void loadView() {
//使用工具类拿到轮播图数据
HttpUtils instance = HttpUtils.getInstance();
instance.get("https://www.zhaoapi.cn/quarter/getAd");
instance.setHttpUtilsListener(new HttpUtils.HttpUtilListener() {
@Override
public void getSuccess(String json) {
Gson gson = new Gson();
BannerBean bannerBean = gson.fromJson(json, BannerBean.class);
data = bannerBean.getData();
Log.d(TAG, "getSuccess: + + + +"+ data);
BannerAdapter bannerAdapter = new BannerAdapter(getActivity(), data);
banner.setAdapter(bannerAdapter);
handler.sendEmptyMessageDelayed(0,2000);
}
@Override
public void getError(String error) {
}
});
}
private void initViews() {
//拿到控件
banner = view.findViewById(R.id.banner);
}
}
//适配器
public class BannerAdapter extends PagerAdapter{
private Context context;
private List<BannerBean.DataBean> data;
public BannerAdapter(Context context, List<BannerBean.DataBean> data) {
this.context = context;
this.data = data;
}
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
ImageView imageView = new ImageView(context);
imageView.setScaleType(imageView.getScaleType().FIT_XY);
BannerBean.DataBean dataBean1 = data.get(position% data.size());
String icon = dataBean1.getIcon();
ImageLoader.getInstance().displayImage(icon,imageView, MyApp.getOptions());
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
//一定要删除 super.destroyItem(container, position, object);
container.removeView((View) object);
}
}
//预加载数量
banner.setOffscreenPageLimit(3);
//图片间距
banner.setPageMargin(10);
//画廊效果
banner.setPageTransformer(true,new MyGallyPageTransformer());