1. 程式人生 > >京東首頁自定義輪播圖

京東首頁自定義輪播圖

model

package com.bawei.com.moniti.Model;

    import com.bawei.com.moniti.pojo.CartBean;
    import com.bawei.com.moniti.views.CartActivity;

    import java.util.Map;

/**
* Created by lenovo on 2018/3/4.
*/

public interface model {

void shouyemodel(String Url, Map<String, String> parmar, ShouYeListlinese shouYeListlinese);

void goodmodel(String Url, Map<String, String> parmar, GoodsListlinese goodsListlinese);


//重新整理
void doRefresh(String ur, Map<String,String> params,shuaxinListent shuaxinListent);
//下拉載入
void doLoadMore(String ur, Map<String,String> params,shanglaListent shanglaListent);

//xq
void xqmodel(String Url, Map<String, String> parmar,xqListent x1linese);

//add
void addmodel(String Url, Map<String, String> parmar,addListlinese x1linese);

//add
void Cartmodel(String Url, Map<String, String> parmar,CartListlinese x1linese);

//總和
double sumV(CartBean goodsBean);

}

model的實現層

package com.bawei.com.moniti.Model;

import android.util.Log;

import com.bawei.com.moniti.pojo.AddCartBean;
import com.bawei.com.moniti.pojo.CartBean;
import com.bawei.com.moniti.pojo.GoodsBean;
import com.bawei.com.moniti.pojo.RetrofitUtils;
import com.bawei.com.moniti.pojo.ShouYeBean;
import com.bawei.com.moniti.pojo.XqBean;

import java.util.List;
import java.util.Map;

import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;

import static android.R.id.list;

/**
* Created by lenovo on 2018/3/4.
*/

public class ModelImp implements model {

@Override
public void shouyemodel(String Url, Map<String, String> parmar, final ShouYeListlinese shouYeListlinese) {
    RetrofitUtils.getInstence()
            .API()
            .getshouye(Url, parmar)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<ShouYeBean>() {
                @Override
                public void onSubscribe(Disposable d) {

                }

                @Override
                public void onNext(ShouYeBean value) {
                    Log.e("Tag", value.getMsg() + "");

                    shouYeListlinese.ShouYeScuccer(value);
                }

                @Override
                public void onError(Throwable e) {
                    Log.e("Tag", e.toString() + "");
                    shouYeListlinese.ShouYeError(e.toString());
                }

                @Override
                public void onComplete() {

                }
            });
}

@Override
public void goodmodel(String Url, Map<String, String> parmar, final GoodsListlinese goodsListlinese) {
    RetrofitUtils.getInstence()
            .API()
            .getGoods(Url, parmar)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<GoodsBean>() {
                @Override
                public void onSubscribe(Disposable d) {

                }

                @Override
                public void onNext(GoodsBean value) {
                    Log.e("Tag", value.getMsg() + "");
                    goodsListlinese.GoodsScuccer(value);
                }

                @Override
                public void onError(Throwable e) {
                    Log.e("Tag", e.toString() + "");
                    goodsListlinese.GoodsError(e.toString());
                }

                @Override
                public void onComplete() {

                }
            });
}

@Override
public void doRefresh(String ur, Map<String, String> params, final shuaxinListent shuaxinListent) {
    RetrofitUtils.getInstence()
            .API()
            .getGoods(ur, params)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<GoodsBean>() {
                @Override
                public void onSubscribe(Disposable d) {

                }

                @Override
                public void onNext(GoodsBean value) {
                    Log.e("Tag", value.getMsg() + "");
                    shuaxinListent.shuaxinScuccer(value);
                }

                @Override
                public void onError(Throwable e) {
                    Log.e("Tag", e.toString() + "");
                    shuaxinListent.shuaxinError(e.toString());
                }

                @Override
                public void onComplete() {

                }
            });


}


