12cfe25aefb32ed215f1c661d9670baf276fb7776James Kung/* 22cfe25aefb32ed215f1c661d9670baf276fb7776James Kung * Copyright (C) 2013 The Android Open Source Project 32cfe25aefb32ed215f1c661d9670baf276fb7776James Kung * 42cfe25aefb32ed215f1c661d9670baf276fb7776James Kung * Licensed under the Apache License, Version 2.0 (the "License"); 52cfe25aefb32ed215f1c661d9670baf276fb7776James Kung * you may not use this file except in compliance with the License. 62cfe25aefb32ed215f1c661d9670baf276fb7776James Kung * You may obtain a copy of the License at 72cfe25aefb32ed215f1c661d9670baf276fb7776James Kung * 82cfe25aefb32ed215f1c661d9670baf276fb7776James Kung * http://www.apache.org/licenses/LICENSE-2.0 92cfe25aefb32ed215f1c661d9670baf276fb7776James Kung * 102cfe25aefb32ed215f1c661d9670baf276fb7776James Kung * Unless required by applicable law or agreed to in writing, software 112cfe25aefb32ed215f1c661d9670baf276fb7776James Kung * distributed under the License is distributed on an "AS IS" BASIS, 122cfe25aefb32ed215f1c661d9670baf276fb7776James Kung * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132cfe25aefb32ed215f1c661d9670baf276fb7776James Kung * See the License for the specific language governing permissions and 142cfe25aefb32ed215f1c661d9670baf276fb7776James Kung * limitations under the License. 152cfe25aefb32ed215f1c661d9670baf276fb7776James Kung */ 162cfe25aefb32ed215f1c661d9670baf276fb7776James Kung 172cfe25aefb32ed215f1c661d9670baf276fb7776James Kungpackage com.android.colorpicker; 182cfe25aefb32ed215f1c661d9670baf276fb7776James Kung 192cfe25aefb32ed215f1c661d9670baf276fb7776James Kungimport android.content.Context; 202cfe25aefb32ed215f1c661d9670baf276fb7776James Kungimport android.graphics.drawable.Drawable; 217f1c44e9cb4f5503fae17d35d39370f9ef8395a3James Kungimport android.view.LayoutInflater; 222cfe25aefb32ed215f1c661d9670baf276fb7776James Kungimport android.view.View; 237f1c44e9cb4f5503fae17d35d39370f9ef8395a3James Kungimport android.widget.FrameLayout; 242cfe25aefb32ed215f1c661d9670baf276fb7776James Kungimport android.widget.ImageView; 252cfe25aefb32ed215f1c661d9670baf276fb7776James Kung 262cfe25aefb32ed215f1c661d9670baf276fb7776James Kung/** 272cfe25aefb32ed215f1c661d9670baf276fb7776James Kung * Creates a circular swatch of a specified color. Adds a checkmark if marked as checked. 282cfe25aefb32ed215f1c661d9670baf276fb7776James Kung */ 297f1c44e9cb4f5503fae17d35d39370f9ef8395a3James Kungpublic class ColorPickerSwatch extends FrameLayout implements View.OnClickListener { 302cfe25aefb32ed215f1c661d9670baf276fb7776James Kung private int mColor; 317f1c44e9cb4f5503fae17d35d39370f9ef8395a3James Kung private ImageView mSwatchImage; 327f1c44e9cb4f5503fae17d35d39370f9ef8395a3James Kung private ImageView mCheckmarkImage; 332cfe25aefb32ed215f1c661d9670baf276fb7776James Kung private OnColorSelectedListener mOnColorSelectedListener; 342cfe25aefb32ed215f1c661d9670baf276fb7776James Kung 352cfe25aefb32ed215f1c661d9670baf276fb7776James Kung /** 362cfe25aefb32ed215f1c661d9670baf276fb7776James Kung * Interface for a callback when a color square is selected. 372cfe25aefb32ed215f1c661d9670baf276fb7776James Kung */ 382cfe25aefb32ed215f1c661d9670baf276fb7776James Kung public interface OnColorSelectedListener { 392cfe25aefb32ed215f1c661d9670baf276fb7776James Kung 402cfe25aefb32ed215f1c661d9670baf276fb7776James Kung /** 412cfe25aefb32ed215f1c661d9670baf276fb7776James Kung * Called when a specific color square has been selected. 422cfe25aefb32ed215f1c661d9670baf276fb7776James Kung */ 432cfe25aefb32ed215f1c661d9670baf276fb7776James Kung public void onColorSelected(int color); 442cfe25aefb32ed215f1c661d9670baf276fb7776James Kung } 452cfe25aefb32ed215f1c661d9670baf276fb7776James Kung 462cfe25aefb32ed215f1c661d9670baf276fb7776James Kung public ColorPickerSwatch(Context context, int color, boolean checked, 472cfe25aefb32ed215f1c661d9670baf276fb7776James Kung OnColorSelectedListener listener) { 482cfe25aefb32ed215f1c661d9670baf276fb7776James Kung super(context); 497f1c44e9cb4f5503fae17d35d39370f9ef8395a3James Kung mColor = color; 502cfe25aefb32ed215f1c661d9670baf276fb7776James Kung mOnColorSelectedListener = listener; 517f1c44e9cb4f5503fae17d35d39370f9ef8395a3James Kung 527f1c44e9cb4f5503fae17d35d39370f9ef8395a3James Kung LayoutInflater.from(context).inflate(R.layout.color_picker_swatch, this); 537f1c44e9cb4f5503fae17d35d39370f9ef8395a3James Kung mSwatchImage = (ImageView) findViewById(R.id.color_picker_swatch); 547f1c44e9cb4f5503fae17d35d39370f9ef8395a3James Kung mCheckmarkImage = (ImageView) findViewById(R.id.color_picker_checkmark); 552cfe25aefb32ed215f1c661d9670baf276fb7776James Kung setColor(color); 562cfe25aefb32ed215f1c661d9670baf276fb7776James Kung setChecked(checked); 572cfe25aefb32ed215f1c661d9670baf276fb7776James Kung setOnClickListener(this); 582cfe25aefb32ed215f1c661d9670baf276fb7776James Kung } 592cfe25aefb32ed215f1c661d9670baf276fb7776James Kung 602cfe25aefb32ed215f1c661d9670baf276fb7776James Kung protected void setColor(int color) { 617f1c44e9cb4f5503fae17d35d39370f9ef8395a3James Kung Drawable[] colorDrawable = new Drawable[] 627f1c44e9cb4f5503fae17d35d39370f9ef8395a3James Kung {getContext().getResources().getDrawable(R.drawable.color_picker_swatch)}; 637f1c44e9cb4f5503fae17d35d39370f9ef8395a3James Kung mSwatchImage.setImageDrawable(new ColorStateDrawable(colorDrawable, color)); 642cfe25aefb32ed215f1c661d9670baf276fb7776James Kung } 652cfe25aefb32ed215f1c661d9670baf276fb7776James Kung 662cfe25aefb32ed215f1c661d9670baf276fb7776James Kung private void setChecked(boolean checked) { 672cfe25aefb32ed215f1c661d9670baf276fb7776James Kung if (checked) { 687f1c44e9cb4f5503fae17d35d39370f9ef8395a3James Kung mCheckmarkImage.setVisibility(View.VISIBLE); 692cfe25aefb32ed215f1c661d9670baf276fb7776James Kung } else { 707f1c44e9cb4f5503fae17d35d39370f9ef8395a3James Kung mCheckmarkImage.setVisibility(View.GONE); 712cfe25aefb32ed215f1c661d9670baf276fb7776James Kung } 722cfe25aefb32ed215f1c661d9670baf276fb7776James Kung } 732cfe25aefb32ed215f1c661d9670baf276fb7776James Kung 742cfe25aefb32ed215f1c661d9670baf276fb7776James Kung @Override 752cfe25aefb32ed215f1c661d9670baf276fb7776James Kung public void onClick(View v) { 762cfe25aefb32ed215f1c661d9670baf276fb7776James Kung if (mOnColorSelectedListener != null) { 772cfe25aefb32ed215f1c661d9670baf276fb7776James Kung mOnColorSelectedListener.onColorSelected(mColor); 782cfe25aefb32ed215f1c661d9670baf276fb7776James Kung } 792cfe25aefb32ed215f1c661d9670baf276fb7776James Kung } 802cfe25aefb32ed215f1c661d9670baf276fb7776James Kung} 81