Android Open Source - holoaccent Action Bar Background Drawable






From Project

Back to project page holoaccent.

License

The source code is released under:

Apache License

If you think the Android project holoaccent listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*******************************************************************************
 * Copyright 2013 NEGU Soft//from   w w w.j  a v  a 2s .  c o  m
 *
 * 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 com.negusoft.holoaccent.drawable;

import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.ColorFilter;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.util.DisplayMetrics;
import android.util.TypedValue;

import com.negusoft.holoaccent.AccentPalette;
import com.negusoft.holoaccent.R;

public class ActionBarBackgroundDrawable extends Drawable {

    private static final int DEFAULT_OPACITY = 255;

    private final Paint mFillPaint;
    private final ActionBarBackgroundConstantState mState;
    private final Paint mPaint;

    public ActionBarBackgroundDrawable(Context c, AccentPalette palette, int styleAttribute, boolean overline) {
        TypedArray attrs = c.obtainStyledAttributes(null, R.styleable.ColoredActionBarStacked, styleAttribute, 0);
        int lineColor = attrs.getColor(R.styleable.ColoredActionBarStacked_accentLineColor, palette.getDarkAccentColor());
        float lineWidthDp = attrs.getDimension(R.styleable.ColoredActionBarStacked_accentLineWidth, 0f);
        int lineOpacity = attrs.getInteger(R.styleable.ColoredActionBarStacked_accentLineOpacity, DEFAULT_OPACITY);
        int backgroundColor = attrs.getColor(R.styleable.ColoredActionBarStacked_accentBackgroundColor, palette.getDarkAccentColor());
        int backgroundOpacity = attrs.getInteger(R.styleable.ColoredActionBarStacked_accentBackgroundOpacity, DEFAULT_OPACITY);

        lineColor = Color.argb(lineOpacity, Color.red(lineColor), Color.green(lineColor), Color.blue(lineColor));
        backgroundColor = Color.argb(backgroundOpacity, Color.red(backgroundColor), Color.green(backgroundColor), Color.blue(backgroundColor));

        attrs.recycle();

        DisplayMetrics metrics = c.getResources().getDisplayMetrics();
        mState = new ActionBarBackgroundConstantState(metrics, backgroundColor, lineColor, lineWidthDp, overline);
        mPaint = initLinePaint(metrics, lineColor, lineWidthDp);
        mFillPaint = initFillPaint(backgroundColor);
    }

    public ActionBarBackgroundDrawable(Resources resources, int backgroundColor, int lineColor, float lineWidthDp, boolean overline) {
        DisplayMetrics metrics = resources.getDisplayMetrics();
        mState = new ActionBarBackgroundConstantState(metrics, backgroundColor, lineColor, lineWidthDp, overline);
        mPaint = initLinePaint(metrics, lineColor, lineWidthDp);
        mFillPaint = initFillPaint(backgroundColor);
    }

    private ActionBarBackgroundDrawable(DisplayMetrics metrics, int backgroundColor, int lineColor, float lineWidthDp, boolean overline) {
        mState = new ActionBarBackgroundConstantState(metrics, backgroundColor, lineColor, lineWidthDp, overline);
        mPaint = initLinePaint(metrics, lineColor, lineWidthDp);
        mFillPaint = initFillPaint(backgroundColor);
    }

    private Paint initFillPaint(int color) {
        Paint paint = new Paint();
        paint.setColor(color);
        paint.setStyle(Paint.Style.FILL);
        return paint;
    }

