Android拿来系列之各种弹框选择器(事件,日历)

1.职业/性别 选择器

①.摆中间的那种,看起来很随意的那种,有点丑那种
compile 'com.contrarywind:Android-PickerView:4.1.3'
 
 
 private ImageView image;
    private OptionsPickerView<Object> pvCustomOptions;
    private List<Object> zhiyeList=new ArrayList<>();

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        zhiyeList.add("杀猪的");
        zhiyeList.add("卖菜的");
        zhiyeList.add("吃黄瓜的");
        zhiyeList.add("拉皮条的");
        zhiyeList.add("跳大神的");
        image.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                initCustomOptionPicker();
            }
        });

        setExitSharedElementCallback(new SharedElementCallback() {
            @Override
            public void onSharedElementEnd(List<String> sharedElementNames, List<View> sharedElements, List<View> sharedElementSnapshots) {
                super.onSharedElementEnd(sharedElementNames, sharedElements, sharedElementSnapshots);
                Toast.makeText(MainActivity.this, "回来了", Toast.LENGTH_SHORT).show();
            }
        });
    }

    private void initView() {
        image = (ImageView) findViewById(R.id.image);
    }



    private void initCustomOptionPicker() {//条件选择器初始化,自定义布局
        /**
         * @description
         *
         * 注意事项:
         * 自定义布局中,id为 optionspicker 或者 timepicker 的布局以及其子控件必须要有,否则会报空指针。
         * 具体可参考demo 里面的两个自定义layout布局。
         */
        pvCustomOptions = new OptionsPickerBuilder(this, new OnOptionsSelectListener() {
            @Override
            public void onOptionsSelect(int options1, int option2, int options3, View v) {
                //返回的分别是三个级别的选中位置
                Toast.makeText(MainActivity.this, ""+zhiyeList.get(options1), Toast.LENGTH_SHORT).show();
            }
        })
                .setLayoutRes(R.layout.custom_zhiye_select, new CustomListener() {
                    @Override
                    public void customLayout(View v) {
                        final TextView tvSubmit = (TextView) v.findViewById(R.id.tv_finish);
                        ImageView ivCancel = (ImageView) v.findViewById(R.id.iv_cancel);
                        tvSubmit.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                pvCustomOptions.returnData();
                                pvCustomOptions.dismiss();
                            }
                        });

                        ivCancel.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                pvCustomOptions.dismiss();
                            }
                        });

                    }
                })
                .isDialog(true)
                .build();

        pvCustomOptions.setPicker(zhiyeList);//添加数据
        pvCustomOptions.show();
    }

需要个 xml
不要动,都粘,粘就对了
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="@android:color/darker_gray">

        <View
            android:layout_width="match_parent"
            android:layout_height="0.5dp"
            android:background="@android:color/darker_gray" />

        <ImageView
            android:id="@+id/iv_cancel"
            android:layout_width="35dp"
            android:layout_height="35dp"
            android:layout_centerVertical="true"
            android:layout_marginLeft="17dp"
            android:padding="8dp"
            android:src="@mipmap/ic_launcher" />

        <TextView
            android:id="@+id/tv_finish"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="17dp"
            android:padding="8dp"
            android:text="完成"
            android:textSize="18sp" />

        <View
            android:layout_width="match_parent"
            android:layout_height="0.5dp"
            android:background="@android:color/darker_gray"/>
    </RelativeLayout>

    <!--此部分需要完整复制过去,删减或者更改ID会导致初始化找不到内容而报空-->
    <LinearLayout
        android:id="@+id/optionspicker"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/white"
        android:orientation="horizontal">

        <com.contrarywind.view.WheelView
            android:id="@+id/options1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" />

        <com.contrarywind.view.WheelView
            android:id="@+id/options2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" />

        <com.contrarywind.view.WheelView
            android:id="@+id/options3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" />
    </LinearLayout>



</LinearLayout>

颜色都是自定义


