package com.architjn.acjmusicplayer.ui.layouts.activity; import android.app.ActivityManager; import android.database.Cursor; import android.graphics.BitmapFactory; import android.graphics.Color; import android.os.Build; import android.os.Bundle; import android.provider.MediaStore; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.design.widget.CollapsingToolbarLayout; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.view.MenuItem; import android.view.WindowManager; import android.widget.ImageView; import android.widget.LinearLayout; import com.architjn.acjmusicplayer.R; import com.architjn.acjmusicplayer.utils.ListSongs; import com.architjn.acjmusicplayer.utils.PermissionChecker; import com.architjn.acjmusicplayer.utils.Utils; import com.architjn.acjmusicplayer.utils.adapters.AlbumSongListAdapter; import com.squareup.picasso.Picasso; import java.io.File; /** * Created by architjn on 30/11/15. */ public class AlbumActivity extends AppCompatActivity { private RecyclerView rv; private ImageView albumArt; private PermissionChecker permissionChecker; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { getWindow().setFlags( WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); getWindow().setStatusBarColor(ContextCompat.getColor(this, android.R.color.transparent)); overridePendingTransition(0, 0); super.onCreate(savedInstanceState); setContentView(R.layout.activity_album); initView(); } private void initView() { permissionChecker = new PermissionChecker(this, this, findViewById(R.id.base_view_album)); rv = (RecyclerView) findViewById(R.id.rv_album_activity); albumArt = (ImageView) findViewById(R.id.activity_album_art); int size = new Utils(this).getWindowWidth(); int panelSize = (int) getResources().getDimension(R.dimen.album_title_height); int height = new Utils(this).getWindowHeight() - panelSize * 2; setAlbumArtSize(size, height); setAlbumArt(size, new Utils(this).getWindowHeight()); CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsingtoolbarlayout_album); if (collapsingToolbarLayout != null) collapsingToolbarLayout.setTitle(getIntent().getStringExtra("albumName")); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_album); setSupportActionBar(toolbar); if (getSupportActionBar() != null) getSupportActionBar().setDisplayHomeAsUpEnabled(true); addSongList(); setForAnimation(); } private void setAlbumArtSize(int width, int height) { LinearLayout.LayoutParams lp = new LinearLayout .LayoutParams(width, height); albumArt.setLayoutParams(lp); } private void setForAnimation() { rv.scrollTo(0, 100); } private void addSongList() { rv.setLayoutManager(new LinearLayoutManager(this)); rv.setAdapter(new AlbumSongListAdapter(this, ListSongs.getAlbumSongList(this, getIntent().getLongExtra("albumId", 0)), this, permissionChecker)); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { permissionChecker.onRequestPermissionsResult(requestCode, permissions, grantResults); } public void setAlbumArt(int width, int height) { Cursor cursor = getContentResolver().query(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, new String[]{MediaStore.Audio.Albums._ID, MediaStore.Audio.Albums.ALBUM_ART}, MediaStore.Audio.Albums._ID + "=?", new String[]{String.valueOf(getIntent().getLongExtra("albumId", 0))}, null); if (cursor != null && cursor.moveToFirst()) { String imagePath = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Albums.ALBUM_ART)); try { if (imagePath == null) { Utils utils = new Utils(this); albumArt.setImageBitmap(utils.getBitmapOfVector(R.drawable.default_art, width, width)); return; } Picasso.with(AlbumActivity.this) .load(new File(imagePath)) .into(albumArt); } catch (NullPointerException e) { e.printStackTrace(); } } int colorPrimary = getIntent().getIntExtra("albumColor", ContextCompat.getColor(this, R.color.colorPrimary)); findViewById(R.id.album_song_name_holder).setBackgroundColor(colorPrimary); ((CollapsingToolbarLayout) findViewById(R.id.collapsingtoolbarlayout_album)) .setContentScrimColor(colorPrimary); ((CollapsingToolbarLayout) findViewById(R.id.collapsingtoolbarlayout_album)) .setStatusBarScrimColor(getAutoStatColor(colorPrimary)); if (Build.VERSION.SDK_INT >= 21) { ActivityManager.TaskDescription taskDescription = new ActivityManager.TaskDescription(getIntent().getStringExtra("albumName"), BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher), colorPrimary); setTaskDescription(taskDescription); } cursor.close(); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: super.onBackPressed(); break; } return super.onOptionsItemSelected(item); } @Override public void onBackPressed() { super.onBackPressed(); } public int getAutoStatColor(int baseColor) { float[] hsv = new float[3]; Color.colorToHSV(baseColor, hsv); hsv[2] *= 1.4f; return Color.HSVToColor(hsv); } }