Public Classshaderextends Object
Java.lang.Object |
? |
Android.graphics.Shader |
Known Direct Subclassesbitmapshader, Composeshader, LinearGradient, Radialgradient, sweepgradient |
Paint.setshaer (Shader Shader) is achieved by setting Shader for paint;
Example:
1.LinearGradient Linear Gradient Shader
Effect, GitHub has a Shimmer open source library, https://github.com/RomainPiel/Shimmer-android
Code: A button with a shiny effect that you simply implement
PackageCom.example.myapp.view;ImportAndroid.content.Context;ImportAndroid.graphics.Canvas;Importandroid.graphics.LinearGradient;ImportAndroid.graphics.Matrix;ImportAndroid.graphics.Paint;ImportAndroid.graphics.Shader;ImportAndroid.util.AttributeSet;ImportAndroid.util.Log;ImportAndroid.widget.Button;/*** Created by Zyr * date:16-3-2 * Time: Morning 10:39 * Email: [Email protected]*/ Public classMyshimmerbuttonextendsButton {PrivatePaint Mpaint; Private intMwdith,mheight,mtranslatex,deltax; Privatelineargradient mlineargradient; PrivateMatrix Mmatrix; Private BooleanIsshimmer =false; PublicMyshimmerbutton (Context context) {Super(context); } PublicMyshimmerbutton (Context context, AttributeSet attrs) {Super(context, attrs); } PublicMyshimmerbutton (context context, AttributeSet attrs,intdefstyleattr) { Super(context, attrs, defstyleattr); } @Overrideprotected voidonfinishinflate () {Super. Onfinishinflate (); LOG.D ("Zyr", "Onfinishinflate"); } @Overrideprotected voidOnmeasure (intWidthmeasurespec,intHeightmeasurespec) { Super. Onmeasure (Widthmeasurespec, Heightmeasurespec); LOG.D ("Zyr", "Onmeasure"); } @Overrideprotected voidOnLayout (BooleanChangedintLeftintTopintRightintbottom) { Super. OnLayout (changed, left, top, right, bottom); LOG.D ("Zyr", "OnLayout"); } @Overrideprotected voidOnsizechanged (intWintHintOLDW,intOLDH) { Super. Onsizechanged (W, H, OLDW, OLDH); LOG.D ("Zyr", "onsizechanged"); if(W!=OLDW | | h!=OLDH) {Isshimmer=true; Mwdith=W; Mheight=h; Mpaint=Getpaint (); Mlineargradient=NewLinearGradient (0,0,mwdith,mheight,New int[]{0x33ffffff, 0xFFFFFFFF, 0x33ffffff},New float[] {0, 0.5f, 1}, Shader.TileMode.CLAMP); Mmatrix=NewMatrix (); Mlineargradient.setlocalmatrix (Mmatrix); DeltaX= MWDITH/10; Mpaint.setshader (mlineargradient); }} @Overrideprotected voidOnDraw (canvas canvas) {Super. OnDraw (canvas); if(isshimmer) {if(Mtranslatex > Mwdith*2) {Mtranslatex= -Mwdith; } Else{Mtranslatex= Mtranslatex +DeltaX; } mmatrix.settranslate (Mtranslatex,0); Mlineargradient.setlocalmatrix (Mmatrix); Postinvalidatedelayed (50); } }}
Public Classshaderextends Object
java.lang.object |
? |
android.graphics.shader |
Known Direct Subclassesbitmapshader, Composeshader, LinearGradient, Radialgradient, sweepgradient |
Android's Shader