②.躲底下的

OnOptionsSelectListener onOptionsSelectListener = new OnOptionsSelectListener() {
            @Override
            public void onOptionsSelect(int options1, int options2, int options3, View v) {
                Toast.makeText(MainActivity.this, "" + zhiyeList.get(options1), Toast.LENGTH_SHORT).show();
            }
        };
        OptionsPickerBuilder optionsPickerBuilder = new OptionsPickerBuilder(this, onOptionsSelectListener);
        final OptionsPickerView<Object> build = optionsPickerBuilder.build();
        optionsPickerBuilder.setLayoutRes(R.layout.custom_zhiye_select, new CustomListener() {
            @Override
            public void customLayout(View v) {
                //自定义布局中的控件初始化及事件处理
                final TextView tvSubmit = (TextView) v.findViewById(R.id.tv_finish);
                ImageView ivCancel = (ImageView) v.findViewById(R.id.iv_cancel);
                tvSubmit.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        pvCustomOptions.dismiss();
                    }
                });
                ivCancel.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        pvCustomOptions.dismiss();
                    }
                });

            }
        });
        build.setPicker(zhiyeList);
        image.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                build.show();
            }
        });


3.时间选择器  安卓自带



ctrl+c

  final int DATE_DIALOG = 1;
    int mYear, mMonth, mDay;
    @Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
            case DATE_DIALOG:
                return new DatePickerDialog(this, mdateListener, mYear, mMonth, mDay);
        }
        return null;
    }


    private DatePickerDialog.OnDateSetListener mdateListener = new DatePickerDialog.OnDateSetListener() {

        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear,
                              int dayOfMonth) {
            mYear = year;
            mMonth = monthOfYear;
            mDay = dayOfMonth;
            display();
        }
    };
    /**
     * 设置日期 利用StringBuffer追加
     */
    public void display() {
        tvdate.setText(new StringBuffer().append(mYear).append("-").append(mMonth + 1).append("-").append(mDay).append(" "));
    }

//调用方法  手机的不太一样 不过都挺好

 showDialog(DATE_DIALOG);

4.地址选择器

这里只能具体到区  你可以加详细地址...

现在这个pickerview  其实也有这个地址的 不过我就不用

//城市选择器
    compile 'liji.library.dev:citypickerview:3.1.8'
 
 
//申明对象
CityPickerView mPicker = new CityPickerView();
mPicker.init(this);

 private void selectCity() {
        //添加默认的配置,不需要自己定义
        CityConfig cityConfig = new CityConfig.Builder().build();
        mPicker.setConfig(cityConfig);

        //监听选择点击事件及返回结果
        mPicker.setOnCityItemClickListener(new OnCityItemClickListener() {
            @Override
            public void onSelected(ProvinceBean province, CityBean city, DistrictBean district) {
                tvdate.setText(province.getName() + city.getName() + district.getName());
            }

            @Override
            public void onCancel() {
            }
        });

        //显示
        mPicker.showCityPicker();
    }

OK


最后一个
compile 'com.github.loonggg:BottomSheetPopupDialog:v1.0'
maven { url "https://jitpack.io" }
View dialogView = LayoutInflater.from(this).inflate(R.layout.layout_bottom_shopdetail, null);
        ShareBottomPopupDialog shareBottomPopupDialog = new ShareBottomPopupDialog(this, dialogView);f
        shareBottomPopupDialog.showPopup(rela_bottom);

这个一般是activity 走完了 他才可以弹的

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rela_bottom"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:background="#f00"
        android:layout_alignParentBottom="true"
        android:layout_gravity="center"
        android:textSize="30dp"
        android:textColor="#fff"
        android:text="老子是哦从 底下弹出来的"
        android:layout_width="match_parent"
        android:layout_height="300dp" />
</RelativeLayout>


牛逼 不? 无私 不?


猜你喜欢

转载自blog.csdn.net/FlyPig_Vip/article/details/80976217