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

大概就是这样子,布局很简单,让UI做个透明的背景图,就OK
1:定义一个类继承DialogFragment(看个人需求)
public class AttachDialogFragment extends DialogFragment{
public Activity mContext;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
this.mContext = activity;
}
}
2:简单使用
/**
* Author:白树 on 2018/8/30 14:07
* <p> 用户 lose
* Email: gusumobai@163.com
*/
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:使用方式
private void loseDialog(){
CustomLoseDialog customLoseDialog = new CustomLoseDialog();
customLoseDialog.show(getFragmentManager(),"lose");
}
4:
在需要调用的地方,直接调用方法。
5:
<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>
这样基本就可以用了。
