CheckDayBannerView.java 13 KB
package com.cnlive.goldenline.ui.widget;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.view.ViewPager;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.cnlive.goldenline.R;
import com.cnlive.goldenline.model.ISign;
import com.cnlive.goldenline.model.ISignBean;
import com.cnlive.goldenline.model.response.bean.LiveShowBean;
import com.cnlive.goldenline.model.response.bean.VideoDemandBean;
import com.cnlive.goldenline.ui.activity.DianBoPlayerActivity;
import com.cnlive.goldenline.ui.activity.LiveShowActivity;
import com.cnlive.goldenline.ui.activity.SubscribeShowActivity;
import com.cnlive.goldenline.ui.activity.TheatreInfoActivity;
import com.cnlive.goldenline.ui.activity.WebViewActivity;
import com.cnlive.goldenline.ui.activity.act.ActActivity;
import com.cnlive.goldenline.ui.base.SimplePagerAdapter;
import com.cnlive.goldenline.util.DeviceUtils;
import com.cnlive.goldenline.util.FrescoUtils;
import com.cnlive.goldenline.util.ShareSdkUtil;
import com.cnlive.goldenline.util.SystemTools;
import com.cnlive.goldenline.util.ToastUtil;
import com.facebook.drawee.generic.GenericDraweeHierarchy;
import com.facebook.drawee.view.SimpleDraweeView;

import java.util.List;

import static com.cnlive.goldenline.util.LogUtils.LOGD;


/**
 * Created by zuoxian on 2015/9/22.
 */
public class CheckDayBannerView extends RelativeLayout {

    private static final String TAG = "CheckDayBannerView";

    private static final long click_timeout = 110;
    private static long click_time = 0;
    private ViewPager mViewPager;
    private LinearLayout group;
    @Nullable
    private BannerAdapter bannerAdapter;
    private TextView title;
    private ImageView imgBtnPlayer;
    private ImageView imgBtnShare;
    private RelativeLayout mSearchLayout;
    private TextView mSearchButton;
    private ImageView icon;
    private RelativeLayout bannerTitle;
    @Nullable
    private List<ISignBean> view_data;
    private ImageView[] indicators;
    private float click_x = 0;
    private boolean onTouch = false, onShowNext = true;

    private Context mContext;
    private Activity activity;

    private int imageViewWidth = 0;
    private int imageViewHeight = 0;


    @Nullable
    private ViewPager.SimpleOnPageChangeListener pagerChangeListener = new ViewPager.SimpleOnPageChangeListener() {
        @Override
        public void onPageSelected(int position) {
            for (int i = 0; i < indicators.length; i++) {
                //                indicators[i].setBackgroundColor(getResources().getColor((position % view_data.size() != i)
                //                        ? android.R.color.white : R.color.banner_icon));
                int margin = SystemTools.dip2px(getContext(), 3);
                int border = SystemTools.dip2px(getContext(), 7);
                LinearLayout.LayoutParams lp = null;
                if (position % view_data.size() == i) {
                    lp = new LinearLayout.LayoutParams(border, border);

                } else {
                    lp = new LinearLayout.LayoutParams(margin, margin);
                }
                lp.setMargins(margin, 0, margin, 0);
                indicators[i].setLayoutParams(lp);
                indicators[i].setBackgroundResource(R.mipmap.banner_nor);
            }
            //判断多个条目时,当前条目是否为最后一个或者第一个,设置左右图标的颜色不同
            if (view_data.size() > 1) {
                if (mViewPager.getCurrentItem() >= view_data.size() - 1) {
                    mRight.setImageResource(R.mipmap.no_left);

                } else if (mViewPager.getCurrentItem() <= 0) {
                    mLeft.setImageResource(R.mipmap.no_right);
                } else {
                    mRight.setImageResource(R.mipmap.can_left);
                    mLeft.setImageResource(R.mipmap.can_right);
                }
            }

            ISignBean item = view_data.get(position % view_data.size());
            if (item.getBannerType().equals("006")) {
                imgBtnPlayer.setVisibility(GONE);
            } else {
                imgBtnPlayer.setVisibility(VISIBLE);
            }

            buttonClick(item);
            title.setText(item.getName());

        }
    };
    private ImageView mRight;
    private ImageView mLeft;

    public CheckDayBannerView(Context context) {
        this(context, null);
        this.mContext = context;
    }

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

