//添加依赖
compile 'com.google.code.gson:gson:2.8.2'
compile 'com.squareup.okhttp3:okhttp:3.6.0'
compile 'com.squareup.okio:okio:1.11.0'
compile 'com.github.bumptech.glide:glide:3.7.0'
//MainActivity解析数据
//OkHttp3Util工具类没有导如果不会看下面地址
// http://blog.csdn.net/wei844067872/article/details/78778372
public class MainActivity extends AppCompatActivity {
private ConBanner conBanner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
conBanner = findViewById(R.id.conBanner);
OkHttp3Util.doGet("http://120.27.23.105/ad/getAd", new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()){
final String json = response.body().string();
//Log.d("++++++++",json);
LunBoTuBean lunBoTuBean = new Gson().fromJson(json, LunBoTuBean.class);
final List<LunBoTuBean.DataBean> data = lunBoTuBean.getData();
runOnUiThread(new Runnable() {
@Override
public void run() {
conBanner.setImage(data);
//设置点击事件
conBanner.setClickListner(new ConBanner.OnClickLisner() {
@Override
public void onItemClick(int position) {
if (data.get(position).getType()==0){
Intent intent = new Intent(MainActivity.this, Main2Activity.class);
intent.putExtra("url",data.get(position).getUrl());
startActivity(intent);
}else {
Toast.makeText(MainActivity.this,"我要跳转到商品详情页",Toast.LENGTH_SHORT).show();
}
}
});
}
});
}
}
});
}
}
//自定义类供layout控件调用
public class ConBanner extends FrameLayout {
private ViewPager vp;
private LinearLayout linear_layout;
private ArrayList<ImageView> listc;
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what==0){
int vpCurrentItem = vp.getCurrentItem();
vp.setCurrentItem(vpCurrentItem+1);
handler.sendEmptyMessageDelayed(0,2000);
}
}
};
private OnClickLisner clickListner;
public ConBanner(@NonNull Context context) {
super(context);
init();
}
public ConBanner(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init();
}
public ConBanner(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
View view = View.inflate(getContext(), R.layout.item_banner, this);
vp = view.findViewById(R.id.vp);
linear_layout = view.findViewById(R.id.linear_layout);
}
public void setImage(List<LunBoTuBean.DataBean> list){
MyPagerAdapter adapter = new MyPagerAdapter(getContext(), list);
vp.setAdapter(adapter);
vp.setCurrentItem(list.size()*10000);
handler.sendEmptyMessageDelayed(0,2000);
listc = new ArrayList<>();
linear_layout.removeAllViews();
for (int i=0;i<list.size();i++){
ImageView docImage = new ImageView(getContext());
if (i==0){
docImage.setImageResource(R.drawable.shape_01);
}else {
docImage.setImageResource(R.drawable.shape_02);
}
listc.add(docImage);
LinearLayout.LayoutParams params = new LinearLayout
.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(5,0,5,0);
linear_layout.addView(docImage,params);
}
vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
for (int i=0;i<listc.size();i++){
if (position%listc.size()==i){
listc.get(i).setImageResource(R.drawable.shape_01);
}else {
listc.get(i).setImageResource(R.drawable.shape_02);
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
public void setClickListner(OnClickLisner clickListner) {
this.clickListner = clickListner;
}
private class MyPagerAdapter extends PagerAdapter{
private final Context context;
private final List<LunBoTuBean.DataBean> list;
public MyPagerAdapter(Context context, List<LunBoTuBean.DataBean> list) {
this.context = context;
this.list = list;
}
@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, final int position) {
ImageView imageView = new ImageView(context);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
Glide.with(context).load(list.get(position%list.size()).getIcon()).into(imageView);
//点击事件
imageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
//触发
clickListner.onItemClick(position%list.size());
}
});
imageView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
handler.removeCallbacksAndMessages(null);
break;
case MotionEvent.ACTION_MOVE:
handler.removeCallbacksAndMessages(null);
break;
case MotionEvent.ACTION_CANCEL:
handler.sendEmptyMessageDelayed(0,2000);
break;
case MotionEvent.ACTION_UP:
handler.sendEmptyMessageDelayed(0,2000);
break;
}
return false;
}
});
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
}
public interface OnClickLisner{
void onItemClick(int position);
}
}
//Main2Activity跳转详情看地址
// http://blog.csdn.net/wei844067872/article/details/78243038
//activity_main布局自定义banner
<com.example.admin.zhoukaomoni.zidingyilei.ConBanner
android:id="@+id/conBanner"
android:layout_width="match_parent"
android:layout_height="wrap_content"></com.example.admin.zhoukaomoni.zidingyilei.ConBanner>
//item_banner通过viewpager实现自定义banner
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="220dp">
</android.support.v4.view.ViewPager>
//实现小圆点
<LinearLayout
android:id="@+id/linear_layout"
android:layout_alignBottom="@+id/vp"
android:layout_marginBottom="10dp"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"></LinearLayout>
//shape_01
<corners android:radius="10dp"/>
<solid android:color="#00ff00"/>
<size android:width="10dp" android:height="10dp"/>
//shape_02
<corners android:radius="10dp"/>
<solid android:color="#ff0000"/>
<size android:width="10dp" android:height="10dp"/>