content: package com.wm.remusic.activity;
  
  import android.graphics.Bitmap;
  import android.graphics.Color;
  import android.graphics.drawable.Drawable;
  import android.graphics.drawable.TransitionDrawable;
  import android.net.Uri;
  import android.os.AsyncTask;
  import android.os.Bundle;
  import android.support.design.widget.AppBarLayout;
  import android.support.design.widget.CollapsingToolbarLayout;
  import android.support.v7.app.ActionBar;
  import android.support.v7.widget.LinearLayoutManager;
  import android.support.v7.widget.RecyclerView;
  import android.support.v7.widget.Toolbar;
  import android.view.View;
  import android.widget.ImageView;
  import android.widget.TextView;
  
  import com.facebook.drawee.view.SimpleDraweeView;
  import com.wm.remusic.R;
  import com.wm.remusic.adapter.PlaylistDetailAdapter;
  import com.wm.remusic.info.MusicInfo;
  import com.wm.remusic.provider.PlaylistsManager;
  import com.wm.remusic.service.MusicTrack;
  import com.wm.remusic.uitl.CommonUtils;
  import com.wm.remusic.uitl.ImageUtils;
  import com.wm.remusic.uitl.MusicUtils;
  import com.wm.remusic.widget.DividerItemDecoration;
  
  import java.util.ArrayList;
  
  /**
   * Created by wm on 2016/4/11.
   */
  public class PlaylistDetailActivity extends BaseActivity {
  
      private long playlsitId = -1;
      private String albumPath, playlistname;
  
      private PlaylistsManager playlistsManager;
  
      private SimpleDraweeView albumArtSmall;
      private ImageView albumArt;
      private TextView albumTitle, albumDetails;
  
      private RecyclerView recyclerView;
      private PlaylistDetailAdapter mAdapter;
  
      private Toolbar toolbar;
  
      private CollapsingToolbarLayout collapsingToolbarLayout;
      private AppBarLayout appBarLayout;
  
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          playlistsManager = PlaylistsManager.getInstance(this);
          super.onCreate(savedInstanceState);
          if (getIntent().getExtras() != null) {
              playlsitId = getIntent().getLongExtra("playlistid", -1);
              albumPath = getIntent().getStringExtra("albumart");
              playlistname = getIntent().getStringExtra("playlistname");
          }
  
          setContentView(R.layout.fragment_playlist_detail);
  
          albumArt = (ImageView) findViewById(R.id.album_art);
          albumTitle = (TextView) findViewById(R.id.album_title);
          albumDetails = (TextView) findViewById(R.id.album_details);
          albumArtSmall = (SimpleDraweeView) findViewById(R.id.albumArtSmall);
  
          toolbar = (Toolbar) findViewById(R.id.toolbar);
          toolbar.setPadding(0, CommonUtils.getStatusHeight(this) / 2, 0, 0);
  
          recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
          collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar);
          appBarLayout = (AppBarLayout) findViewById(R.id.app_bar);
          //recyclerView.setEnabled(false);
          recyclerView.setLayoutManager(new LinearLayoutManager(this));
  
          setUpEverything();
  
  //        runOnUiThread(new Runnable() {
  //            @Override
  //            public void run() {
  //                getWindow().getDecorView().setFitsSystemWindows(true);
  //            }
  //        });
  
      }
  
  
      private void setUpEverything() {
          setupToolbar();
          loadAllLists();
          setAlbumart();
      }
  
      private void setupToolbar() {
  
          setSupportActionBar(toolbar);
          final ActionBar ab = getSupportActionBar();
          ab.setHomeAsUpIndicator(R.drawable.actionbar_back);
          ab.setDisplayHomeAsUpEnabled(true);
          ab.setTitle("歌单");
          toolbar.setNavigationOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                  onBackPressed();
              }
          });
          //collapsingToolbarLayout.setTitle("歌单");
  
      }
  
      private void loadAllLists() {
          new AsyncTask<Void, Void, Void>() {
              @Override
              protected Void doInBackground(final Void... unused) {
                  ArrayList<MusicTrack> musicInfos = playlistsManager.getPlaylist(playlsitId);
                  long[] ids = new long[musicInfos.size()];
                  for (int i = 0; i < musicInfos.size(); i++) {
                      ids[i] = musicInfos.get(i).mId;
                  }
                  ArrayList<MusicInfo> mList = MusicUtils.getMusicLists(PlaylistDetailActivity.this, ids);
                  mAdapter = new PlaylistDetailAdapter(PlaylistDetailActivity.this, playlsitId, mList);
                  return null;
              }
  
              @Override
              protected void onPostExecute(Void aVoid) {
                  recyclerView.setAdapter(mAdapter);
                  recyclerView.addItemDecoration(new DividerItemDecoration(PlaylistDetailActivity.this, DividerItemDecoration.VERTICAL_LIST));
              }
          }.execute();
      }
  
      //更新adapter界面
      public void reloadAdapter() {
          new AsyncTask<Void, Void, Void>() {
              @Override
              protected Void doInBackground(final Void... unused) {
  
                  ArrayList<MusicTrack> musicInfos = playlistsManager.getPlaylist(playlsitId);
                  long[] ids = new long[musicInfos.size()];
                  for (int i = 0; i < musicInfos.size(); i++) {
                      ids[i] = musicInfos.get(i).mId;
                  }
                  ArrayList<MusicInfo> mList = MusicUtils.getMusicLists(PlaylistDetailActivity.this, ids);
                  mAdapter.updateDataSet(playlsitId, mList);
  
                  return null;
              }
  
              @Override
              protected void onPostExecute(Void aVoid) {
                  mAdapter.notifyDataSetChanged();
              }
          }.execute();
      }
  
      @Override
      public void onResume() {
          super.onResume();
          toolbar.setBackgroundColor(Color.TRANSPARENT);
          reloadAdapter();
  
      }
  
      @Override
      public void onPause() {
          super.onPause();
      }
  
      private void setAlbumart() {
          albumTitle.setText(playlistname);
          albumArtSmall.setImageURI(Uri.parse(albumPath));
          final Drawable drawable;
          try {
              drawable = Drawable.createFromStream(PlaylistDetailActivity.this.getContentResolver().openInputStream(Uri.parse(albumPath)), null);
  
              new setBlurredAlbumArt().execute(ImageUtils.getBitmapFromDrawable(drawable));
  
          } catch (Exception e) {
  
          }
  
      }
  
  
      private class setBlurredAlbumArt extends AsyncTask<Bitmap, Void, Drawable> {
  
          @Override
          protected Drawable doInBackground(Bitmap... loadedImage) {
              Drawable drawable = null;
  
              try {
                  drawable = ImageUtils.createBlurredImageFromBitmap(loadedImage[0], PlaylistDetailActivity.this, 20);
              } catch (Exception e) {
                  e.printStackTrace();
              }
              return drawable;
          }
  
          @Override
          protected void onPostExecute(Drawable result) {
              if (result != null) {
                  if (albumArt.getDrawable() != null) {
                      final TransitionDrawable td =
                              new TransitionDrawable(new Drawable[]{
                                      albumArt.getDrawable(),
                                      result
                              });
                      albumArt.setImageDrawable(td);
                      td.startTransition(200);
  
                  } else {
                      albumArt.setImageDrawable(result);
                  }
              }
          }
  
          @Override
          protected void onPreExecute() {
          }
      }
  
  
  }
  