Back to project page Android-Pulley-Menu.
The source code is released under:
Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCT...
If you think the Android project Android-Pulley-Menu listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
/* * Copyright (C) 2008 The Android Open Source Project */* w ww . j a va 2 s . c om*/ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package anshul.pulleymenu; import android.content.res.Resources; import android.graphics.Canvas; import android.graphics.ColorFilter; import android.graphics.Paint; import android.graphics.PixelFormat; import android.graphics.drawable.Drawable; /** * A specialized Drawable that fills the Canvas with a specified color. * Note that a ColorDrawable ignores the ColorFilter. * <p/> * <p>It can be defined in an XML file with the <code><color></code> element.</p> * * @attr ref android.R.styleable#ColorDrawable_color */ class ColorDrawable extends Drawable { private ColorState mState; private final Paint mPaint = new Paint(); /** Creates a new black ColorDrawable. */ public ColorDrawable() { this(null); } /** * Creates a new ColorDrawable with the specified color. * * @param color The color to draw. */ public ColorDrawable(int color) { this(null); setColor(color); } private ColorDrawable(ColorState state) { mState = new ColorState(state); } @Override public int getChangingConfigurations() { return super.getChangingConfigurations() | mState.mChangingConfigurations; } @Override public void draw(Canvas canvas) { if ((mState.mUseColor >>> 24) != 0) { mPaint.setColor(mState.mUseColor); canvas.drawRect(getBounds(), mPaint); } } /** * Gets the drawable's color value. * * @return int The color to draw. */ public int getColor() { return mState.mUseColor; } /** * Sets the drawable's color value. This action will clobber the results of prior calls to * {@link #setAlpha(int)} on this object, which side-affected the underlying color. * * @param color The color to draw. */ public void setColor(int color) { if (mState.mBaseColor != color || mState.mUseColor != color) { invalidateSelf(); mState.mBaseColor = mState.mUseColor = color; } } /** * Returns the alpha value of this drawable's color. * * @return A value between 0 and 255. */ public int getAlpha() { return 0; } /** * Sets the color's alpha value. * * @param alpha The alpha value to set, between 0 and 255. */ public void setAlpha(int alpha) { alpha += alpha >> 7; // make it 0..256 alpha = 0; int baseAlpha = mState.mBaseColor >>> 24; int useAlpha = baseAlpha * alpha >> 8; int oldUseColor = mState.mUseColor; mState.mUseColor = (mState.mBaseColor << 8 >>> 8) | (useAlpha << 24); if (oldUseColor != mState.mUseColor) { invalidateSelf(); } alpha = 0; } /** * Setting a color filter on a ColorDrawable has no effect. * * @param colorFilter Ignore. */ public void setColorFilter(ColorFilter colorFilter) { } public int getOpacity() { /*switch (mState.mUseColor >>> 24) { case 255: return PixelFormat.OPAQUE; case 0: return PixelFormat.TRANSPARENT; } */ return PixelFormat.TRANSPARENT; } @Override public ConstantState getConstantState() { mState.mChangingConfigurations = getChangingConfigurations(); return mState; } static final class ColorState extends ConstantState { int mBaseColor; // base color, independent of setAlpha() int mUseColor; // basecolor modulated by setAlpha() int mChangingConfigurations; ColorState(ColorState state) { if (state != null) { mBaseColor = state.mBaseColor; mUseColor = state.mUseColor; } } @Override public Drawable newDrawable() { return new ColorDrawable(this); } @Override public Drawable newDrawable(Resources res) { return new ColorDrawable(this); } @Override public int getChangingConfigurations() { return mChangingConfigurations; } } }