ChooseScreenPopupWindow.java 7.61 KB
package com.cnlive.goldenline.ui.widget;

import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.cnlive.goldenline.R;
import com.cnlive.goldenline.model.ScreenEvent;
import com.cnlive.goldenline.ui.adapter.ViewPagerAdapter;
import com.cnlive.goldenline.ui.model.ScreenInfoBean;
import com.cnlive.goldenline.ui.widget.autoscrollviewpager.AutoScrollViewPager;
import com.cnlive.goldenline.ui.widget.autoscrollviewpager.CircleIndicator;
import com.cnlive.goldenline.util.AppUtils;
import com.cnlive.goldenline.util.CharsequencePharse;
import com.cnlive.goldenline.util.ResLoader;

import org.greenrobot.eventbus.EventBus;

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

/**
 * Description:选厅弹框
 * Created on 2017/3/9
 * Author : 萧
 */
public class ChooseScreenPopupWindow extends PopupWindow implements ChooseScreenView.ScreenSelectedListener {

    private static final String TAG = "ChooseScreenPopupWindow";
    private TextView tv_seats;
    private TextView tv_price;
    private TextView tv_title;

    private SparseArray<Integer> colors;
    private SparseArray<String> contents;
    private List<ScreenInfoBean> list;

    private int currentPosition = 0;

    private  View view;
    ImageView img_next;
    ImageView img_last;

    public ChooseScreenPopupWindow(Context mContext, final List<ScreenInfoBean> list, int height,float price ) {
        if (mContext != null && list != null && list.size() > 0) {
            this.list = list;
            view = LayoutInflater.from(mContext).inflate(R.layout.layout_choosescreen_pop, null);
            view.setAnimation(AnimationUtils.loadAnimation(mContext, R.anim.pop_enter_anim_slow));
            this.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
            ColorDrawable cd = new ColorDrawable(Color.WHITE);
            this.setBackgroundDrawable(cd);
            Log.d(TAG, "ChooseScreenPopupWindow: "+height);
            this.setHeight(height > 0 ? height : ViewGroup.LayoutParams.WRAP_CONTENT);
            this.setFocusable(true);
            this.setContentView(view);
            this.setOutsideTouchable(false);
            this.setAnimationStyle(R.style.popup_anim_slow);

            tv_title = (TextView) view.findViewById(R.id.choosescreen_pop_tv_title);
            tv_price = (TextView) view.findViewById(R.id.choosescreen_pop_tv_price);
            tv_seats = (TextView) view.findViewById(R.id.choosescreen_pop_tv_seats);
            ScreenInfoBean t = list.get(0);
            tv_title.setText(t.getTitle());
            if (t.getPrice() != -1)
                tv_price.setText(String.format(Locale.CHINA,"%.2f金币", price));

            contents = new SparseArray<>();
            colors = new SparseArray<>();
            colors.put(1, ResLoader.Color(mContext, R.color.color_text_ff584b));
            colors.put(2, ResLoader.Color(mContext, R.color.color_text_7d7d7d));
            contents.put(1, String.valueOf(t.getCurrentSeats()));
            contents.put(2, "/" + String.valueOf(t.getSeatCount()));
            tv_seats.setText(CharsequencePharse.init().setColors(colors).setContents(contents).format());

            ImageView img_close = (ImageView) view.findViewById(R.id.img_close);
            img_close.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    dismiss();
                }
            });

            img_next = (ImageView) view.findViewById(R.id.choosescreen_img_next);
            img_last = (ImageView) view.findViewById(R.id.choosescreen_img_last);


            RelativeLayout layout_banner = (RelativeLayout) view.findViewById(R.id.layout_banner);
            final AutoScrollViewPager viewPager = (AutoScrollViewPager) layout_banner.findViewById(R.id.viewPager);
            int width = AppUtils.getScreenWidth(mContext);
            RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(width, height);
            layout_banner.setLayoutParams(rlp);
            List<ChooseScreenView> viewList = new ArrayList<>(list.size());
            for (int i = 0; i < list.size(); i++) {
                ScreenInfoBean info = list.get(i);
                ChooseScreenView csView = new ChooseScreenView(mContext);
                csView.setOnScreenSelectedListener(this,list.get(i));
                csView.updateLeftSeats(info.getAreaCenter(), info.getAreaLeft(), info.getAreaRight(), info.getAreaBottom(), info.getAreaTop());
                viewList.add(csView);
            }

            ViewPagerAdapter adapter = new ViewPagerAdapter(viewList);
            viewPager.setAdapter(adapter);
            viewPager.setCurrentItem(currentPosition);

            viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                @Override
                public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                }

                @Override
                public void onPageSelected(int position) {
                    ScreenInfoBean infoBean = ChooseScreenPopupWindow.this.list.get(position);
                    contents.clear();
                    contents.put(1, String.valueOf(infoBean.getCurrentSeats()));
                    contents.put(2, "/" + String.valueOf(infoBean.getSeatCount()));
                    tv_seats.setText(CharsequencePharse.init().setColors(colors).setContents(contents).format());
                    tv_title.setText(infoBean.getTitle());
                    if (infoBean.getPrice() != -1)
                        tv_price.setText(String.format(Locale.CHINA,"%.2f金币", infoBean.getPrice()));
                }

                @Override
                public void onPageScrollStateChanged(int state) {
                }
            });

            final LinearLayout pageDotGroup = (LinearLayout) layout_banner.findViewById(R.id.viewGroup);
            layout_banner.setVisibility(View.VISIBLE);

            CircleIndicator indicator = new CircleIndicator(mContext);
            indicator.setmDrawableResNormal(R.drawable.circle_unselected);
            indicator.setmDrawableResSelected(R.drawable.circle_selected);
            indicator.setViewPager(viewPager);
            indicator.setPageDotGroup(pageDotGroup);
            indicator.setItemsCount(list.size());
            indicator.init();

            img_next.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (currentPosition < list.size() - 1) {
                        currentPosition++;
                        viewPager.setCurrentItem(currentPosition);
                    }
                }
            });
            img_last.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (currentPosition > 0) {
                        currentPosition--;
                        viewPager.setCurrentItem(currentPosition);
                    }
                }
            });
        }
    }




    @Override
    public void onScreenSelected(ScreenInfoBean bean ,String areaId) {
        EventBus.getDefault().post(new ScreenEvent(bean,areaId));
        ChooseScreenPopupWindow.this.dismiss();
    }

}