源码介绍:Android图片滑动渐变,实现动画效果。源码效果:源码片段:packagecom.example.tz_demo_8_14;importandroid.graphics.Canvas;importandroid.graphics.ColorFilter;importandroid.graphics.Rect;importandroid.graphics.drawable.Drawable;importandroid.util.Log;importandroid.view。重力;uplacClassRawableExtendSdrable{pripatedRawableMunSelectedDrawable;PrivatedRawablemselectectrable;privateChectoutecous;privateCtouTRect=newRect=newRect();publicReveAlabledectecteDdrawable(drawableNectectectlableDrawable,drawabledectabledrawable,drawableSeledectable,drawableSelectect){|10000渐变色:5000~10000*/@Overridepublicvoiddraw(Canvascanvas){intlevel=getLevel();if(level==0||level==10000){//全灰mUnSelectedDrawable.draw(canvas);}elseif(level==5000){//全色mSelectedDrawable.draw(canvas);}else{//渐变色(部分灰色,部分颜色)://获取当前Drawable的矩形边界Rectbounds=getBounds();矩形=输出矩形;{//1。从灰色图片中剪出矩形的左边部分//level:0~5000~10000floatratio=(level/5000f)-1f;intw=bounds.width();w=(int)(w*Math.abs(ratio));inth=bounds.height();intgravity=ratio<0?Gravity.LEFT:Gravity.RIGHT;Gravity.apply(gravity,//从左边或右边切w,//widthhofthetargetrectangle,//目标矩形的heightbounds,//切出的原始矩形r);//目标矩形--最终画布中需要的矩形区域//保存原型画布canvas.save();//裁剪一部分画布canvas.clipRect(r);mUnSelectedDrawable.draw(canvas);//恢复画布canvas.restore();}{//2.从彩色图片中剪出矩形右边的部分//level:0~5000~10000floatratio=(level/5000f)-1f;intw=bounds.width();w-=(int)(w*Math.abs(ratio));inth=bounds.height();intgravity=ratio<0?Gravity.RIGHT:Gravity.LEFT;Gravity.apply(gravity,//从左切还是从右切w,//宽度h的thetargetrectangle,//目标矩形的上界,//切出原矩形r);//目标矩形--最终画布中需要的矩形区域//保存画布原型canvas.save();//裁剪一部分画布canvas.clipRect(r);mSelectedDrawable.draw(canvas);//恢复画布canvas.restore();}}}@OverrideprotectedbooleanonLevelChange(intlevel){//感知调用setLevel,然后刷新--draw()invalidateSelf();returntrue;}/***初始化数据*/@OverrideprotectedvoidonBoundsChange(Rectbounds){//定义两个Drawable图片的宽高--boundboundarymUnSelectedDrawable.setBounds(界);mSelectedDrawable.setBounds(边界);超r.onBoundsChange(bounds);}/***获取Drawable的实际宽高*/@OverridepublicintgetIntrinsicWidth(){returnmSelectedDrawable.getIntrinsicWidth();}@OverridepublicintgetIntrinsicHeight(){returnmSelectedDrawable.getIntrinsicHeight();}@OverridepublicvoidsetAlpha{}@OverridepublicvoidsetColorFilter(ColorFiltercf){}@OverridepublicintgetOpacity(){return0;}}下载地址:http://down.51cto.com/data/2096556
