无线轮播的简单实现

236 阅读2分钟
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);
}


}

---------------------
作者:币圈小韭菜
来源:CSDN
原文:blog.csdn.net/liu_qunfeng…
版权声明:本文为博主原创文章,转载请附上博文链接!