/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android.ui.view; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Rect; import com.galaxy.meetup.client.android.R; /** * * @author sihai * */ public class ClickableImageButton implements ClickableItem { private static Paint sImageSelectedPaint; private boolean mClicked; private Bitmap mClickedBitmap; private CharSequence mContentDescription; private Bitmap mDefaultBitmap; private ClickableImageButtonListener mListener; private Rect mRect; public ClickableImageButton(Context context, Bitmap bitmap, Bitmap bitmap1, ClickableImageButtonListener clickableimagebuttonlistener, CharSequence charsequence) { mDefaultBitmap = bitmap; if(mRect != null) mRect = new Rect(mRect.left, mRect.top, mRect.left + mDefaultBitmap.getWidth(), mRect.top + mDefaultBitmap.getHeight()); mClickedBitmap = null; mListener = clickableimagebuttonlistener; mContentDescription = charsequence; if(sImageSelectedPaint == null) { Paint paint = new Paint(); sImageSelectedPaint = paint; paint.setStrokeWidth(4F); sImageSelectedPaint.setColor(context.getApplicationContext().getResources().getColor(R.color.image_selected_stroke)); sImageSelectedPaint.setStyle(android.graphics.Paint.Style.STROKE); } } public final int compare(ClickableItem obj, ClickableItem obj1) { ClickableItem clickableitem = (ClickableItem)obj; ClickableItem clickableitem1 = (ClickableItem)obj1; return sComparator.compare(clickableitem, clickableitem1); } public final void draw(Canvas canvas) { boolean flag; Bitmap bitmap; if(mClicked && mClickedBitmap == null && mListener != null) flag = true; else flag = false; if(mClicked && mClickedBitmap != null && mListener != null) bitmap = mClickedBitmap; else bitmap = mDefaultBitmap; canvas.drawBitmap(bitmap, null, mRect, null); if(flag) canvas.drawRect(2 + mRect.left, 2 + mRect.top, -2 + mRect.right, -2 + mRect.bottom, sImageSelectedPaint); } public final CharSequence getContentDescription() { return mContentDescription; } public final Rect getRect() { return mRect; } public final boolean handleEvent(int i, int j, int k) { boolean flag = true; if(3 == k) { return false; } if(!mRect.contains(i, j)) { if(k == 1) mClicked = false; return false; } switch(k) { case 0: // '\0' mClicked = flag; break; case 1: // '\001' if(mClicked && mListener != null) mListener.onClickableImageButtonClick(this); mClicked = false; break; } return flag; } public final void setPosition(int i, int j) { mRect = new Rect(i, j, i + mDefaultBitmap.getWidth(), j + mDefaultBitmap.getHeight()); } public static interface ClickableImageButtonListener { public abstract void onClickableImageButtonClick(ClickableImageButton clickableimagebutton); } }