    private Paint initLinePaint(DisplayMetrics displayMetrics, int color, float lineWidthDp) {
        float lineWidth = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, lineWidthDp, displayMetrics);
        Paint result = new Paint();
        result.setColor(color);
        result.setStyle(Paint.Style.STROKE);
        result.setStrokeWidth(lineWidth);
        return result;
    }

    @Override
    public void draw(Canvas canvas) {
        Rect r = new Rect(getBounds());
        if (mState.mLineWidth > 0f) {
            float margin = mPaint.getStrokeWidth() / 2f;
            float posY = mState.mOverline ? r.top + margin : r.bottom - margin;
            canvas.drawLine(r.left, posY, r.right, posY, mPaint);

            if (mState.mOverline)
                r.top += mState.mLineWidth;
            else
                r.bottom -= mState.mLineWidth;
        }
        if (Color.alpha(mState.mBackgroundColor) > 0)
            canvas.drawRect(r, mFillPaint);
    }

    @Override
    public int getOpacity() {
        return PixelFormat.TRANSLUCENT;
    }

    @Override
    public void setAlpha(int alpha) {
        // empty
    }

    @Override
    public void setColorFilter(ColorFilter cf) {
        // empty
    }

    @Override
    public ConstantState getConstantState() {
        mState.changingConfigurationValue = super.getChangingConfigurations();
        return mState;
    }

    public static class ActionBarBackgroundConstantState extends ConstantState {

        public final DisplayMetrics mDisplayMetrics;
        public final int mBackgroundColor;
        public final int mLineColor;
        public final float mLineWidth;
        public final boolean mOverline;

        int changingConfigurationValue;

        public ActionBarBackgroundConstantState(DisplayMetrics metrics, int backgroundColor, int lineColor, float lineWidth, boolean overline) {
            mDisplayMetrics = metrics;
            mBackgroundColor = backgroundColor;
            mLineColor = lineColor;
            mLineWidth = lineWidth;
            mOverline = overline;
        }

        @Override
        public int getChangingConfigurations() {
            return changingConfigurationValue;
        }

        @Override
        public Drawable newDrawable() {
            return new ActionBarBackgroundDrawable(mDisplayMetrics, mBackgroundColor, mLineColor, mLineWidth, mOverline);
        }

    }
}




Java Source Code List