@Override
public void doLoadMore(String ur, Map<String, String> params, final shanglaListent shanglaListent) {
    RetrofitUtils.getInstence()
            .API()
            .getGoods(ur, params)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<GoodsBean>() {
                @Override
                public void onSubscribe(Disposable d) {

                }

                @Override
                public void onNext(GoodsBean value) {
                    Log.e("Tag", value.getMsg() + "");
                    shanglaListent.shanglaScuccer(value);
                }

                @Override
                public void onError(Throwable e) {
                    Log.e("Tag", e.toString() + "");
                    shanglaListent.shanglaError(e.toString());
                }

                @Override
                public void onComplete() {

                }
            });

}

@Override
public void xqmodel(String Url, Map<String, String> parmar, final xqListent x1linese) {

    RetrofitUtils.getInstence()
            .API()
            .getXq(Url, parmar)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<XqBean>() {
                @Override
                public void onSubscribe(Disposable d) {

                }

                @Override
                public void onNext(XqBean value) {

                    x1linese.xqScuccer(value);
                }

                @Override
                public void onError(Throwable e) {
                    x1linese.xqError(e.toString());
                }

                @Override
                public void onComplete() {

                }
            });
}

@Override
public void addmodel(String Url, Map<String, String> parmar, final addListlinese x1linese) {
    RetrofitUtils.getInstence()
            .API()
            .getadd(Url, parmar)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<AddCartBean>() {
                @Override
                public void onSubscribe(Disposable d) {

                }

                @Override
                public void onNext(AddCartBean value) {
                    Log.e("Tag", value.getMsg());
                    x1linese.addScuccer(value);
                }

                @Override
                public void onError(Throwable e) {

                    x1linese.addError(e.toString());
                }

                @Override
                public void onComplete() {

                }
            });

}

@Override
public void Cartmodel(String Url, Map<String, String> parmar, final CartListlinese x1linese) {
    RetrofitUtils.getInstence()
            .API()
            .getCart(Url, parmar)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<CartBean>() {
                @Override
                public void onSubscribe(Disposable d) {

                }

                @Override
                public void onNext(CartBean value) {
                    Log.e("Tag", value.getMsg());
                    x1linese.CartScuccer(value);
                }

                @Override
                public void onError(Throwable e) {
                    Log.e("Tag", e.toString());
                    x1linese.CartError(e.toString());
                }

                @Override
                public void onComplete() {

                }
            });
}

@Override
public double sumV(CartBean goodsBean) {
    double sum = 0;
    List<CartBean.DataBean> list = goodsBean.getData();

    Log.e("TAG", "DSADSSA" + goodsBean.toString() + "");

    for (int i = 0; i < list.size(); i++) {
        List<CartBean.DataBean.ListBean> chflas = list.get(i).getList();

        for (int j = 0; j < chflas.size(); j++) {

            Boolean chflas1 = chflas.get(j).isChild_flag();
            if (chflas1) {
                double price = chflas.get(j).getPrice();
                sum = sum + price;
            }
        }
    }
    return sum;
}

}

首頁介面

package com.bawei.com.moniti.Model;

import com.bawei.com.moniti.pojo.ShouYeBean;

/**
* Created by lenovo on 2018/3/4.
*/

public interface ShouYeListlinese {

void ShouYeScuccer(ShouYeBean shouYeBean);

void ShouYeError(String json);

}

建一個類

package com.bawei.com.moniti.views;

import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;

import com.bawei.com.moniti.R;
import com.bawei.com.moniti.pojo.ShouYeBean;
import com.bumptech.glide.Glide;

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

/**
* Created by lenovo on 2018/3/4.
*/

public class MyViewGrop extends RelativeLayout {
private Context Mcontext;
private ViewPager viewById;
private LinearLayout ll_buttom;

private MyHandler2 myHandler2;


public MyViewGrop(Context context) {
    this(context, null);
}

public MyViewGrop(Context context, AttributeSet attrs) {
    this(context, attrs, 0);
}

public MyViewGrop(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    //將佈局繪製到控制元件
    LayoutInflater from = LayoutInflater.from(context);
    //載入佈局myviewgrop
    View view = from.inflate(R.layout.myviewgrop, this, true);
    //獲取id
    viewById = view.findViewById(R.id.viewpager);
    ll_buttom = view.findViewById(R.id.ll_buttom);

}

public void setMyAdapter(Context context, List<ShouYeBean.DataBean> list) {
    //實力化介面卡
    MyAdapter myAdapter = new MyAdapter(context, list);
    //獲取介面卡
    viewById.setAdapter(myAdapter);
    //寫一個集合用於放指示器,也就是小圓點
    final ArrayList<ImageView> points = new ArrayList<>();
    //將指示器新增進去
    for (int i = 0; i < list.size(); i++) {
        //
        ImageView point = new ImageView(context);
        //給圖片新增選中和未選中的狀態
        point.setBackgroundResource(R.drawable.aa);
        //新增到集合
        points.add(point);
        //放入下面的額線性佈局
        ll_buttom.addView(point);
    }
    //預設第一個店選中
    points.get(0).setSelected(true);
    //繫結viewpager的滑動時間
    viewById.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        }

