package com.yokmama.learn10.chapter07.lesson32;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.graphics.Palette;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;
public class PaletteActivity extends AppCompatActivity {
private static final String TAG = PaletteActivity.class.getSimpleName();
public static final String KEY_IMAGE = "key-image";
private Toolbar mToolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_palette);
//ツールバーの初期化
mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
//Toolbar上に戻る矢印を追加
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//画像リソースを遷移元のActivityから取得(-1は空を意味する)
int resId = -1;
if (getIntent() != null) {
resId = getIntent().getIntExtra(KEY_IMAGE, -1);
}
//画像リソースが確認できなかったら終了
if (resId == -1) {
finish();
}
//画像をセット
ImageView imageView = (ImageView) findViewById(R.id.imagePicture);
imageView.setImageResource(resId);
//画像のパレットを解析
Bitmap bitmap = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
Palette.Builder builder = new Palette.Builder(bitmap);
builder.generate(new Palette.PaletteAsyncListener() {
@Override
public void onGenerated(Palette palette) {
// Mutedな色情報を取得してToolbarにセット
Palette.Swatch muted = palette.getMutedSwatch();
if (muted != null) {
mToolbar.setBackgroundColor(muted.getRgb());
TextView tvTitle = (TextView) findViewById(R.id.textTitle);
tvTitle.setTextColor(muted.getTitleTextColor());
//ステータスバーのカラーを変更(Lollipop以降のみ動作)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.addFlags(
WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor(muted.getRgb());
}
}
//カラーブロックをセット
setPalletBlock(palette.getLightVibrantColor(Color.TRANSPARENT), R.id.viewPalette1);
setPalletBlock(palette.getVibrantColor(Color.TRANSPARENT), R.id.viewPalette2);
setPalletBlock(palette.getDarkVibrantColor(Color.TRANSPARENT), R.id.viewPalette3);
setPalletBlock(palette.getLightMutedColor(Color.TRANSPARENT), R.id.viewPalette4);
setPalletBlock(palette.getMutedColor(Color.TRANSPARENT), R.id.viewPalette5);
setPalletBlock(palette.getDarkMutedColor(Color.TRANSPARENT), R.id.viewPalette6);
}
});
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* 指定したViewにカラーをセット(色がない場合は非表示).
*
* @param color カラー
* @param viewId ビューID
*/
private void setPalletBlock(int color, int viewId) {
View view = findViewById(viewId);
if (color == Color.TRANSPARENT) {
view.setVisibility(View.GONE);
} else {
view.setBackgroundColor(color);
}
}
}