您的位置:首页 > 其它

Handler实现的无限自动轮播

2017-10-23 00:40 369 查看
xml布局文件写一个ViewPager

<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="200dp">

</android.support.v4.view.ViewPager>


在java代码中(Activity,或Fragment,根据实际情况定,看你的ViewPager写在哪了):通过id找到控件

//找到控件
viewpager = view.findViewById(R.id.viewpager);


设置轮播

//设置轮播的方法
private void setViewPager() {
//请求网络图片
final String path = "接口地址";
//参数一,上下文,参数二:网络地址,参数三:接口中new 了一个接口,重写了一个方法
//(接口中的这个方法在获取网络数据的工具类中调用,这里用作回调)
NetDataUtil.getData(getActivity(), path, new JsonStringCallaBack() {
@Override
public void getJsonData(String json) {
//存放网络图片的集合
List<String> image_url_list = new ArrayList<String>();
Gson gson = new Gson();
//解析
DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class);
List<DataDataBean.NewslistBean> newslist = dataDataBean.getNewslist();
//遍历网络集合,拿到图片地址,装到存放图片的集合中
for (int b=0; b<5; b++){
DataDataBean.NewslistBean newslistBean = newslist.get(b);
String picUrl = newslistBean.getPicUrl();
Log.d("TAG","图片地址为:"+picUrl);
image_url_list.add(picUrl);
}
//设置适配器
pager = new MyViewPager(getActivity(), image_url_list);
viewpager.setAdapter(pager);
//设置显示中间位置
viewpager.setCurrentItem(image_url_list.size()*1000000);
//通过handler发送延时消息,没过两秒发送一次
handler.sendEmptyMessageDelayed(0,2000);
}
});
}
//Handler接收消息,并重新设置图片

Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
if (msg.what==0){
viewpager.setCurrentItem(viewpager.getCurrentItem()+1);
handler.sendEmptyMessageDelayed(0,2000);
}
}
};


//viewpager适配器,自己创建一个类,来继承PagerAdapter,重写4个方法

public class MyViewPager extends PagerAdapter {
Context context;
List<String> image_url_list;

public MyViewPager(Context context, List<String> image_url_list) {
this.context=context;
this.image_url_list=image_url_list;
}

@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(context);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
ImageLoader.getInstance().displayImage(image_url_list.get(position%image_url_list.size()),imageView, ImageLoderUtils.getDefaultOption());
container.addView(imageView);
return imageView;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: