ImageFilterButton

public class ImageFilterButton
extends AppCompatImageButton

java.lang.Object
   ↳ android.view.View
     ↳ android.widget.ImageView
       ↳ android.widget.ImageButton
         ↳ androidx.appcompat.widget.AppCompatImageButton
           ↳ androidx.constraintlayout.utils.widget.ImageFilterButton


An ImageButton that can display, combine and filter images. Added in 2.0

Subclass of AppCompatImageButton to handle various common filtering operations.

ImageFilterButton attributes

altSrc Provide and alternative image to the src image to allow cross fading
saturation Sets the saturation of the image.
0 = grayscale, 1 = original, 2 = hyper saturated
brightness Sets the brightness of the image.
0 = black, 1 = original, 2 = twice as bright
warmth This adjust the apparent color temperature of the image.
1=neutral, 2=warm, .5=cold
contrast This sets the contrast. 1 = unchanged, 0 = gray, 2 = high contrast
crossfade Set the current mix between the two images.
0=src 1= altSrc image
round (id) call the TransitionListener with this trigger id
roundPercent Set the corner radius of curvature as a fraction of the smaller side. For squares 1 will result in a circle
overlay Defines whether the alt image will be faded in on top of the original image or if it will be crossfaded with it. Default is true. Set to false for semitransparent objects

Summary

Inherited constants

Inherited fields

Public constructors

ImageFilterButton(Context context)
ImageFilterButton(Context context, AttributeSet attrs)
ImageFilterButton(Context context, AttributeSet attrs, int defStyleAttr)

Public methods

void draw(Canvas canvas)
float getContrast()

Returns the currently applied contrast

float getCrossfade()

Returns the currently applied crossfade.

float getImagePanX()

gts the pan from the center pan of 1 the image is "all the way to the right" if the images width is greater than the screen width, pan = 1 results in the left edge lining up if the images width is less than the screen width, pan = 1 results in the right edges lining up if image width == screen width it does nothing

float getImagePanY()

gets the pan from the center pan of 1 the image is "all the way to the bottom" if the images width is greater than the screen height, pan = 1 results in the bottom edge lining up if the images width is less than the screen height, pan = 1 results in the top edges lining up if image height == screen height it does nothing

float getImageRotate()

gets the rotation

float getImageZoom()

sets the zoom where 1 scales the image just enough to fill the view

float getRound()

Get the corner radius of curvature NaN = RoundPercent in effect.

float getRoundPercent()

Get the fractional corner radius of curvature.

float getSaturation()

Returns the currently applied saturation

float getWarmth()

Returns the currently applied warmth

void layout(int l, int t, int r, int b)
void setAltImageResource(int resId)

Set the alternative image used to cross fade to.

void setBrightness(float brightness)

sets the brightness of the image; 0 = black, 1 = original, 2 = twice as bright

void setContrast(float contrast)

This sets the contrast.

void setCrossfade(float crossfade)

Set the current mix between the two images that can be set on this view.

void setImageDrawable(Drawable drawable)
void setImagePanX(float pan)

sets the pan from the center pan of 1 the image is "all the way to the right" if the images width is greater than the screen width, pan = 1 results in the left edge lining up if the images width is less than the screen width, pan = 1 results in the right edges lining up if image width == screen width it does nothing

void setImagePanY(float pan)

sets the pan from the center pan of 1 the image is "all the way to the bottom" if the images width is greater than the screen height, pan = 1 results in the bottom edge lining up if the images width is less than the screen height, pan = 1 results in the top edges lining up if image height == screen height it does nothing

void setImageResource(int resId)
void setImageRotate(float rotation)

sets the rotation angle of the image in degrees

void setImageZoom(float zoom)

sets the zoom where 1 scales the image just enough to fill the view

void setRound(float round)

Set the corner radius of curvature

void setRoundPercent(float round)

Set the corner radius of curvature as a fraction of the smaller side.

void setSaturation(float saturation)

sets the saturation of the image; 0 = grayscale, 1 = original, 2 = hyper saturated

void setWarmth(float warmth)

This makes the apparent color temperature of the image warmer or colder.

Inherited methods

Public constructors

ImageFilterButton

public ImageFilterButton (Context context)

Parameters
context Context

ImageFilterButton

public ImageFilterButton (Context context, 
                AttributeSet attrs)

Parameters
context Context

attrs AttributeSet

ImageFilterButton

public ImageFilterButton (Context context, 
                AttributeSet attrs, 
                int defStyleAttr)

