public class Mybanner extends RelativeLayout {
private static final String TAG = "Mybanner";
private MyHandler myHandler=new MyHandler();
private View view;
private ViewPager viewPager;
private LinearLayout l_points;
private List<ImageView> point;
public Mybanner(Context context) {
this(context,null);
}
public Mybanner(Context context, AttributeSet attrs) {
this(context, attrs,0);
}
public Mybanner(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
view = View.inflate(context, R.layout.layout_mybanner, this);
//获取控件
viewPager = view.findViewById(R.id.viewpager);
l_points = view.findViewById(R.id.l_points);
//设置滑动监听
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
//切换小圆点
position = position % point.size();
for(int i=0; i<point.size();i++){
if(i==position){
point.get(i).setSelected(true);
}else {
point.get(i).setSelected(false);
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
//配置适配器
public void setMyadapter(Context context,List<ImageView> list,String url){
Log.d(TAG, "setMyadapter: ================"+url);
Myadapter myadapter = new Myadapter(context,list,url);
viewPager.setAdapter(myadapter);
//设置小圆点
point = new ArrayList<>();
for(int i=0; i<list.size();i++){
ImageView image = new ImageView(context);
image.setImageResource(R.drawable.point_selecter);
l_points.addView(image);
point.add(image);
}
point.get(0).setSelected(true);
}
//开启无限轮播
public void stratplay(){
myHandler.sendEmptyMessageDelayed(1,1000);
}
//关闭无限轮播
public void stopplay(){
myHandler.removeCallbacksAndMessages(null);
}
class Myadapter extends PagerAdapter{
private Context context;
private List<ImageView> list;
private String url;
public Myadapter(Context context, List<ImageView> list,String url) {
this.context = context;
this.list = list;
this.url=url;
}
@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) {
position= position % list.size();
ImageView imageView = list.get(position);
Log.d(TAG, "instantiateItem: ++++++++++++++++"+url);
imageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(context, WebActivity.class);
intent.putExtra("zhi",url);
context.startActivity(intent);
}
});
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((ImageView) object);
}
}
class MyHandler extends Handler{
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
int currentItem = viewPager.getCurrentItem();
currentItem++;
viewPager.setCurrentItem(currentItem);
myHandler.sendEmptyMessageDelayed(1,1000);
}
}
}
//OKhttp请求网络
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder().url(httpconfig.url).build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String s = response.body().string();
Message message = myHandler.obtainMessage();
message.obj=s;
myHandler.sendMessage(message);
}
});
//handler线程通信
class MyHandler extends Handler{
private String url;
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
String obj = (String) msg.obj;
Gson gson=new Gson();
BannerBean bannerBean = gson.fromJson(obj, BannerBean.class);
List<BannerBean.DataBean> data = bannerBean.getData();
List<ImageView> images=new ArrayList<>();
for(int i=0; i<data.size();i++){
String icon = data.get(i).getIcon();
url = data.get(i).getUrl();
ImageView imageView=new ImageView(getActivity());
//加载网络图片
Glide.with(getActivity()).load(icon).into(imageView);
images.add(imageView);
}
Log.d(TAG, "handleMessage:----------------------------- "+url);
//设置适配器
mybanner.setMyadapter(getActivity(),images,url);
//开启无限轮播
mybanner.stratplay();
}
}