Set opacity/alpha of Button or drawable

Example to change opacity/alpha of Button or its CompoundDrawables, also show how to display CompoundDrawables on Button programmatically.


Example code:

MainActivity.java
package com.example.androidsetimageopacity;

import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;

public class MainActivity extends Activity {

SeekBar barOpacityButton;
SeekBar barOpacityDrawableLeft, barOpacityDrawableTop,
barOpacityDrawableRight, barOpacityDrawableBottom;
Button button;

Drawable drawableLeft, drawableTop, drawableRight, drawableBottom;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

drawableLeft = getResources()
.getDrawable(android.R.drawable.ic_menu_call);
drawableTop = getResources()
.getDrawable(android.R.drawable.ic_menu_agenda);
drawableRight = getResources()
.getDrawable(android.R.drawable.ic_menu_compass);
drawableBottom = getResources()
.getDrawable(android.R.drawable.ic_menu_camera);

button = (Button)findViewById(R.id.button);

//display CompoundDrawables on Button programmatically
button.setCompoundDrawablesWithIntrinsicBounds(
drawableLeft, drawableTop, drawableRight, drawableBottom);

barOpacityButton =
(SeekBar)findViewById(R.id.opacitybutton);
barOpacityDrawableLeft =
(SeekBar)findViewById(R.id.opacitydrawableleft);
barOpacityDrawableTop =
(SeekBar)findViewById(R.id.opacitydrawabletop);
barOpacityDrawableRight =
(SeekBar)findViewById(R.id.opacitydrawableright);
barOpacityDrawableBottom =
(SeekBar)findViewById(R.id.opacitydrawablebottom);

barOpacityButton.setOnSeekBarChangeListener(
barOpacityButtonOnSeekBarChangeListener);

barOpacityDrawableLeft.setOnSeekBarChangeListener(
barOpacityDrawableOnSeekBarChangeListener);
barOpacityDrawableTop.setOnSeekBarChangeListener(
barOpacityDrawableOnSeekBarChangeListener);
barOpacityDrawableRight.setOnSeekBarChangeListener(
barOpacityDrawableOnSeekBarChangeListener);
barOpacityDrawableBottom.setOnSeekBarChangeListener(
barOpacityDrawableOnSeekBarChangeListener);
}

OnSeekBarChangeListener barOpacityButtonOnSeekBarChangeListener =
new OnSeekBarChangeListener(){

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
float alpha = (float)progress/(float)seekBar.getMax();
button.setAlpha(alpha); //for API Level 11+
}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {}

};

OnSeekBarChangeListener barOpacityDrawableOnSeekBarChangeListener =
new OnSeekBarChangeListener(){

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {

drawableLeft.setAlpha(
barOpacityDrawableLeft.getProgress());
drawableTop.setAlpha(
barOpacityDrawableTop.getProgress());
drawableRight.setAlpha(
barOpacityDrawableRight.getProgress());
drawableBottom.setAlpha(
barOpacityDrawableBottom.getProgress());

}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {}

};

}

activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.androidsetimageopacity.MainActivity" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:autoLink="web"
android:text="http://android-er.blogspot.com/"
android:textStyle="bold" />

<SeekBar
android:id="@+id/opacitybutton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
android:progress="100"/>
<SeekBar
android:id="@+id/opacitydrawableleft"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="255"
android:progress="255"/>
<SeekBar
android:id="@+id/opacitydrawabletop"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="255"
android:progress="255"/>
<SeekBar
android:id="@+id/opacitydrawableright"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="255"
android:progress="255"/>
<SeekBar
android:id="@+id/opacitydrawablebottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="255"
android:progress="255"/>
<TextView
android:id="@+id/opacitysetting"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Opacity Button"/>

</LinearLayout>




2 Responses to "Set opacity/alpha of Button or drawable"

  1. As reported by Stanford Medical, It is in fact the SINGLE reason this country's women get to live 10 years longer and weigh 42 lbs less than us.

    (And realistically, it has totally NOTHING to do with genetics or some secret diet and really, EVERYTHING about "HOW" they eat.)

    BTW, What I said is "HOW", not "what"...

    TAP this link to discover if this quick test can help you unlock your true weight loss possibility

    ReplyDelete
  2. Keep in mind that the alpha value is specified as an integer ranging from 0 (fully transparent) to 255 (fully opaque). How Audio Fix In the second example, 128 is approximately half-opacity.

    ReplyDelete