package com.boardgamegeek.ui; import android.graphics.Bitmap; import android.graphics.Color; import android.graphics.drawable.BitmapDrawable; import android.net.Uri; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.graphics.Palette; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; import com.boardgamegeek.R; import com.boardgamegeek.util.ActivityUtils; import com.boardgamegeek.util.HttpUtils; import com.boardgamegeek.util.PaletteTransformation; import com.crashlytics.android.answers.Answers; import com.crashlytics.android.answers.ContentViewEvent; import com.squareup.picasso.Callback; import com.squareup.picasso.Picasso; import butterknife.BindView; import butterknife.ButterKnife; import timber.log.Timber; public class ImageActivity extends AppCompatActivity { @BindView(R.id.image) ImageView imageView; @BindView(R.id.progress) View progressBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_image); ButterKnife.bind(this); final String imageUrl = getIntent().getStringExtra(ActivityUtils.KEY_IMAGE_URL); if (TextUtils.isEmpty(imageUrl)) { Timber.w("Received an empty imageUrl"); finish(); return; } if (savedInstanceState == null) { String imageId = Uri.parse(imageUrl).getLastPathSegment(); Answers.getInstance().logContentView(new ContentViewEvent() .putContentType("Image") .putContentId(imageId)); } Picasso.with(this) .load(HttpUtils.ensureScheme(imageUrl)) .error(R.drawable.thumbnail_image_empty) .fit() .centerInside() .transform(PaletteTransformation.instance()) .into(imageView, new Callback.EmptyCallback() { @Override public void onSuccess() { Bitmap bitmap = ((BitmapDrawable) imageView.getDrawable()).getBitmap(); Palette palette = PaletteTransformation.getPalette(bitmap); imageView.setBackgroundColor(getColor(palette)); progressBar.setVisibility(View.GONE); } }); } private int getColor(Palette palette) { Palette.Swatch swatch = palette.getDarkMutedSwatch(); if (swatch == null) { swatch = palette.getDarkVibrantSwatch(); } if (swatch == null) { swatch = palette.getMutedSwatch(); } if (swatch == null) { return Color.BLACK; } return swatch.getRgb(); } }