1. 程式人生 > >無線輪播的簡單實現

無線輪播的簡單實現

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


}