赞
踩
每次写一次太过于麻烦,所以就写一个简单的方法封装起来就可以了
1、Java端
先看使用方法
- //photo
- WindowDialogView.WindowDialogView(requireActivity(), new WindowDialogView.windowDialogListener() {
- @Override
- public void onPicture() {
-
- }
-
- @Override
- public void onPhotoAlbum() {
-
- }
-
- @Override
- public void onDismiss() {
-
- }
- });

WindowDialogView类
- public class WindowDialogView {
-
- public static void WindowDialogView(Activity activity, windowDialogListener listener) {
- //1、使用Dialog、设置style
- final Dialog dialog = new Dialog(activity, R.style.DialogTheme);
- //2、设置布局
- View view = View.inflate(activity, R.layout.window_dialog_layout, null);
- dialog.setContentView(view);
-
- Window window = dialog.getWindow();
- //设置弹出位置
- window.setGravity(Gravity.CENTER_VERTICAL);
- //设置弹出动画
- window.setWindowAnimations(R.style.BottomAnimStyle);
- //设置对话框大小
- window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
- dialog.show();
-
- //设置弹出位置
- window.setGravity(Gravity.BOTTOM);
-
- dialog.findViewById(R.id.tv_take_pic).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- dialog.dismiss();
- listener.onPicture();
- }
- });
-
- dialog.findViewById(R.id.tv_take_photo).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- dialog.dismiss();
-
- listener.onPhotoAlbum();
- }
- });
-
- dialog.findViewById(R.id.tv_cancel).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- dialog.dismiss();
- listener.onDismiss();
- }
- });
- }
-
- public interface windowDialogListener {
- /**
- * 拍照
- */
- void onPicture();
-
- /**
- * 相册
- */
- void onPhotoAlbum();
-
- /**
- * 取消
- */
- void onDismiss();
- }
- }

2、style-DialogTheme
- <style name="DialogTheme" parent="@android:style/Theme.Dialog">
- <!-- 边框 -->
- <item name="android:windowFrame">@null</item>
- <!-- 是否浮现在activity之上 -->
- <item name="android:windowIsFloating">true</item>
- <!-- 半透明 -->
- <item name="android:windowIsTranslucent">true</item>
- <!-- 无标题 -->
- <item name="android:windowNoTitle">true</item>
- <item name="android:background">@android:color/transparent</item>
- <!-- 背景透明 -->
- <item name="android:windowBackground">@android:color/transparent</item>
- <!-- 模糊 -->
- <item name="android:backgroundDimEnabled">true</item>
- <!-- 遮罩层 -->
- <item name="android:backgroundDimAmount">0.5</item>
- </style>

3、动画(下向上)
- <!-- dialog的动画 -->
- <style name="main_menu_animStyle">
- <item name="android:windowEnterAnimation">@anim/dialog_in_anim</item>
- <item name="android:windowExitAnimation">@anim/dialog_out_anim</item>
- </style>
@anim/dialog_in_anim
- <?xml version="1.0" encoding="utf-8"?>
- <set xmlns:android="http://schemas.android.com/apk/res/android" >
- <translate
- android:duration="300"
- android:fromXDelta="0"
- android:fromYDelta="1000"
- android:toXDelta="0"
- android:toYDelta="0" />
- </set>
@anim/dialog_out_anim
- <?xml version="1.0" encoding="utf-8"?>
- <set xmlns:android="http://schemas.android.com/apk/res/android" >
- <translate
- android:duration="300"
- android:fromXDelta="0"
- android:fromYDelta="0"
- android:toXDelta="0"
- android:toYDelta="1000" />
- </set>
4、自定义layout
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@drawable/round_shape">
-
- <TextView
- android:id="@+id/tv_take_photo"
- android:layout_width="match_parent"
- android:layout_height="50dp"
- android:text="拍摄"
- android:gravity="center"
- android:textSize="16sp"
- android:textColor="@color/add_tips"/>
-
- <View
- android:layout_width="match_parent"
- android:layout_height="1dp"
- android:background="#F4F2F2"/>
-
- <TextView
- android:id="@+id/tv_take_pic"
- android:layout_width="match_parent"
- android:layout_height="50dp"
- android:text="从手机相册选择"
- android:gravity="center"
- android:textSize="16sp"
- android:textColor="@color/add_tips"/>
-
- <View
- android:layout_width="match_parent"
- android:layout_height="2dp"
- android:background="#F4F1F1"/>
-
- <TextView
- android:id="@+id/tv_cancel"
- android:layout_width="match_parent"
- android:layout_height="50dp"
- android:text="取消"
- android:gravity="center"
- android:textSize="16sp"
- android:textColor="@color/add_tips"/>
-
- </LinearLayout>

明天更新关于调用系统拍照,如何保存到相册目录或文件保存到app下载的目录(Android11)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。