For details, refer to the blog post: Android learning notes. Advanced 15: shader rendering.
Package xiaosi. bitmapshader; </P> <p> Import android. app. activity; <br/> Import android. OS. bundle; </P> <p> public class bitmapshaderactivity extends activity {<br/>/** called when the activity is first created. */<br/> private bitmapshaders = NULL; <br/> @ override <br/> Public void oncreate (bundle savedinstancestate) {<br/> super. oncreate (savedinstancestate); </P> <p> bitmapshaders = new bitmapshaders (this); <br/> setcontentview (bitmapshaders); <br/>}< br/>}
Bitmapshaders. Java
Package xiaosi. bitmapshader; </P> <p> Import android. content. context; <br/> Import android. graphics. bitmap; <br/> Import android. graphics. bitmapshader; <br/> Import android. graphics. canvas; <br/> Import android. graphics. color; <br/> Import android. graphics. composeshader; <br/> Import android. graphics. lineargradient; <br/> Import android. graphics. paint; <br/> Import android. graphics. porterduff; <br/> Import android. graphics. radialgradient; <br/> Import android. graphics. shader; <br/> Import android. graphics. sweepgradient; <br/> Import android. graphics. drawable. bitmapdrawable; <br/> Import android. graphics. drawable. shapedrawable; <br/> Import android. graphics. drawable. shapes. ovalshape; <br/> Import android. view. view; </P> <p> public class bitmapshaders extends view <br/> {<br/> private lineargradient = NULL; <br/> private composeshader = NULL; <br/> private sweepgradient = NULL; <br/> private radialgradient = NULL; <br/> private bitmapshader = NULL; <br/> private Bitmap bitmap = NULL; <br/> private paint = NULL; <br/> private shapedrawable = NULL; <br/> private int bitmapwidth = 0; <br/> private int bitmapheight = 0; </P> <p> Public bitmapshaders (context) <br/>{< br/> super (context ); <br/> // obtain the image <br/> bitmap = (bitmapdrawable) getresources (). getdrawable (R. drawable. v) <br/>. getbitmap (); <br/> bitmapwidth = bitmap. getwidth (); <br/> bitmapheight = bitmap. getheight (); <br/> // construct the Renderer lineargradient <br/> lineargradient = new lineargradient (0, 0,100,100, new int [] {<br/> color. red, color. green, color. blue, color. white}, null, <br/> shader. tilemode. repeat); <br/> paint = new paint (); <br/>}</P> <p> @ override <br/> protected void ondraw (canvas) <br/>{< br/> super. ondraw (canvas); <br/> paint. setshader (lineargradient); <br/> canvas. drawrect (20, 50,320,156, paint); <br/>}< br/>