package com.sdwfqin.sample.bottomsheet;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomSheetBehavior;
import android.support.design.widget.BottomSheetDialog;
import android.support.v4.widget.NestedScrollView;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import com.blankj.utilcode.util.LogUtils;
import com.sdwfqin.sample.R;

import butterknife.BindView;
import butterknife.ButterKnife;

/**
 * 描述:底部弹窗
 *
 * @author zhangqin
 * @date 2017/3/11
 */
public class BottomSheetActivity extends AppCompatActivity {

    @BindView(R.id.nsv)
    NestedScrollView mNsv;
    @BindView(R.id.bottom_list)
    ListView mBottomList;

    private BottomSheetBehavior mBottomSheetBehavior;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bottomsheet);
        ButterKnife.bind(this);

        initView();

    }

    private void initView() {

        mBottomSheetBehavior = BottomSheetBehavior.from(mNsv);

        String[] strings = new String[]{"BottomSheet", "BottomSheetDialog", "BottomSheetDialogFragment"};
        mBottomList.setAdapter(new ArrayAdapter<>(this, R.layout.item_list, R.id.tv_items, strings));

        mBottomList.setOnItemClickListener((parent, view, position, id) -> {
            switch (position) {
                case 0:
                    bottomSheet();
                    break;
                case 1:
                    bootomSheetDialog();
                    break;
                case 2:
                    bottomSheetDialogFragment();
                    break;
                default:
                    break;
            }
        });

        //回掉监听
        mBottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
            @Override
            public void onStateChanged(@NonNull View bottomSheet, int newState) {
                LogUtils.i("onStateChanged: " + "状态改变" + newState);
            }

            @Override
            public void onSlide(@NonNull View bottomSheet, float slideOffset) {
                LogUtils.i("onSlide: " + slideOffset);
            }
        });

        //mBottomSheetBehavior.setPeekHeight(0); // 设置当关闭时底部的高度
        //app:behavior_peekHeight="50dp"
        //mBottomSheetBehavior.setHideable(false);//设置当拉升到底部是否可以隐藏
        //app:behavior_hideable="true"
        //bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);//设置状态
        //
        //public static final int STATE_DRAGGING = 1;  //拖动
        //public static final int STATE_SETTLING = 2;//沉降中
        //public static final int STATE_EXPANDED = 3;//打开了
        //public static final int STATE_COLLAPSED = 4;//关闭了
        //public static final int STATE_HIDDEN = 5;//隐藏了
    }

    private void bootomSheetDialog() {
        BottomSheetDialog dialog = new BottomSheetDialog(BottomSheetActivity.this);
        View view = getLayoutInflater().inflate(R.layout.dialog_bottom_sheet, null);
        dialog.setContentView(view);
        dialog.show();
    }

    private void bottomSheet() {

        if (mBottomSheetBehavior.getState() == BottomSheetBehavior.STATE_EXPANDED) {
            mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
        } else {
            mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
        }
    }

    private void bottomSheetDialogFragment() {
        new MyBottomSheetDialogFragment().show(getSupportFragmentManager(), "dialog");
    }

}