package com.guangzhou.haochuan.jxtv.activity; import android.app.Activity; import android.app.Dialog; import android.app.DialogFragment; import android.app.FragmentManager; import android.content.DialogInterface; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.widget.FrameLayout; import android.widget.TextView; import android.widget.Toast; import com.guangzhou.haochuan.jxtv.R; import java.text.SimpleDateFormat; import java.util.Date; /** * Created by yunhaipiaodi on 2017/10/13. */ public class VideoEndDialog extends DialogFragment{ private OnClickListener mListener; private long mLastClickTime = 0; FrameLayout continueWatch; FrameLayout exit; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); this.setCancelable(false); //Toast.makeText(getActivity(),"currentPos:" + currentPos + "; maxPos:" + maxPos,Toast.LENGTH_LONG).show(); } @Override public void onAttach(Activity activity){ super.onAttach(activity); if(activity instanceof OnClickListener){ mListener = (OnClickListener)activity; }else{ throw new RuntimeException(activity.toString() + " must implement VideoEndDialog.OnClickListener"); } } @Override public void onStart(){ super.onStart(); mLastClickTime = getCurrentTime(); //Toast.makeText(getActivity(),"mLastClickTime:" + mLastClickTime,Toast.LENGTH_LONG ).show(); } private int getCurrentTime(){ int currentTime = 0; SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HHmmss"); currentTime = Integer.parseInt(simpleDateFormat.format(new Date())); return currentTime; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Dialog dialog = getDialog(); dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); dialog.setOnKeyListener(new DialogInterface.OnKeyListener() { @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { switch (keyCode){ case KeyEvent.KEYCODE_BACK: if (getCurrentTime() - mLastClickTime < 2) { return false; }else{ VideoEndDialog.this.dismiss(); return true; } } return false; } }); View view = inflater.inflate(R.layout.video_end_dialog, container); continueWatch = (FrameLayout)view.findViewById(R.id.continue_watch); exit = (FrameLayout)view.findViewById(R.id.exit); setViewData(); continueWatch.requestFocus(); return view; } @Override public void show(FragmentManager manager, String tag) { try { //在每个add事务前增加一个remove事务,防止连续的add manager.beginTransaction().remove(this).commitAllowingStateLoss(); super.show(manager, tag); } catch (Exception e) { //同一实例使用不同的tag会异常,这里捕获一下 e.printStackTrace(); } } @Override public void onDismiss(DialogInterface dialog) { super.onDismiss(dialog); mLastClickTime = 0; mListener.onDismiss(); } private void setViewData(){ continueWatch.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mListener.onPlayCurrent(); VideoEndDialog.this.dismiss(); } }); exit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mListener.onExit(); VideoEndDialog.this.dismiss(); } }); } public interface OnClickListener{ public void onPlayCurrent(); public void onExit(); public void onDismiss(); } }