com.negusoft.holoaccent.AccentHelper.java
com.negusoft.holoaccent.AccentPalette.java
com.negusoft.holoaccent.AccentResources.java
com.negusoft.holoaccent.activity.AccentActivity.java
com.negusoft.holoaccent.dialog.AccentAlertDialog.java
com.negusoft.holoaccent.dialog.AccentDatePickerDialog.java
com.negusoft.holoaccent.dialog.AccentDialogFragment.java
com.negusoft.holoaccent.dialog.AccentTimePickerDialog.java
com.negusoft.holoaccent.dialog.DividerPainter.java
com.negusoft.holoaccent.dialog.NumberPickerPainter.java
com.negusoft.holoaccent.drawable.ActionBarBackgroundDrawable.java
com.negusoft.holoaccent.drawable.CircleDrawable.java
com.negusoft.holoaccent.drawable.ContactBadgeDrawable.java
com.negusoft.holoaccent.drawable.FastScrollDrawable.java
com.negusoft.holoaccent.drawable.IndeterminedProgressDrawable.java
com.negusoft.holoaccent.drawable.IndeterminedProgressLegacyDrawable.java
com.negusoft.holoaccent.drawable.RectDrawable.java
com.negusoft.holoaccent.drawable.RoundRectDrawable.java
com.negusoft.holoaccent.drawable.ScrubberControlSelectorDrawable.java
com.negusoft.holoaccent.drawable.ScrubberProgressDrawable.java
com.negusoft.holoaccent.drawable.SearchViewDrawable.java
com.negusoft.holoaccent.drawable.SpinnerDrawable.java
com.negusoft.holoaccent.drawable.ToggleForegroundDrawable.java
com.negusoft.holoaccent.drawable.UnderlineDrawable.java
com.negusoft.holoaccent.example.activity.AccentFragmentActivity.java
com.negusoft.holoaccent.example.activity.DialogActivity.java
com.negusoft.holoaccent.example.activity.MainActivity.java
com.negusoft.holoaccent.example.activity.PreferencesActivity.java
com.negusoft.holoaccent.example.activity.SpinnerActivity.java
com.negusoft.holoaccent.example.activity.TabbedActivity.java
com.negusoft.holoaccent.example.activity.TabbedStripActivity.java
com.negusoft.holoaccent.example.activity.themed.DialogActivityLight.java
com.negusoft.holoaccent.example.activity.themed.PreferencesActivityColoredABInverse.java
com.negusoft.holoaccent.example.activity.themed.PreferencesActivityColoredAB.java
com.negusoft.holoaccent.example.activity.themed.PreferencesActivityLightColoredABInverse.java
com.negusoft.holoaccent.example.activity.themed.PreferencesActivityLightColoredAB.java
com.negusoft.holoaccent.example.activity.themed.PreferencesActivityLightDarkAB.java
com.negusoft.holoaccent.example.activity.themed.PreferencesActivityLight.java
com.negusoft.holoaccent.example.activity.themed.SpinnerActivityColoredABInverse.java
com.negusoft.holoaccent.example.activity.themed.SpinnerActivityColoredAB.java
com.negusoft.holoaccent.example.activity.themed.SpinnerActivityLightColoredABInverse.java
com.negusoft.holoaccent.example.activity.themed.SpinnerActivityLightColoredAB.java
com.negusoft.holoaccent.example.activity.themed.SpinnerActivityLightDarkAB.java
com.negusoft.holoaccent.example.activity.themed.SpinnerActivityLight.java
com.negusoft.holoaccent.example.activity.themed.TabbedActivityColoredABInverse.java
com.negusoft.holoaccent.example.activity.themed.TabbedActivityColoredAB.java
com.negusoft.holoaccent.example.activity.themed.TabbedActivityLightColoredABInverse.java
com.negusoft.holoaccent.example.activity.themed.TabbedActivityLightColoredAB.java
com.negusoft.holoaccent.example.activity.themed.TabbedActivityLightDarkAB.java
com.negusoft.holoaccent.example.activity.themed.TabbedActivityLight.java
com.negusoft.holoaccent.example.activity.themed.TabbedStripActivityColoredABInverse.java
com.negusoft.holoaccent.example.activity.themed.TabbedStripActivityColoredAB.java
com.negusoft.holoaccent.example.activity.themed.TabbedStripActivityLightColoredABInverse.java
com.negusoft.holoaccent.example.activity.themed.TabbedStripActivityLightColoredAB.java
com.negusoft.holoaccent.example.activity.themed.TabbedStripActivityLightDarkAB.java
com.negusoft.holoaccent.example.activity.themed.TabbedStripActivityLight.java
com.negusoft.holoaccent.example.fragment.AccentSupportDialogFragment.java
com.negusoft.holoaccent.example.fragment.ButtonFragment.java
com.negusoft.holoaccent.example.fragment.ChoicesFragment.java
com.negusoft.holoaccent.example.fragment.ListFragment.java
com.negusoft.holoaccent.example.fragment.PickersFragment.java
com.negusoft.holoaccent.example.fragment.ProgressFragment.java
com.negusoft.holoaccent.example.fragment.SimpleDialogFragment.java
com.negusoft.holoaccent.example.fragment.TextviewFragment.java
com.negusoft.holoaccent.example.model.ColorOverrideConfig.java
com.negusoft.holoaccent.example.preference.CustomDialogPreference.java
com.negusoft.holoaccent.example.view.CheckableTextView.java
com.negusoft.holoaccent.interceptor.AccentColorInterceptor.java
com.negusoft.holoaccent.interceptor.ActionBarBackgroundInterceptor.java
com.negusoft.holoaccent.interceptor.CircleInterceptor.java
com.negusoft.holoaccent.interceptor.ContactBadgeInterceptor.java
com.negusoft.holoaccent.interceptor.FastScrollInterceptor.java
com.negusoft.holoaccent.interceptor.IndeterminateInterceptor.java
com.negusoft.holoaccent.interceptor.NativeInterceptor.java
com.negusoft.holoaccent.interceptor.PagerTabStripInterceptor.java
com.negusoft.holoaccent.interceptor.RectInterceptor.java
com.negusoft.holoaccent.interceptor.RoundRectInterceptor.java
com.negusoft.holoaccent.interceptor.ScrubberInterceptor.java
com.negusoft.holoaccent.interceptor.SearchViewTextFieldInterceptor.java
com.negusoft.holoaccent.interceptor.SolidColorInterceptor.java
com.negusoft.holoaccent.interceptor.SpinnerInterceptor.java
com.negusoft.holoaccent.interceptor.ToggleInterceptor.java
com.negusoft.holoaccent.interceptor.UnderlineInterceptor.java
com.negusoft.holoaccent.preference.DialogPreference.java
com.negusoft.holoaccent.preference.EditTextPreference.java
com.negusoft.holoaccent.preference.ListPreference.java
com.negusoft.holoaccent.preference.MultiSelectListPreference.java
com.negusoft.holoaccent.preference.SwitchPreference.java
com.negusoft.holoaccent.util.BitmapUtils.java
com.negusoft.holoaccent.util.NativeResources.java
com.negusoft.holoaccent.widget.AccentDatePicker.java
com.negusoft.holoaccent.widget.AccentNumberPicker.java
com.negusoft.holoaccent.widget.AccentQuickContactBadge.java
com.negusoft.holoaccent.widget.AccentRatingBar.java
com.negusoft.holoaccent.widget.AccentSearchView.java
com.negusoft.holoaccent.widget.AccentSwitch.java
com.negusoft.holoaccent.widget.AccentTimePicker.java