無線輪播的簡單實現
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); } }