Android Open Source - holoaccent Accent Helper






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//w  w  w .j av  a  2  s.  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.
 ******************************************************************************/
/*
 * Copyright (C) 2012 The Android Open Source Project
 *
 * 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;

import android.content.Context;
import android.content.res.Resources;
import android.view.Window;

import com.negusoft.holoaccent.dialog.DividerPainter;

/**
 * Helper class to lazily initialize AccentResources from your activities. 
 * Simply add the following code to your activity in order to replace the 
 * default android Resources implementation by AccentResources:
 * <pre><code>
private final AccentHelper mAccentHelper = new AccentHelper();
{@literal @}Override
public Resources getResources() {
  return mAccentHelper.getResources(this, super.getResources());
}
 * </code></pre>
 * And don't forget to add the corresponding imports:
 * <pre><code>
import com.negusoft.holoaccent.AccentHelper;
import android.content.res.Resources;
 * </code></pre>
 * 
 * In addition, it allows to easily prepare dialogs for display by calling: 
 * prepareDialog().
 */
public class AccentHelper {

    public interface OnInitListener {
        public void onInitResources(AccentResources resources);
    }

    public static final int COLOR_NO_OVERRIDE = 0;

    /**
     * Get the AccentPalette instance from the the context.
     * @return It might return null if HoloAccent has not been correctly configured.
     */
    public static AccentPalette getPalette(Context context) {
        Resources resources = context.getResources();
        if (!(resources instanceof AccentResources))
            return null;
        return ((AccentResources)resources).getPalette();
    }
  
  private AccentResources mAccentResources;
  private DividerPainter mDividerPainter;
  
  private final boolean mOverrideThemeColor;
    private final int mOverrideColor;
    private final int mOverrideColorDark;
    private final int mOverrideColorActionBar;

    private OnInitListener mInitListener;
  
  public AccentHelper() {
    mOverrideThemeColor = false;
    mOverrideColor = 0;
        mOverrideColorDark = 0;
        mOverrideColorActionBar = 0;
  }

    /**
     * Initialize by specifying a explicit color.
     * @param color The color to override. If it is 0, it will not override the color so it
     *              will be taken from the theme.
     * @param colorDark The dark version to override. If it is 0, it be taken from the theme.
     *                  Or it will be calculated from the main color if it not specified in
     *                  the theme either.
     * @param colorActionBar The action bar version to override. If it is 0, it will be taken
     *                       from the theme. Or same as the main color if it not specified in
     *                       the theme either.
     */
    public AccentHelper(int color, int colorDark, int colorActionBar) {
        this(color, colorDark, colorActionBar, null);
    }

    /**
     * Initialize by specifying a explicit color.
     * @param color The color to override. If it is 0, it will not override the color so it
     *              will be taken from the theme.
     * @param colorDark The dark version to override. If it is 0, it be taken from the theme.
     *                  Or it will be calculated from the main color if it not specified in
     *                  the theme either.
     * @param colorActionBar The action bar version to override. If it is 0, it will be taken
     *                       from the theme. Or same as the main color if it not specified in
     *                       the theme either.
     * @param listener Listener to receive the init event.
     */
    public AccentHelper(int color, int colorDark, int colorActionBar, OnInitListener listener) {
        mOverrideThemeColor =  color != COLOR_NO_OVERRIDE;
        mOverrideColor = color;
        mOverrideColorDark = colorDark;
        mOverrideColorActionBar = colorActionBar;
        mInitListener = listener;
    }
  
  /** @return The AccentResources instance, properly initialized. */
  public Resources getResources(Context c, Resources resources) {
    if (mAccentResources == null) {
            mAccentResources = createInstance(c, resources);
            if (mInitListener != null)
                mInitListener.onInitResources(mAccentResources);
        }
    return mAccentResources;
  }
  
  /** Paint the dialog's divider if required to correctly customize it. */
  public void prepareDialog(Context c, Window window) {
    if (mDividerPainter == null)
      mDividerPainter = initPainter(c, mOverrideColor);
    mDividerPainter.paint(window);
  }

    /**
     * Set a listener to be notified when the instance of AccentResources is created.
     * @param listener The actual listener or null to disable any event reporting.
     */
    public void setOnInitListener(OnInitListener listener) {
        mInitListener = listener;
    }

    private DividerPainter initPainter(Context c, int color) {
        return color == 0 ? new DividerPainter(c) : new DividerPainter(color);
    }
  
  private AccentResources createInstance(Context c, Resources resources) {
        return new AccentResources(c, resources, mOverrideColor, mOverrideColorDark, mOverrideColorActionBar);
  }

}




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