最近想把公司的中獎查詢加個小功能,彈出一個自定義的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>
這樣基本就可以用了。