        @Override
        public void onPageSelected(int position) {
            position = position % points.size();
            for (int i = 0; i < points.size(); i++) {
                if (i == position) {
                    //如果滑動的圖片下標等於圓點下標就是圓點選中
                    points.get(position).setSelected(true);
                } else {
                    //不等於就不選中
                    points.get(i).setSelected(false);
                }
            }
        }

        @Override
        public void onPageScrollStateChanged(int state) {
        }
    });
    //2.手動的可以無限滑動  可以左滑
    viewById.setCurrentItem(points.size() * 100000);//設定當前展示中間某個足夠大的位置

// viewById.setCurrentItem(Integer.MAX_VALUE/2);
//設定自動輪播
myHandler2 = new MyHandler2();
autoPlay();
//
}
private void autoPlay() {
myHandler2.sendEmptyMessageDelayed(0, 1000);
}

//介面卡
class MyAdapter extends PagerAdapter {
    private Context context;//上下文
    private List<ShouYeBean.DataBean> list;//集合

    public MyAdapter(Context context, List<ShouYeBean.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, int position) {
        //因為是無線輪播,所以要魔除集合長度再能獲取正常下標
        position = position % list.size();
        //寫一個ImageView控制元件
        ImageView imageView = new ImageView(context);
        //使用Glide載入圖片
        Glide.with(context).load(list.get(position).getIcon()).into(imageView);
        //加入容器
        container.addView(imageView);
        return imageView;
    }
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {

// super.destroyItem(container, position, object);
//銷燬檢視
container.removeView((View) object);
}
}
//自動輪播
class MyHandler2 extends Handler {
@Override
public void handleMessage(Message msg) {
//顯示下一頁的訊息
viewById.setCurrentItem(viewById.getCurrentItem() + 1);
// //再次傳送
myHandler2.sendEmptyMessageDelayed(0, 1000);
}
}
}

//Framage

package com.bawei.com.moniti.Framage;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

import com.bawei.com.moniti.Model.ModelImp;
import com.bawei.com.moniti.R;
import com.bawei.com.moniti.persters.persterImp;
import com.bawei.com.moniti.pojo.ShouYeBean;
import com.bawei.com.moniti.views.MyViewGrop;
import com.bawei.com.moniti.views.ShouYeView;

import java.util.List;

/**
* Created by lenovo on 2018/3/4.
*/

public class frament1 extends Fragment implements ShouYeView {
private MyViewGrop banner;
private MyHandler myHandler;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View inflate = inflater.inflate(R.layout.item_f1, null);

    persterImp imp = new persterImp();
    imp.perster(new ModelImp(), this);

    banner = (MyViewGrop) inflate.findViewById(R.id.banner);
    myHandler = new MyHandler();
    return inflate;
}

@Override
public void ShouYeViewSuccorc(ShouYeBean shouYeBean) {
    List<ShouYeBean.DataBean> data = shouYeBean.getData();
    Message message = new Message();
    message.obj = data;
    myHandler.sendMessage(message);

}

@Override
public void ShouYeViewError(String json) {

}

//建立Handler物件
class MyHandler extends Handler {
    @Override
    public void handleMessage(Message msg) {
        List<ShouYeBean.DataBean> data1 = (List<ShouYeBean.DataBean>) msg.obj;
        //在這裡設定介面卡
        banner.setMyAdapter(getActivity(),data1);
    }
}

}

//xml佈局

//drawable佈局

//小圓點佈局