package com.richardradics.cleanrx.ui.activity; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.design.widget.CollapsingToolbarLayout; import android.support.v4.app.ActivityCompat; import android.support.v4.app.ActivityOptionsCompat; import android.support.v4.view.ViewCompat; import android.support.v7.graphics.Palette; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import com.github.ksoichiro.android.observablescrollview.ObservableScrollView; import com.github.ksoichiro.android.observablescrollview.ObservableScrollViewCallbacks; import com.github.ksoichiro.android.observablescrollview.ScrollState; import com.github.ksoichiro.android.observablescrollview.ScrollUtils; import com.nineoldandroids.view.ViewHelper; import com.richardradics.cleanrx.R; import com.richardradics.cleanrx.app.BaseActivity; import com.squareup.picasso.Picasso; import com.squareup.picasso.Target; import butterknife.InjectView; public class DetailActivity extends BaseActivity implements Palette.PaletteAsyncListener { public static final String EXTRA_IMAGE = "DetailActivity:image"; public static final String EXTRA_TITLE = "DetailActivity:title"; private static boolean TOOLBAR_IS_STICKY = false; private static float MAX_TEXT_SCALE_DELTA = 0.3f; int mFlexibleSpaceImageHeight; @InjectView(R.id.image) ImageView image; @InjectView(R.id.collapsing_toolbar) CollapsingToolbarLayout collapsingToolbar; Integer mActionBarSize; private Target bitmapImageViewTarget; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detail); mActionBarSize = getActionBarSize(); mFlexibleSpaceImageHeight = getResources().getDimensionPixelSize(R.dimen.flexible_space_image_height); image = (ImageView) findViewById(R.id.image); ViewCompat.setTransitionName(image, EXTRA_IMAGE); collapsingToolbar.setTitle(getIntent().getStringExtra(EXTRA_TITLE)); bitmapImageViewTarget = new Target() { @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { Palette.generateAsync(bitmap, DetailActivity.this); image.setImageBitmap(bitmap); } @Override public void onBitmapFailed(Drawable errorDrawable) { //place your code here } @Override public void onPrepareLoad(Drawable placeHolderDrawable) { //place your code here } }; Picasso.with(this).load(getIntent().getStringExtra(EXTRA_IMAGE)).into(bitmapImageViewTarget); } public static void launch(BaseActivity activity, View transitionView, String url, String title) { ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation( activity, transitionView, EXTRA_IMAGE); Intent intent = new Intent(activity, DetailActivity.class); intent.putExtra(EXTRA_IMAGE, url); intent.putExtra(EXTRA_TITLE, title); ActivityCompat.startActivity(activity, intent, options.toBundle()); } @Override public void onGenerated(Palette palette) { try { if (palette != null) { final Palette.Swatch darkVibrantSwatch = palette.getDarkVibrantSwatch(); final Palette.Swatch darkMutedSwatch = palette.getDarkMutedSwatch(); final Palette.Swatch lightVibrantSwatch = palette.getLightVibrantSwatch(); final Palette.Swatch lightMutedSwatch = palette.getLightMutedSwatch(); final Palette.Swatch vibrantSwatch = palette.getVibrantSwatch(); final Palette.Swatch backgroundAndContentColors = (darkVibrantSwatch != null) ? darkVibrantSwatch : darkMutedSwatch; final Palette.Swatch titleAndFabColors = (darkVibrantSwatch != null) ? lightVibrantSwatch : lightMutedSwatch; toolbar.setBackgroundColor(backgroundAndContentColors.getRgb()); // bodyTextview.setBackgroundColor(backgroundAndContentColors.getRgb()); titleTextView.setTextColor(titleAndFabColors.getRgb()); } } catch (Exception e) { } } }