最近想把公司的中奖查询加个小功能,弹出一个自定义的Dialog,还有声音,本来想加个烟花特效,没做出来。QAQ

  Android DialogFragment简单使用

    大概就是这样子,布局很简单,让UI做个透明的背景图,就OK

 1:定义一个类继承DialogFragment(看个人需求)

1

2

3

4

5

6

7

8

9

10

public class AttachDialogFragment extends DialogFragment{

 

    public Activity mContext;

 

    @Override

    public void onAttach(Activity activity) {

        super.onAttach(activity);

        this.mContext = activity;

    }

}

 2:简单使用

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

/**

 

 * <p>  用户 lose

 * Email:  [email protected]

 */

public class CustomLoseDialog extends AttachDialogFragment implements View.OnClickListener{

 

    private ImageView mImg_close;

 

    private final Handler mHandler = new Handler();

    private MediaPlayer mediaPlayer;

 

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setStyle(DialogFragment.STYLE_NO_FRAME,R.style.MyMiddleDialogStyle);

    }

 

    @Nullable

    @Override

    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {

        getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE); //无标题

 

       // getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

 

        View view = inflater.inflate(R.layout.lose_custome_dialog,container);

        mImg_close = view.findViewById(R.id.not_winning_close);

        mImg_close.setOnClickListener(this);

        playSound();

        return view;

    }

 

    private void playSound(){

        try {

            mediaPlayer = MediaPlayer.create(mContext,R.raw.losesound);

            mediaPlayer.start();

        }catch (Exception e){

            e.printStackTrace();

        }

    }

 

 

    @Override

    public void onStart() {

        super.onStart();

        int dialogHeight = (int) (mContext.getResources().getDisplayMetrics().heightPixels * 0.8);

        getDialog().getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT,dialogHeight);

        getDialog().setCanceledOnTouchOutside(true); //点击边际可消失

        //6秒后让dialog消失

        if (mHandler != null){

                mHandler.postDelayed(new Runnable() {

                    @Override

                    public void run() {

                        dismiss();

                        mediaPlayer.stop();

                        mediaPlayer.release();

                    }

                },6000);

        }

    }

 

 

    @Override

    public void onClick(View v) {

        switch (v.getId()){

            case R.id.not_winning_close:

                dismiss();

                break;

        }

    }

 

 

}

  3:使用方式

  

1

2

3

4

private void loseDialog(){

        CustomLoseDialog customLoseDialog = new CustomLoseDialog();

        customLoseDialog.show(getFragmentManager(),"lose");

    }

 4:

      在需要调用的地方,直接调用方法。

  5:

   

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<style name="MyMiddleDialogStyle" parent="@android:style/Theme.Holo.Light.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>

       <!--进出动画-->

       <item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>

   </style>

  

    这样基本就可以用了。

相关文章:

  • 2021-09-08
  • 2021-09-10
  • 2021-09-17
  • 2021-10-18
  • 2018-05-17
  • 2021-11-27
  • 2021-12-12
  • 2021-09-01
猜你喜欢
  • 2021-09-01
  • 2021-08-07
  • 2021-11-01
  • 2021-10-16
  • 2021-09-01
  • 2021-09-13
  • 2018-05-30
  • 2018-03-21
相关资源
相似解决方案