Skip to content

Instantly share code, notes, and snippets.

@koalahamlet
Created February 19, 2017 18:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save koalahamlet/894bed703dc663cb2cecd8a142dd3c4d to your computer and use it in GitHub Desktop.
Save koalahamlet/894bed703dc663cb2cecd8a142dd3c4d to your computer and use it in GitHub Desktop.
rainbowview.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().getDecorView().getViewTreeObserver().addOnPreDrawListener(
new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
final View view = findViewById(R.id.rainbow_view);
((ViewGroup) view.getParent()).getOverlay().add(new Drawable() {
{
setBounds(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
}
@Override
public void draw(Canvas canvas) {
Rect bounds = getBounds();
float x = bounds.width() / 2.0f;
float y = bounds.height() / 2.0f;
Paint p = new Paint();
p.setShader(new RadialGradient(x, y, Math.max(x, y), new int[] {
0x9fff0000,
0x9fffff00,
0x9f00ff00,
0x9f00ffff,
0x9f0000ff,
0x9fff00ff
}, new float[] {
0.0f, 0.20f, 0.40f, 0.60f, 0.80f, 1.00f
}, Shader.TileMode.REPEAT));
// p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SCREEN));
canvas.drawRect(bounds, p);
}
@Override
public void setAlpha(int i) {
}
@Override
public void setColorFilter(ColorFilter colorFilter) {
}
@Override
public int getOpacity() {
return PixelFormat.TRANSLUCENT;
}
});
getWindow().getDecorView().getViewTreeObserver().removeOnPreDrawListener(this);
return true;
}
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment