android 时间控件+选取本地照片

选取照片

https://github.com/YancyYe/GalleryPick  选取图片_不能使用Unimageloader用glide

https://github.com/jeasonlzy0216/ImagePicker  选取照片_好用_自定义选取照片基于此项目

自定义调用代码:

 // 拍照
    private Button take_photo_bt;
    // 本地获取
    private Button local_photo_bt;
    // 取消
    private Button cancel_bt;
    private ImagePicker imagePicker;
    public static final int IMAGE_PICKER = 100;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_take_photo);


        initView();
        initImagePicker();


    }

    private void initImagePicker() {

        imagePicker = ImagePicker.getInstance();
        imagePicker.setImageLoader(new UniversalImageLoader());   //设置图片加载器
        imagePicker.setShowCamera(true);  //显示拍照按钮
        imagePicker.setCrop(true);        //允许裁剪(单选才有效)
        imagePicker.setSaveRectangle(true); //是否按矩形区域保存
        imagePicker.setSelectLimit(9);    //选中数量限制
        imagePicker.setStyle(CropImageView.Style.RECTANGLE);  //裁剪框的形状
        imagePicker.setFocusWidth(800);   //裁剪框的宽度。单位像素(圆形自动取宽高最小值)
        imagePicker.setFocusHeight(800);  //裁剪框的高度。单位像素(圆形自动取宽高最小值)
        imagePicker.setOutPutX(1000);//保存文件的宽度。单位像素
        imagePicker.setOutPutY(1000);//保存文件的高度。单位像素
        imagePicker.setMultiMode(true);
    }

    private void initView() {

        local_photo_bt = (Button) findViewById(R.id.local_photo_bt);
        take_photo_bt = (Button) findViewById(R.id.take_photo_bt);
        cancel_bt = (Button) findViewById(R.id.cancel_bt);

        // 本地选择
        local_photo_bt.setOnClickListener(this);

        // 拍照
        take_photo_bt.setOnClickListener(this);

        cancel_bt.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.local_photo_bt:
                //本地选取照片
                Intent intent = new Intent(this, ImageGridActivity.class);
                startActivityForResult(intent, IMAGE_PICKER);
                break;
            case R.id.take_photo_bt:
                //拍照
                imagePicker.takePicture(this, ImagePicker.REQUEST_CODE_TAKE);
                break;
            case R.id.cancel_bt:
                //取消
                finish();
                break;
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == ImagePicker.RESULT_CODE_ITEMS && requestCode == TakePhoto2Activity.IMAGE_PICKER) {
            setResult(ImagePicker.RESULT_CODE_ITEMS, data);
            finish();
        }
        else if (data != null && resultCode == 1004 && requestCode == 1002) {
            //从拍照界面返回
            //点击 X , 没有选择照片
            if (data.getSerializableExtra(ImagePicker.EXTRA_RESULT_ITEMS) == null) {
                //什么都不做
            } else {
                //说明是从裁剪页面过来的数据,直接返回就可以
                setResult(ImagePicker.RESULT_CODE_ITEMS, data);
                finish();
            }
        }
        //如果是裁剪,因为裁剪指定了存储的Uri,所以返回的data一定为null
        else if (resultCode == RESULT_OK && requestCode == ImagePicker.REQUEST_CODE_TAKE && data == null) {
            //发送广播通知图片增加了
            ImagePicker.galleryAddPic(this, imagePicker.getTakeImageFile());
            ImageItem imageItem = new ImageItem();
            imageItem.path = imagePicker.getTakeImageFile().getAbsolutePath();
            imagePicker.clearSelectedImages();
            imagePicker.addSelectedImageItem(0, imageItem, true);
            if (imagePicker.isCrop()) {
                Intent intent = new Intent(this, ImageCropActivity.class);
                startActivityForResult(intent, ImagePicker.REQUEST_CODE_CROP);  //单选需要裁剪,进入裁剪界面
            } else {
                Intent intent = new Intent();
                intent.putExtra(ImagePicker.EXTRA_RESULT_ITEMS, imagePicker.getSelectedImages());
                setResult(ImagePicker.RESULT_CODE_ITEMS, intent);   //单选不需要裁剪,返回数据
                finish();
            }
        }
    }


时间控件:

https://github.com/gzu-liyujiang/AndroidPicker 滑动较卡顿   ==>时间AndroidPicker地址_时间_单选等多种wheelView集合

https://github.com/saiwu-bigkoo/Android-PickerView 推荐使用,滑动流畅  ==>时间PickerView三级联动_地址_时间控件

调用代码:

tvTime = (TextView) findViewById(R.id.tvTime);
        //时间选择器
        pvTime = new TimePickerView(this, TimePickerView.Type.YEAR_MONTH_DAY);
        //控制时间范围
//        Calendar calendar = Calendar.getInstance();
//        pvTime.setRange(calendar.get(Calendar.YEAR) - 20, calendar.get(Calendar.YEAR));
        pvTime.setTime(new Date());
        pvTime.setCyclic(true);
        pvTime.setCancelable(true);
        //时间选择后回调
        pvTime.setOnTimeSelectListener(new TimePickerView.OnTimeSelectListener() {

            @Override
            public void onTimeSelect(Date date) {
                tvTime.setText(getTime(date));
            }
        });
        //弹出时间选择器
        tvTime.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                pvTime.show();
            }
        });


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值