package com.wm.remusic.dialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.support.v7.app.AlertDialog; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.animation.Animation; import android.view.animation.RotateAnimation; import com.facebook.drawee.view.SimpleDraweeView; import com.google.gson.JsonArray; import com.wm.remusic.MainApplication; import com.wm.remusic.R; import com.wm.remusic.downmusic.DownService; import com.wm.remusic.handler.HandlerUtil; import com.wm.remusic.json.MusicFileDownInfo; import com.wm.remusic.net.BMA; import com.wm.remusic.net.HttpUtil; import com.wm.remusic.uitl.IConstants; import com.wm.remusic.uitl.PreferencesUtility; import java.util.ArrayList; /** * Created by wm on 2016/8/8. */ public class AddDownTask extends DialogFragment { private String[] ids, names, artists; private Context mContext; private ArrayList<String> mList = new ArrayList<>(); private String isLoding; public static AddDownTask newIntance(String[] ids, String[] names, String[] artists) { AddDownTask addDownTask = new AddDownTask(); Bundle bundle = new Bundle(); bundle.putStringArray("ids", ids); bundle.putStringArray("names", names); bundle.putStringArray("artists", artists); addDownTask.setArguments(bundle); return addDownTask; } @Override public View onCreateView(LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) { //设置无标题 getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE); if (getArguments() != null) { ids = getArguments().getStringArray("ids"); names = getArguments().getStringArray("names"); } if (getContext() != null) { mContext = getContext(); } final LoadDownInfos loadDownInfos = new LoadDownInfos(); loadDownInfos.execute(); View view = inflater.inflate(R.layout.loading_dialog_fragment, container); SimpleDraweeView draweeView = (SimpleDraweeView) view.findViewById(R.id.loding_circle); RotateAnimation animation = new RotateAnimation(0f, 360f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); animation.setDuration(5000); draweeView.setAnimation(animation); animation.start(); isLoding = "loding"; HandlerUtil.getInstance(mContext).postDelayed(new Runnable() { @Override public void run() { if (isLoding != null) { loadDownInfos.cancel(true); dismiss(); } } }, 10000); return view; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setStyle(DialogFragment.STYLE_NO_FRAME, R.style.DownLoadingDialog); } @Override public void onStart() { super.onStart(); //设置fragment高度 、宽度 int dialogHeight = (int) (getActivity().getResources().getDisplayMetrics().heightPixels); int dialogWidth = (int) (getActivity().getResources().getDisplayMetrics().widthPixels); getDialog().getWindow().setLayout(dialogWidth, dialogHeight); getDialog().setCanceledOnTouchOutside(true); } class LoadDownInfos extends AsyncTask<Void, Void, Void> { int size; @Override protected Void doInBackground(Void... params) { int le = ids.length; for (int j = 0; j < le; j++) { try { JsonArray jsonArray = HttpUtil.getResposeJsonObject(BMA.Song.songInfo(ids[j]).trim()).get("songurl") .getAsJsonObject().get("url").getAsJsonArray(); int len = jsonArray.size(); int downloadBit = PreferencesUtility.getInstance(mContext).getDownMusicBit(); MusicFileDownInfo musicFileDownInfo = null; for (int i = len - 1; i > -1; i--) { int bit = Integer.parseInt(jsonArray.get(i).getAsJsonObject().get("file_bitrate").toString()); if (bit == downloadBit) { musicFileDownInfo = MainApplication.gsonInstance().fromJson(jsonArray.get(i), MusicFileDownInfo.class); } else if (bit < downloadBit && bit >= 64) { musicFileDownInfo = MainApplication.gsonInstance().fromJson(jsonArray.get(i), MusicFileDownInfo.class); } } if (musicFileDownInfo != null) { mList.add(musicFileDownInfo.getFile_link()); size += musicFileDownInfo.getFile_size(); } } catch (Exception e) { e.printStackTrace(); } } return null; } @Override protected void onPostExecute(Void aVoid) { super.onPostExecute(aVoid); Log.e("size", size + ""); String result = null; size = size / (1024 * 1024); Log.e("size", size + ""); if (size > 1024) { result = (float) Math.round((float) size / (1024 * 10)) / 10 + "G"; } else { result = size + "M"; } new AlertDialog.Builder(mContext).setTitle("将下载歌曲,大约占用" + result + "空间,确定下载吗") .setPositiveButton(mContext.getString(R.string.sure), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent intent = new Intent(); intent.putExtra("names", names); intent.putExtra("artists", artists); intent.putExtra("urls", mList); intent.setAction(DownService.ADD_MULTI_DOWNTASK); intent.setPackage(IConstants.PACKAGE); mContext.startService(intent); dialog.dismiss(); } }). setNegativeButton(mContext.getString(R.string.cancel), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }).show(); dismiss(); } } }