选取照片
https://github.com/YancyYe/GalleryPick 选取图片_不能使用Unimageloader用glidehttps://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();
}
});