无线轮播的简单实现

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


}


        

猜你喜欢

转载自blog.csdn.net/liu_qunfeng/article/details/80755540