时间:2021-05-20
业务需要选择弹出对话框,然后点击选择图片。网上已经有了很多,不过感觉写的有点乱。自己这里总结一下,有需要开发者可以按照如下步骤直接使用即可。
1.效果图如下
点击选择照相后,弹出如下选择对话框:
2. Dialog实现
布局
上面的高度和颜色,文字:
<color name="abroad_dialog_item">#ffffff</color> <color name="abroad_dialog_item_press">#dfdfdf</color> <color name="abroad_dialog_textcolor">#222222</color> <color name="abroad_dialog_view_bg">#cccccc</color> <dimen name="abroad_dialog_item_hight">45dp</dimen> <dimen name="abroad_feedback_top">8dp</dimen> <dimen name="abroad_dialog_textsize">18sp</dimen> <string name="abroad_photo">拍照</string> <string name="abroad_choosephotp">从相册选择</string> <string name="abroad_cancel">取消</string>控件selector
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/abroad_dialog_item_press" android:state_pressed="true" /> <item android:drawable="@color/abroad_dialog_item" /></selector>Dialog 创建
在style文件里面添加主题及dialog弹出动画
<style name="ActionSheetDialogStyle" parent="@android:style/Theme.Dialog"> <!-- 背景透明 --> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowContentOverlay">@null</item> <!-- 浮于Activity之上 --> <item name="android:windowIsFloating">true</item> <!-- 边框 --> <item name="android:windowFrame">@null</item> <!-- Dialog以外的区域模糊效果 --> <item name="android:backgroundDimEnabled">true</item> <!-- 无标题 --> <item name="android:windowNoTitle">true</item> <!-- 半透明 --> <item name="android:windowIsTranslucent">true</item> <!-- Dialog进入及退出动画 --> <item name="android:windowAnimationStyle">@style/style_inner_map_dialog_animation</item><style name="style_inner_map_dialog_animation"> <!--dialog的进出动画--> <item name="android:windowEnterAnimation">@anim/scale_alpha_to_enter</item> <item name="android:windowExitAnimation">@anim/scale_alpha_to_exit</item></style>dialog创建
private TextView cancel;private TextView takePhoto;private TextView choosePhoto;private Dialog dialog;public void chosePhotoDialog() { dialog = new Dialog(this, R.style.ActionSheetDialogStyle); inflate = LayoutInflater.from(this).inflate(R.layout.view_abroad_choosephoto_dialog, null); choosePhoto = (TextView) inflate.findViewById(R.id.abroad_choosephoto); takePhoto = (TextView) inflate.findViewById(R.id.abroad_takephoto); cancel = (TextView) inflate.findViewById(R.id.abroad_choose_cancel); choosePhoto.setOnClickListener(this); takePhoto.setOnClickListener(this); cancel.setOnClickListener(this); dialog.setContentView(inflate); Window window = dialog.getWindow(); if (dialog != null && window != null) { window.getDecorView().setPadding(0, 0, 0, 0); WindowManager.LayoutParams attr = window.getAttributes(); if (attr != null) { attr.height = ViewGroup.LayoutParams.WRAP_CONTENT; attr.width = ViewGroup.LayoutParams.MATCH_PARENT; attr.gravity = Gravity.BOTTOM;//设置dialog 在布局中的位置 window.setAttributes(attr); } } dialog.show();}Dialig 点击事件
@Overridepublic void onClick(View view) { switch (view.getId()) { case R.id.abroad_choosephoto: pickAlbum(); break; case R.id.abroad_takephoto: takePhotos(); break; case R.id.abroad_choose_cancel: dialog.dismiss(); } dialog.dismiss();}3. 选择图片
定义事件类型
从相册选取图片
手机拍照后选取图片
图片选择后,最终都会把数据返回到onActivityResult()方法里面,所以我们需要在activity里面重写此方法
裁剪的方法
拍照后需要先把数据保存一个临时的文件,然后再获取文件,才能裁剪
4.注意事项
本来选择后不打算裁剪,但是在小米6等手机上,不裁剪容易崩溃,而裁剪的另一个好处就是压缩图片
在我们获取bitmap后,可以在那里做一些业务操作,但是一定要记得把bitmap文件回收,不然容易导致内存泄漏
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Android实现点击签到按钮直接签到,弹出dialog,先上效果图demo是利用gridview实现的,现附上布局文件效果图:dialog中的主要代码:pub
Android实现IOS选择拍照相册底部弹出的实例效果图1.AndroidStudio使用dependencies{compile'com.guoqi.widg
本文实例讲述了Android自定义dialog简单实现方法。分享给大家供大家参考,具体如下:@OverrideprotectedvoidonCreate(Bun
微信小程序的底部弹出框,供大家参考,具体内容如下wxml选择系列{{item.txt}}wxss.dialog_screen{wi
android实现底部布局往往使用RelativeLayout的布局方式,并且设置android:layout_alignParentBottom=”true”