Skip to content

Instantly share code, notes, and snippets.

@9re
Created December 8, 2011 01:55
Show Gist options
  • Save 9re/1445749 to your computer and use it in GitHub Desktop.
Save 9re/1445749 to your computer and use it in GitHub Desktop.
Create <shape> Equivalent at Runtime
import android.app.Activity;
import android.graphics.Color;
import android.graphics.drawable.GradientDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
public class GradientDrawableTest extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final int initialHue = 0;
Button button = new Button(this);
button.setOnClickListener(new View.OnClickListener() {
private int mHue = initialHue;
@Override
public void onClick(View v) {
mHue += 15;
setButtonBorderHue(v, mHue %= 360);
}
});
setButtonBorderHue(button, initialHue);
addContentView(button, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
}
private void setButtonBorderHue(View view, int hue) {
GradientDrawable drawable = new GradientDrawable();
drawable.setShape(GradientDrawable.RECTANGLE);
drawable.setColor(Color.WHITE);
drawable.setStroke(
getPixelSize(1),
Color.HSVToColor(new float[]{ hue, 1, 1}));
drawable.setCornerRadius(getPixelSize(8));
view.setBackgroundDrawable(drawable);
}
private int getPixelSize(int dp) {
return (int) (0.5f + dp * getResources().getDisplayMetrics().density);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment