Android Open Source - android-gskbyte-utils Auto Background Image Button






From Project

Back to project page android-gskbyte-utils.

License

The source code is released under:

GNU Lesser General Public License

If you think the Android project android-gskbyte-utils 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

package org.gskbyte.view;
/*  ww w. ja  v a 2 s.  com*/
import org.gskbyte.R;
import org.gskbyte.drawable.AutoBackgroundButtonDrawable;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.util.AttributeSet;
import android.widget.ImageButton;

/**
 * Applies a pressed state color filter or disabled state alpha for the button's
 * background drawable.
 * 
 * @see Original implementation: https://github.com/shiki/android-autobgbutton
 * 
 * This extension enables customization of the filter color and allows to apply it to the source image.
 * By default, if no background is enabled, it is set to null.
 * 
 * @author shiki
 * @author Jose Alcal Correa
 */
public class AutoBackgroundImageButton
extends ImageButton
{

protected int filterColor;
protected boolean applyFilterToImage;

protected boolean filterColorLoaded = false;

public AutoBackgroundImageButton(Context context, AttributeSet attrs)
{
    super(context, attrs, 0); // setting the third attribute to 0 removes default button BG
    initAttributes(context, attrs);
}

public AutoBackgroundImageButton(Context context, AttributeSet attrs, int defStyle)
{
    super(context, attrs, defStyle);
    initAttributes(context, attrs);
}

protected void initAttributes(Context context, AttributeSet attrs)
{
    TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.org_gskbyte_view_AutoBackgroundImageButton);
    this.filterColor = a.getColor(R.styleable.org_gskbyte_view_AutoBackgroundImageButton_filterColor, AutoBackgroundButtonDrawable.DEFAULT_COLOR_FILTER);
    this.filterColorLoaded = true;
    setBackgroundDrawable( getBackground() );
    
    boolean apply = a.getBoolean(R.styleable.org_gskbyte_view_AutoBackgroundImageButton_applyFilterToImage, false);
    setApplyFilterToImage(apply);
    
    a.recycle();
}

public int getFilterColor()
{ return this.filterColor; }

public void setFilterColor(int filterColor)
{
    this.filterColor = filterColor;
    
    setBackground( getBackground() );
    setApplyFilterToImage( this.applyFilterToImage );
}

public boolean appliesFilterToImage()
{ return this.applyFilterToImage; }

public void setApplyFilterToImage(boolean apply)
{
    this.applyFilterToImage = apply;
    setImageDrawable( getDrawable() );
}

@Override
public void setBackground(Drawable d)
{
    setBackgroundDrawable(d);
}

@SuppressWarnings("deprecation")
@Override
public void setBackgroundDrawable(Drawable d)
{
    super.setBackgroundDrawable( filteredDrawable(d, true) );
}

@Override
public void setImageResource(int resId)
{
    setImageDrawable( filteredDrawable(getResources().getDrawable(resId), applyFilterToImage));
}

// TODO Implement a faster thing
@Override
public void setImageURI(Uri uri)
{
    super.setImageURI(uri);
    setImageDrawable( filteredDrawable(getDrawable(), applyFilterToImage) );
}

@Override
public void setImageDrawable(Drawable d)
{
    super.setImageDrawable( filteredDrawable(d, applyFilterToImage) );
}

private final Drawable filteredDrawable(Drawable d, boolean extraCondition)
{
    if( d!=null && filterColorLoaded && extraCondition && !(d instanceof AutoBackgroundButtonDrawable) ) {
        return new AutoBackgroundButtonDrawable(d, filterColor);
    } else {
        return d;
    }
}


}




Java Source Code List

com.woozzu.android.widget.IndexScroller.java
com.woozzu.android.widget.IndexableListView.java
org.gskbyte.FragmentWrapperActivity.java
org.gskbyte.animation.ExpandAnimation.java
org.gskbyte.bitmap.AbstractBitmapManager.java
org.gskbyte.bitmap.BitmapColorizer.java
org.gskbyte.bitmap.BitmapManager.java
org.gskbyte.bitmap.CachedBitmapColorizer.java
org.gskbyte.bitmap.IndexedBitmaps.java
org.gskbyte.bitmap.LRUBitmapCache.java
org.gskbyte.bitmap.LRUBitmapManager.java
org.gskbyte.bitmap.PrivateBitmapManager.java
org.gskbyte.bitmap.ReferencedBitmaps.java
org.gskbyte.collection.ArrayHashMap.java
org.gskbyte.collection.DoubleSparseArray.java
org.gskbyte.collection.ListHashMap.java
org.gskbyte.dialog.DownloadDialogFragment.java
org.gskbyte.dialog.LoadDialogFragment.java
org.gskbyte.dialog.OpenLinkDialogBuilder.java
org.gskbyte.dialog.PickerDialogFragment.java
org.gskbyte.download.DiskDownload.java
org.gskbyte.download.DownloadManager.java
org.gskbyte.download.Download.java
org.gskbyte.download.MemoryDownload.java
org.gskbyte.drawable.AutoBackgroundButtonDrawable.java
org.gskbyte.listener.IListenable.java
org.gskbyte.listener.ListenableNG.java
org.gskbyte.listener.Listenable.java
org.gskbyte.preferences.DialogSeekBarPreference.java
org.gskbyte.preferences.InlineSeekBarPreference.java
org.gskbyte.remote.AsyncURLRequest.java
org.gskbyte.remote.URLRequest.java
org.gskbyte.tasks.QueuedTaskExecutor.java
org.gskbyte.tasks.TaskStep.java
org.gskbyte.tasks.Task.java
org.gskbyte.ui.ArrayAdapterWithDefaultValue.java
org.gskbyte.ui.ListAdapter.java
org.gskbyte.ui.ColorDialog.ColorDialog.java
org.gskbyte.ui.ColorDialog.ColorPreference.java
org.gskbyte.ui.iconifiedMainMenuList.EntryView.java
org.gskbyte.ui.iconifiedMainMenuList.MainMenuAdapter.java
org.gskbyte.ui.iconifiedMainMenuList.MenuEntry.java
org.gskbyte.util.FrequentIntents.java
org.gskbyte.util.IOUtils.java
org.gskbyte.util.Logger.java
org.gskbyte.util.OpenFileHandlerFactory.java
org.gskbyte.util.OpenFileHandler.java
org.gskbyte.util.XmlUtils.java
org.gskbyte.view.AsyncImageView.java
org.gskbyte.view.AutoBackgroundButton.java
org.gskbyte.view.AutoBackgroundImageButton.java
org.gskbyte.view.AutoHeightImageView.java
org.gskbyte.view.ExpandedGridView.java
org.gskbyte.view.ExpandedListView.java
org.gskbyte.view.FontUtil.java
org.gskbyte.view.FontableButton.java
org.gskbyte.view.FontableCheckBox.java
org.gskbyte.view.FontableEditText.java
org.gskbyte.view.FontableTextView.java
org.gskbyte.view.FullWidthImageView.java
org.gskbyte.view.ProportionalHeightLayout.java
org.gskbyte.view.PullToRefreshListView.java
org.gskbyte.view.SquaredLayout.java
org.gskbyte.view.StepSeekBar.java
org.gskbyte.view.TextViewUtil.java
org.gskbyte.view.ViewUtils.java