原始的轮播图的正确写法

package com.example.a24476.week3day3;

import android.annotation.SuppressLint;
import android.os.Handler;在这里插入在这里插入代码片代码片
import android.os.Message;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.TypedValue;
import android.view.ViewGroup;1
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

private ViewPager banner;
private TextView desc;
private LinearLayout dots;
private BannerAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    banner = findViewById(R.id.banner);
    desc = findViewById(R.id.desc);
    dots = findViewById(R.id.dots);

    adapter = new BannerAdapter(this);
    banner.setAdapter(adapter);

    banner.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        //缓存的点
        private int cacheIndex = -1;

        //页面滚动
        @Override
        public void onPageScrolled(int i, float v, int i1) {

        }

        //页面选择
        @Override
        public void onPageSelected(int i) {
            //改变文件
            desc.setText(adapter.getItem(i).getTitle());
            //改变当前点
            dots.getChildAt(i % dots.getChildCount()).setSelected(true);

            //还原原来的点
            if (cacheIndex >= 0) {
                dots.getChildAt(cacheIndex % dots.getChildCount()).setSelected(false);
            }
            cacheIndex = i;
        }

        @Override
        public void onPageScrollStateChanged(int i) {

        }
    });

    initData();
}

private void initData() {
    NetUtil.yibu("https://api.tianapi.com/wxnew/?key=c4aa776e0a51d57d6750511e2baa46b6&num=6&page=1"
            , BannerResponse.class, new NetUtil.CallBack<BannerResponse>() {
                @Override
                public void getdata(BannerResponse bannerResponse) {
                    if (bannerResponse == null || !bannerResponse.isSuccess()) {
                        Toast.makeText(MainActivity.this, "请求错误", Toast.LENGTH_SHORT).show();
                        return;
                    }

                    adapter.setDatas(bannerResponse.getNewslist());
                    initDot(bannerResponse.getNewslist().size());

                    //切换到中间
                    int center = adapter.getCount() / 2;
                    center = center - center % bannerResponse.getNewslist().size();
                    banner.setCurrentItem(center);

                    //开启轮播
                    startlooper();
                }
            });
}

@SuppressLint("HandlerLeak")
private Handler mHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        banner.setCurrentItem(banner.getCurrentItem() + 1);
        mHandler.sendEmptyMessageDelayed(0, 2000);
    }
};

private void startlooper() {
    mHandler.removeMessages(0);
    mHandler.sendEmptyMessageDelayed(0, 2000);
}

//初始化小圆点
private void initDot(int size) {
    dots.removeAllViews();
    for (int i = 0; i < size; i++) {
        ImageView imageView = new ImageView(this);
        imageView.setBackgroundResource(R.drawable.selector_dot);
        //布局参数: 宽高包裹  左右8dp
        LinearLayout.LayoutParams params =
                new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                        ViewGroup.LayoutParams.WRAP_CONTENT);
        int margin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 2, getResources().getDisplayMetrics());
        params.leftMargin = margin;
        params.rightMargin = margin;
        dots.addView(imageView, params);
    }
}

}

``## 原始轮播的适配器
package com.example.a24476.week3day3;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.ArrayList;
import java.util.List;

public class BannerAdapter extends PagerAdapter {
private List<BannerResponse.Banner> mDatas;
private Context context;

public BannerAdapter(Context context) {
    this.context = context;
    mDatas = new ArrayList<>();
}

@Override
public int getCount() {
    return mDatas.size() > 0 ? 5000 : 0;
}

public BannerResponse.Banner getItem(int position) {
    return mDatas.get(position % mDatas.size());
}

public void setDatas(List<BannerResponse.Banner> datas) {
    mDatas.clear();
    if (datas != null) {
        mDatas.addAll(datas);
    }
    notifyDataSetChanged();
}

@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
    return view == o;
}

@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
    ImageView imageView = new ImageView(context);
    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    container.addView(imageView);
    ImageLoader.getInstance().displayImage(getItem(position).getPicUrl(), imageView);
    return imageView;
}

@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
    container.removeView((View) object);
}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值