VideoEndDialog.java 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. package com.guangzhou.haochuan.jxtv.activity;
  2. import android.app.Activity;
  3. import android.app.Dialog;
  4. import android.app.DialogFragment;
  5. import android.app.FragmentManager;
  6. import android.content.DialogInterface;
  7. import android.graphics.Color;
  8. import android.graphics.drawable.ColorDrawable;
  9. import android.os.Bundle;
  10. import android.view.KeyEvent;
  11. import android.view.LayoutInflater;
  12. import android.view.View;
  13. import android.view.ViewGroup;
  14. import android.view.Window;
  15. import android.widget.FrameLayout;
  16. import android.widget.TextView;
  17. import android.widget.Toast;
  18. import com.guangzhou.haochuan.jxtv.R;
  19. import java.text.SimpleDateFormat;
  20. import java.util.Date;
  21. /**
  22. * Created by yunhaipiaodi on 2017/10/13.
  23. */
  24. public class VideoEndDialog extends DialogFragment{
  25. private OnClickListener mListener;
  26. private long mLastClickTime = 0;
  27. FrameLayout continueWatch;
  28. FrameLayout exit;
  29. @Override
  30. public void onCreate(Bundle savedInstanceState){
  31. super.onCreate(savedInstanceState);
  32. this.setCancelable(false);
  33. //Toast.makeText(getActivity(),"currentPos:" + currentPos + "; maxPos:" + maxPos,Toast.LENGTH_LONG).show();
  34. }
  35. @Override
  36. public void onAttach(Activity activity){
  37. super.onAttach(activity);
  38. if(activity instanceof OnClickListener){
  39. mListener = (OnClickListener)activity;
  40. }else{
  41. throw new RuntimeException(activity.toString()
  42. + " must implement VideoEndDialog.OnClickListener");
  43. }
  44. }
  45. @Override
  46. public void onStart(){
  47. super.onStart();
  48. mLastClickTime = getCurrentTime();
  49. //Toast.makeText(getActivity(),"mLastClickTime:" + mLastClickTime,Toast.LENGTH_LONG ).show();
  50. }
  51. private int getCurrentTime(){
  52. int currentTime = 0;
  53. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HHmmss");
  54. currentTime = Integer.parseInt(simpleDateFormat.format(new Date()));
  55. return currentTime;
  56. }
  57. @Override
  58. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  59. Bundle savedInstanceState)
  60. {
  61. Dialog dialog = getDialog();
  62. dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
  63. dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
  64. dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
  65. @Override
  66. public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
  67. switch (keyCode){
  68. case KeyEvent.KEYCODE_BACK:
  69. if (getCurrentTime() - mLastClickTime < 2) {
  70. return false;
  71. }else{
  72. VideoEndDialog.this.dismiss();
  73. return true;
  74. }
  75. }
  76. return false;
  77. }
  78. });
  79. View view = inflater.inflate(R.layout.video_end_dialog, container);
  80. continueWatch = (FrameLayout)view.findViewById(R.id.continue_watch);
  81. exit = (FrameLayout)view.findViewById(R.id.exit);
  82. setViewData();
  83. continueWatch.requestFocus();
  84. return view;
  85. }
  86. @Override
  87. public void show(FragmentManager manager, String tag) {
  88. try {
  89. //在每个add事务前增加一个remove事务,防止连续的add
  90. manager.beginTransaction().remove(this).commitAllowingStateLoss();
  91. super.show(manager, tag);
  92. } catch (Exception e) {
  93. //同一实例使用不同的tag会异常,这里捕获一下
  94. e.printStackTrace();
  95. }
  96. }
  97. @Override
  98. public void onDismiss(DialogInterface dialog) {
  99. super.onDismiss(dialog);
  100. mLastClickTime = 0;
  101. mListener.onDismiss();
  102. }
  103. private void setViewData(){
  104. continueWatch.setOnClickListener(new View.OnClickListener() {
  105. @Override
  106. public void onClick(View v) {
  107. mListener.onPlayCurrent();
  108. VideoEndDialog.this.dismiss();
  109. }
  110. });
  111. exit.setOnClickListener(new View.OnClickListener() {
  112. @Override
  113. public void onClick(View v) {
  114. mListener.onExit();
  115. VideoEndDialog.this.dismiss();
  116. }
  117. });
  118. }
  119. public interface OnClickListener{
  120. public void onPlayCurrent();
  121. public void onExit();
  122. public void onDismiss();
  123. }
  124. }