Parameters
context Context

attrs AttributeSet

defStyleAttr int

Public methods

draw

public void draw (Canvas canvas)

Parameters
canvas Canvas

getContrast

public float getContrast ()

Returns the currently applied contrast

Returns
float 1 = unchanged, 0 = gray, 2 = high contrast

getCrossfade

public float getCrossfade ()

Returns the currently applied crossfade.

Returns
float a number from 0 to 1

getImagePanX

public float getImagePanX ()

gts the pan from the center pan of 1 the image is "all the way to the right" if the images width is greater than the screen width, pan = 1 results in the left edge lining up if the images width is less than the screen width, pan = 1 results in the right edges lining up if image width == screen width it does nothing

Returns
float the pan in X. Where 0 is centered = Float. NaN if not set

getImagePanY

public float getImagePanY ()

gets the pan from the center pan of 1 the image is "all the way to the bottom" if the images width is greater than the screen height, pan = 1 results in the bottom edge lining up if the images width is less than the screen height, pan = 1 results in the top edges lining up if image height == screen height it does nothing

Returns
float pan in Y. Where 0 is centered

getImageRotate

public float getImageRotate ()

gets the rotation

Returns
float the rotation in degrees

getImageZoom

public float getImageZoom ()

sets the zoom where 1 scales the image just enough to fill the view

Returns
float the zoom

getRound

public float getRound ()

Get the corner radius of curvature NaN = RoundPercent in effect.

Returns
float Radius of curvature

getRoundPercent

public float getRoundPercent ()

Get the fractional corner radius of curvature.

Returns
float Fractional radius of curvature with respect to smallest size

getSaturation

public float getSaturation ()

Returns the currently applied saturation

Returns
float 0 = grayscale, 1 = original, 2 = hyper saturated

getWarmth

public float getWarmth ()

Returns the currently applied warmth

Returns
float warmth 1 is neutral, 2 is warm, .5 is cold

layout

public void layout (int l, 
                int t, 
                int r, 
                int b)

Parameters
l int

t int

r int

b int

setAltImageResource

public void setAltImageResource (int resId)

Set the alternative image used to cross fade to.

setBrightness

public void setBrightness (float brightness)

sets the brightness of the image; 0 = black, 1 = original, 2 = twice as bright

setContrast

public void setContrast (float contrast)

This sets the contrast. 1 = unchanged, 0 = gray, 2 = high contrast

setCrossfade

public void setCrossfade (float crossfade)

Set the current mix between the two images that can be set on this view.

Parameters
crossfade float: a number from 0 to 1

setImageDrawable

public void setImageDrawable (Drawable drawable)

Parameters
drawable Drawable

setImagePanX

public void setImagePanX (float pan)

sets the pan from the center pan of 1 the image is "all the way to the right" if the images width is greater than the screen width, pan = 1 results in the left edge lining up if the images width is less than the screen width, pan = 1 results in the right edges lining up if image width == screen width it does nothing

Parameters
pan float: sets the pan in X. Where 0 is centered

setImagePanY

public void setImagePanY (float pan)

sets the pan from the center pan of 1 the image is "all the way to the bottom" if the images width is greater than the screen height, pan = 1 results in the bottom edge lining up if the images width is less than the screen height, pan = 1 results in the top edges lining up if image height == screen height it does nothing

Parameters
pan float: sets the pan in Y. Where 0 is centered

setImageResource

public void setImageResource (int resId)

Parameters
resId int

setImageRotate

public void setImageRotate (float rotation)

sets the rotation angle of the image in degrees

Parameters
rotation float: the rotation in degrees

setImageZoom

public void setImageZoom (float zoom)

sets the zoom where 1 scales the image just enough to fill the view

Parameters
zoom float: the zoom factor

setRound

public void setRound (float round)

Set the corner radius of curvature

Parameters
round float: the radius of curvature NaN = default meaning roundPercent in effect

setRoundPercent

public void setRoundPercent (float round)

Set the corner radius of curvature as a fraction of the smaller side. For squares 1 will result in a circle

Parameters
round float: the radius of curvature as a fraction of the smaller width

setSaturation

public void setSaturation (float saturation)

sets the saturation of the image; 0 = grayscale, 1 = original, 2 = hyper saturated

setWarmth

public void setWarmth (float warmth)

This makes the apparent color temperature of the image warmer or colder.

Parameters
warmth float: 1 is neutral, 2 is warm, .5 is cold