123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337 |
- package com.haochuan.dudutoy;
- import android.app.Activity;
- import android.app.Dialog;
- import android.app.DialogFragment;
- import android.app.FragmentManager;
- import android.content.DialogInterface;
- import android.content.res.ColorStateList;
- 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.ImageView;
- import android.widget.LinearLayout;
- import android.widget.TextView;
- import android.widget.Toast;
- import com.android.volley.Request;
- import com.android.volley.RequestQueue;
- import com.android.volley.Response;
- import com.android.volley.VolleyError;
- import com.android.volley.toolbox.JsonObjectRequest;
- import com.android.volley.toolbox.Volley;
- import org.json.JSONObject;
- import org.w3c.dom.Text;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- /**
- * Created by yunhaipiaodi on 2017/10/13.
- */
- public class VideoEndDialog extends DialogFragment{
- private static String PARAM1 = "uid";
- private static String PARAM2 = "sourceId";
- private static String PARAM3 = "isComplete";
- private String uId = "";
- private String sourceId = "";
- private Boolean isComplete = false;
- private OnClickListener mListener;
- private RequestQueue queue;
- private LinearLayout collectContainer;
- private ImageView collectIcon;
- private TextView collectTitle;
- private long mLastClickTime = 0;
- public static VideoEndDialog getInstance(String uId,String sourceId,Boolean isComplete){
- VideoEndDialog videoEndDialog = new VideoEndDialog();
- Bundle bundle = new Bundle();
- bundle.putString(PARAM1,uId);
- bundle.putString(PARAM2,sourceId);
- bundle.putBoolean(PARAM3,isComplete);
- videoEndDialog.setArguments(bundle);
- return videoEndDialog;
- }
- @Override
- public void onAttach(Activity activity){
- super.onAttach(activity);
- queue = Volley.newRequestQueue(activity);
- if(activity instanceof OnClickListener){
- mListener = (OnClickListener)activity;
- }else{
- throw new RuntimeException(activity.toString()
- + " must implement VideoEndDialog.OnClickListener");
- }
- }
- @Override
- public void onCreate(Bundle savedInstanceState){
- super.onCreate(savedInstanceState);
- this.setCancelable(false);
- uId = getArguments().getString(PARAM1);
- sourceId = getArguments().getString(PARAM2);
- isComplete = getArguments().getBoolean(PARAM3);
- }
- @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.dialog_video_end, container);
- LinearLayout continueBtn = view.findViewById(R.id.continue_play);
- collectContainer = view.findViewById(R.id.collect_video);
- LinearLayout exitBtn = view.findViewById(R.id.exit_play);
- collectIcon = view.findViewById(R.id.collect_icon);
- collectTitle = view.findViewById(R.id.collect_title);
- if(isComplete){
- continueBtn.setVisibility(View.INVISIBLE);
- }
- getCollectState(new OnCollectListener(){
- @Override
- public void onCollected(boolean result) {
- if(result){ //已经收藏
- collectSet();
- collectContainer.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- cancelCollectStateToWeb();
- }
- });
- }else{ //未收藏
- noCollectSet();
- collectContainer.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- addCollectStateToWeb();
- }
- });
- }
- }
- });
- continueBtn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- VideoEndDialog.this.dismiss();
- mListener.onContinuePlay();
- }
- });
- exitBtn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- mListener.onExit();
- }
- });
- continueBtn.requestFocus();
- return view;
- }
- @Override
- public void onDismiss(DialogInterface dialog) {
- super.onDismiss(dialog);
- if(mListener!=null){
- mListener.onDismiss();
- }
- }
- //没收藏时的设置
- private void noCollectSet(){
- collectTitle.setText("加入收藏");
- collectTitle.setTextColor(getActivity().getResources().getColor(R.color.video_end_text_color));
- collectIcon.setImageResource(R.drawable.btn_icon_add_default);
- }
- //已收藏时的设置
- private void collectSet(){
- collectTitle.setText("取消收藏");
- collectTitle.setTextColor(getActivity().getResources().getColor(R.color.video_end_text_color));
- collectIcon.setImageResource(R.drawable.btn_icon_add_selected);
- }
- public void getCollectState(final OnCollectListener listener ){
- final String requestUrl = new UrlManager().getCollectedStateUrl(uId,sourceId);
- queue.add(new JsonObjectRequest(Request.Method.GET, requestUrl, null, new Response.Listener<JSONObject>() {
- @Override
- public void onResponse(JSONObject response) {
- if(response.has("code")){
- try{
- int code = response.getInt("code");
- switch (code){
- case 1:
- listener.onCollected(false);
- break;
- case 2:
- listener.onCollected(true);
- break;
- default:
- listener.onCollected(false);
- break;
- }
- }catch (Exception e){
- listener.onCollected(false);
- e.printStackTrace();
- }
- }
- }
- }, new Response.ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError error) {
- }
- }));
- }
- private void addCollectStateToWeb(){
- final String requestUrl = new UrlManager().addCollectedStateUrl(uId,sourceId,2);
- queue.add(new JsonObjectRequest(Request.Method.GET, requestUrl, null, new Response.Listener<JSONObject>() {
- @Override
- public void onResponse(JSONObject response) {
- if(response.has("code")){
- try{
- int code = response.getInt("code");
- if(code == 0){
- collectSet();
- collectContainer.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- cancelCollectStateToWeb();
- }
- });
- }else{
- Toast.makeText(getActivity(),"收藏失败",Toast.LENGTH_SHORT).show();
- }
- }catch (Exception e){
- e.printStackTrace();
- }
- }
- }
- }, new Response.ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError error) {
- }
- }));
- }
- private void cancelCollectStateToWeb(){
- final String requestUrl = new UrlManager().cancelCollectedStateUrl(uId,sourceId,2);
- queue.add(new JsonObjectRequest(Request.Method.GET, requestUrl, null, new Response.Listener<JSONObject>() {
- @Override
- public void onResponse(JSONObject response) {
- if(response.has("code")){
- try{
- int code = response.getInt("code");
- if(code == 0){
- noCollectSet();
- collectContainer.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- addCollectStateToWeb();
- }
- });
- }else{
- Toast.makeText(getActivity(),"取消收藏失败",Toast.LENGTH_SHORT).show();
- }
- }catch (Exception e){
- e.printStackTrace();
- }
- }
- }
- }, new Response.ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError error) {
- }
- }));
- }
- @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 onDestroy(){
- collectContainer= null;
- collectIcon = null;
- collectTitle = null;
- super.onDestroy();
- }
- public interface OnCollectListener{
- public void onCollected(boolean result);
- }
- public interface OnClickListener{
- public void onExit();
- public void onDismiss();
- public void onContinuePlay();
- }
- }
|