    public CheckDayBannerView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        this.mContext = context;
        init();
    }

    public void showNextPage() {
        if (!onShowNext) {
            if (!onTouch)
                onShowNext = true;
        } else if (null != mViewPager && null != bannerAdapter && bannerAdapter.getList().size() > 1) {

            mViewPager.setCurrentItem(mViewPager.getCurrentItem() + 1);
        }
    }

    @Override
    public boolean dispatchTouchEvent(@NonNull MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                click_time = System.currentTimeMillis();
                click_x = event.getX();
                onTouch = true;
                onShowNext = false;
                break;
            case MotionEvent.ACTION_UP:
                onTouch = false;

                break;
        }
        return super.dispatchTouchEvent(event);
    }


    private void init() {

        int width = Math.min(
                getResources().getDisplayMetrics().widthPixels,
                getResources().getDisplayMetrics().heightPixels);
        LayoutInflater.from(getContext()).inflate(R.layout.banner_check_day, this);
        mViewPager = (ViewPager) findViewById(R.id.viewpager);
        //        mViewPager.getLayoutParams().width = width;
        //        mViewPager.getLayoutParams().height = (int)(width / 1.9);  //width * 2;   //
        imageViewWidth = DeviceUtils.getScreenWidth(mContext);
        imageViewHeight = DeviceUtils.getScreenHeight(mContext);
        group = (LinearLayout) findViewById(R.id.viewGroup);


        title = (TextView) findViewById(R.id.title);
        bannerTitle = (RelativeLayout) findViewById(R.id.bannertitle);
        imgBtnPlayer = (ImageView) findViewById(R.id.imgBtn_player);
        imgBtnShare = (ImageView) findViewById(R.id.imgBtn_share);


        mRight = (ImageView) findViewById(R.id.right);
        mLeft = (ImageView) findViewById(R.id.left);

    }

    @Nullable
    public View getBannerTitle() {
        if (null != bannerTitle)
            return bannerTitle;
        else
            return null;
    }

    @Nullable
    public View getSearchLayout() {
        if (null != mSearchLayout)
            return mSearchLayout;
        else
            return null;
    }

    @Nullable
    public View getSearchButton() {
        if (null != mSearchButton)
            return mSearchButton;
        else
            return null;
    }

    public void setData(@Nullable List<ISignBean> list, Activity ac) {
        if (list != null && list.size() > 0) {
            view_data = list;
            activity = ac;
            title.setText(view_data.get(0).getName());

            addIndicator(view_data.size());
            mViewPager.setAdapter(bannerAdapter = new BannerAdapter(view_data));
            mViewPager.setOnPageChangeListener(pagerChangeListener);
            mViewPager.setCurrentItem(500 - 500 % view_data.size());
        } else {
            mViewPager.getLayoutParams().height = 1;
        }


    }

    private void addIndicator(int count) {
        indicators = new ImageView[count];
        group.removeAllViews();
        int margin = SystemTools.dip2px(getContext(), 3);
        int border = SystemTools.dip2px(getContext(), 7);
        for (int i = 0; i < count; i++) {
            ImageView textView = new ImageView(getContext());

            LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(border, border);
            lp.setMargins(margin, 0, margin, 0);
            textView.setLayoutParams(lp);

            indicators[i] = textView;

            //            indicators[i].setBackgroundColor(getResources().getColor((i == 0) ?
            //                    R.color.banner_icon : android.R.color.white));
            indicators[i].setBackgroundResource(R.mipmap.banner_nor);
            group.addView(textView);
        }
    }


    private class BannerAdapter extends SimplePagerAdapter<ISignBean> {

        public BannerAdapter(List<ISignBean> list) {
            super(list);
        }

        @Override
        public int getCount() {
            if (getList() != null && getList().size() > 0) {
                return getList().size();
            } else {
                return 0;
            }
        }


        @NonNull
        @Override
        public View getItemView(ViewGroup container, int position) {
            int index = position % getList().size();
            ISignBean riQianItem = view_data.get(index);
            SimpleDraweeView imageview = new SimpleDraweeView(getContext());

            GenericDraweeHierarchy hierarchy = imageview.getHierarchy();
            hierarchy.setPlaceholderImage(R.drawable.click_refresh);

            imageview.setLayoutParams(
                    new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                            ViewGroup.LayoutParams.MATCH_PARENT));
            imageview.setBackgroundResource(R.drawable.click_refresh);
            imageview.setScaleType(ImageView.ScaleType.FIT_XY);
            if (!TextUtils.isEmpty(riQianItem.getBannerImg()))

                FrescoUtils.setImageNetworkResource(imageview, Uri.parse(riQianItem.getBannerImg()), imageViewWidth, imageViewHeight);

            if (view_data.size() == 1) {
                buttonClick(riQianItem);
            }


            return imageview;
        }

    }

    private void buttonClick(final ISignBean riQianItem) {
        imgBtnPlayer.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                doBannerClick(riQianItem);
            }
        });
        //拿到当前页面的条目,进行分享和播放,在这儿只有一条

        //TODO 分享
        imgBtnShare.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (true) {

                    LOGD("item2" + riQianItem.getBannerImg());
                    ShareSdkUtil.selectSharePlatform(activity, R.id.checkDay, ShareSdkUtil.SHARE_IMAGE,
                            riQianItem.getName(),
                            "正在上演", //说明
                            riQianItem.getBannerImg(),
//                                "https://api.shineup.com.cn/goldenline/html/goldenline_share.html?contype=" + item.getExtend1() + "&title=" + item.getTitle() + "&contid=" + item.getContid());  //分享链接
                            riQianItem.getSignShareUrl());

                }
            }
        });
    }

    private void doBannerClick(ISignBean riQianItem) {
        switch (riQianItem.getBannerType()) {

            case "001": //直播
                LiveShowBean bean = riQianItem.getLiveInfo();
                if (bean != null) {
                    if (bean.getLiveState() == 0) {
                        SubscribeShowActivity.start(mContext, bean);
                    } else if (bean.getLiveState() == 1) {
                        LiveShowActivity.start(mContext, bean);
                    } else {
                        ToastUtil.showToast("直播已结束!");
                    }
                }
                break;
            case "002": //活动
                ActActivity.start(mContext, riQianItem.getBannerLinkId());
                break;

            case "003"://剧场
                TheatreInfoActivity.startActivity(mContext, Integer.parseInt(riQianItem.getBannerLinkId()));
                break;

            case "004"://点播
                VideoDemandBean video = riQianItem.getVideo();
                if (video != null) {
                    DianBoPlayerActivity.start(mContext, video);
                }
                break;
            case "005"://自定义
                Intent intent = new Intent(mContext, WebViewActivity.class);
                Bundle bundle = new Bundle();
                bundle.putString("url", riQianItem.getBannerLinkId());
                intent.putExtra("url", bundle);
                mContext.startActivity(intent);
                break;
            case "006":
                break;
        }

    }
}