自定义底部弹出Dialog(老掉牙的需求还是记录一下吧)
2016-06-03 15:41
405 查看
(1)布局:
phonto_dialog.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/choice_dialog1" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/shape_win_photo_bg" android:orientation="vertical" android:padding="20dp" > <Button android:id="@+id/btn2" android:layout_width="match_parent" android:layout_height="50dp" android:background="@drawable/selector_photo_bg" android:gravity="center" android:text="拍照" android:textSize="15sp" /> <Button android:id="@+id/btn1" android:layout_width="match_parent" android:layout_height="50dp" android:layout_marginTop="10dp" android:background="@drawable/selector_photo_bg" android:gravity="center" android:text="从相册中选择" android:textSize="15sp" /> <Button android:id="@+id/btn_cancle_photo" android:layout_width="match_parent" android:layout_height="50dp" android:layout_marginTop="10dp" android:background="@drawable/selector_photo_bg" android:gravity="center" android:text="取消" android:textSize="15sp" /> </LinearLayout>
其中:
shape_win_photo_bg
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <corners android:topLeftRadius="7dp" android:topRightRadius="7dp" /> <solid android:color="#404848" /> </shape>
selector_photo_bg
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <shape android:shape="rectangle"> <corners android:radius="5dp" /> <solid android:color="#d81e06" /> </shape> </item> <item android:state_focused="true"> <shape android:shape="rectangle"> <corners android:radius="5dp" /> <solid android:color="#d81e06" /> </shape> </item> <item > <shape android:shape="rectangle"> <corners android:radius="5dp" /> <solid android:color="#D0D0D0" /> </shape> </item> </selector>
java中调用
Dialog dialog = null; public void selectImg(){ if(dialog != null && dialog.isShowing()){ dialog.dismiss(); return; } dialog = new Dialog(this); Button select_poto_btn, camera_poto_btn,btn_cancle_photo; View view = LayoutInflater.from(this).inflate(R.layout.phonto_dialog, null); select_poto_btn = (Button) view.findViewById(R.id.btn1); camera_poto_btn = (Button) view.findViewById(R.id.btn2); btn_cancle_photo = (Button) view.findViewById(R.id.btn_cancle_photo); select_poto_btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { startImgIntent(SELECT_FROM_IMGS_REQUESTCODE); dialog.dismiss(); } }); camera_poto_btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { startTakePhoto(); dialog.dismiss(); } }); btn_cancle_photo.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); dialog.setContentView(view); WindowManager.LayoutParams attributes = dialog.getWindow().getAttributes(); attributes.width = WindowManager.LayoutParams.MATCH_PARENT; attributes.height = WindowManager.LayoutParams.WRAP_CONTENT; attributes.gravity = Gravity.BOTTOM; attributes.windowAnimations = R.style.mydialogstyle; dialog.getWindow().setAttributes(attributes); dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent); dialog.show(); }
其中:
mydialogstyle
<style name="mydialogstyle" > <item name="@android:windowEnterAnimation">@anim/push_bottom_in</item> <item name="@android:windowExitAnimation">@anim/push_bottom_out</item> </style>
其中push_bottom_in
<?xml version="1.0" encoding="utf-8"?> <!-- 上下滑入式 --> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="500" android:fromYDelta="100%p" android:toYDelta="0" /> </set>
push_bottom_out
<?xml version="1.0" encoding="utf-8"?> <!-- 上下滑出式 --> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="500" android:fromYDelta="0" android:toYDelta="100%p" /> </set>
相关文章推荐
- HTML5见缝插针小游戏
- 笔记
- 前端页面优化笔记
- can 总线 intel、motorola数据填充算法
- laravel中视图模板的表单提交
- recv和send函数
- iOS常用公共方法
- Android apache httpClient
- MVC5 + EF6 简单示例
- Qt 读写配置文件ini
- ORACLE 12C R2 RAC实战首发
- iOS 获取deviceid的方法
- Python str unicode转换
- raspberry pi 3使用uart
- ARM的字对齐问题总结
- 报错:The type javax.servlet.http.HttpServletRequest cannot be resolved
- loadrunner的安装
- UG二次开发与Visual Studio的配置
- MongoDB备份、还原、导出、导入、克隆
- ArcGIS Server 开发之鹰眼地图的实现