BitmapShader赋予画笔以图片来着色,使用canvas画圆形就可以实现圆形头像 private void drawCircleBitmapShader(Canvas canvas){...BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP,Shader.TileMode.CLAMP);...paint.setShader(bitmapShader); //获取半径 int radius = Math.min(bitmap.getWidth(),bitmap.getHeight...bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP,Shader.TileMode.CLAMP); paint.setShader...(bitmapShader); Matrix matrix = new Matrix(); //获取缩放比较小的,以保持缩放比一致,防止拉伸图片 float
bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP,Shader.TileMode.CLAMP); paint.setShader...CLAMP效果.jpg MIRROR模式 private void drawMirrorBitmapShader(Canvas canvas) { BitmapShader bitmapShader...= new BitmapShader(bitmap, Shader.TileMode.MIRROR,Shader.TileMode.MIRROR); paint.setShader(bitmapShader...MIRROR效果.jpg REPEAT模式 private void drawRepeatBitmapShader(Canvas canvas) { BitmapShader bitmapShader...= new BitmapShader(bitmap, Shader.TileMode.REPEAT,Shader.TileMode.REPEAT); paint.setShader(bitmapShader
② 为 Paint 设置 着色器 Shader ③ 打开抗锯齿 ④ 绘制一个矩形区域 3.创建 BitmapShader : 调用 BitmapShader 构造方法创建着色器, 同时 设置 位图引用...bitmapShader = new BitmapShader(mBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP...bitmapShader = new BitmapShader(mBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP...bitmapShader = new BitmapShader(mBitmap, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT...bitmapShader = new BitmapShader(mBitmap, Shader.TileMode.MIRROR, Shader.TileMode.MIRROR
图片渲染器 BitmapShader BitmapShader将一张图片当作纹理(在OpenGL中,纹理就是贴图的意思,可以理解为一个没有颜色的正文形被贴上了一张图片,这样视觉效果就是一张正方形的图片...而这张图片可以通过设置BitmapShader的tiling mode来达到镜面和重复的效果。...tileY) 上面是BitmapShader的构造方法。...然后在它的onDraw()方法中画一个矩形,并且设置画笔的Shader为BitmapShader,Shader的tiling模式为CLAMP....我们以目标图片创建一个BitmapShader,然后设置进画笔。 3. 我们用设置好的画笔利用Canvas绘制一个圆形。 4.
那么这里学习一下简单的制作圆形图片,主要运用 BitmapShader 类的知识来实现 一、首先,了解一下 BitmapShader 类 BitmapShader是Shader的子类,可以通过Paint.setShader...(Shader shader)进行设置 看一下BitmapShader 的构造方法 BitmapShader bitmapShader = new BitmapShader(bitmap,TileMode...圆形图片的半径 2、重写构造方法 1 public CircleImageView(Bitmap bitmap) { 2 this.bitmap = bitmap; 3 BitmapShader...bitmapShader = 4 new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP...bitmapShader = 18 new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP
(source, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP)); paint.setAntiAlias(true);...bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); //给着色器配置matrix...bitmapShader.setLocalMatrix(matrix); paint.setShader(bitmapShader); //创建矩形区域并且预留出border RectF rect =...bitmapShader.setLocalMatrix(matrix); paint.setShader(bitmapShader); //创建矩形区域并且预留出border RectF rect =...bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); Matrix matrix
通过Paint.setShader()方法设置着色器,Paint着色器有如下几种: BitmapShader LinearGradient SweepGradient RadialGradient ComposeShader...BitmapShader BitmapShader使用Bitmap来进行填充,下面来看下它的构造方法: public BitmapShader(@NonNull Bitmap bitmap, @NonNull...实现圆形头像 Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); //创建BitmapShader BitmapShader bitmapShader = new...BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); paint.setShader(bitmapShader); /...mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); //使用放大后的图片来填充画笔 mBitmapShader = new BitmapShader
,将其传递给我们的画笔 public RoundImageDrawable(Bitmap bitmap) { mBitmap = bitmap; BitmapShader bitmapShader...(true); mPaint.setShader(bitmapShader); } c 在setBounds()初始化一个 ReactF @Override public void setBounds(...bitmapShader = new BitmapShader(bitmap, TileMode.CLAMP, TileMode.CLAMP); mPaint...= new Paint(); mPaint.setAntiAlias(true); mPaint.setShader(bitmapShader); }...bitmapShader = new BitmapShader(bitmap, TileMode.CLAMP, TileMode.CLAMP); mPaint
int margin; protected final RectF mRect = new RectF(), mBitmapRect; protected final BitmapShader...bitmapShader; protected final Paint paint; public RoundedDrawable(Bitmap bitmap, int cornerRadius..., int margin) { this.cornerRadius = cornerRadius; this.margin = margin; bitmapShader...= new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); mBitmapRect = new RectF...类 2、计算bitmap原始图片的rect 3、计算放置图片需要的rect 4、使用Matrix类对两个rect进行压缩,然后复制给BitmapShader着色器里去。
需要注意的是,由于我们要画的是裁剪后的图片,因此不能直接调用drawBitmap方法,而要把Bitmap对象塞入BitmapShader对象中,然后调用Paint的setShader方法,把图像作为阴影来绘制...bitmapShader = new BitmapShader(bitmap, TileMode.CLAMP, TileMode.CLAMP); mPaint = new Paint();...mPaint.setAntiAlias(true); //抗锯齿 mPaint.setShader(bitmapShader); } @Override public void draw...bitmapShader = new BitmapShader(bitmap, TileMode.CLAMP, TileMode.CLAMP); mPaint = new Paint();...bitmapShader = new BitmapShader(bitmap, TileMode.CLAMP, TileMode.CLAMP); mPaint = new Paint();
android.animation.ObjectAnimator; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapShader... * 获取ImageView中资源图片的Bitmap,利用Bitmap初始化图片着色器,通过缩放矩阵将原资源图片缩放到铺满整个绘制区域,避免边界填充 */ private BitmapShader...initBitmapShader() { Bitmap bitmap = ((BitmapDrawable) getDrawable()).getBitmap(); BitmapShader...bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); float...(matrix); return bitmapShader; } } 以上就是直播带货APP开发,圆形旋转动画的相关代码, 更多内容欢迎关注之后的文章
利用学过的BitmapShader渲染类,我们来实现一个带描边的圆角图片。 具体实现: 用来显示自定义的绘图类的布局文件 res/layout/main.xml: <?...首先定义一个画笔,并设置其使用抗锯齿功能,然后定义一张背景,然后定义一个要绘制的圆角矩形的区域,并将画布在X轴上平移40像素,在Y轴上平移20像素,再绘制一个黑色的2像素的圆角矩形,作为图片的边,最后绘制一个使用BitmapShader...; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.BitmapShader...对象 BitmapShader bs=new BitmapShader(bm,TileMode.REPEAT,TileMode.MIRROR); paint.setShader(bs);//...设置渲染对象 //绘制一个使用BitmapShader渲染的圆角矩形图片 canvas.drawRoundRect(rect, 10, 10, paint); } } }
官方文档说的很清楚了:BitmapShader的作用是使用特定的图片来作为纹理来使用。...BitmapShader 的构造函数 public BitmapShader(@NonNull Bitmap bitmap, TileMode tileX, TileMode tileY) 三个参数:...如果绘制的区域大于纹理图片的话,纹理图片会以镜像的形式重复出现 BitmapShader 实战 实现圆形、圆角图片 核心思路 取出 bitmap 用 BitmapShader 去装饰 bitmap,并设置给画笔...在 onDraw 方法中,调用 canvas 的 draw 方法绘制 伪代码实现思路 //创建 BitmapShader shader=new BitmapShader(bitmap,TileMode.CLAMP...实战 实现圆形、圆角图片 ---- 参考博客: Android Xfermode 实战实现圆形、圆角图片 Android BitmapShader 实战 实现圆形、圆角图片
1.1自定义圆形处理工具类 import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapShader...Canvas canvas = new Canvas(result); Paint paint = new Paint(); paint.setShader(new BitmapShader...(squared, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP)); paint.setAntiAlias(true...Canvas canvas = new Canvas(result); Paint paint = new Paint(); paint.setShader(new BitmapShader...(source, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP)); paint.setAntiAlias(true)
供大家参考,具体内容如下 圆形 package com.customview.widget; import android.graphics.Bitmap; import android.graphics.BitmapShader...bitmapShader = new BitmapShader(mBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);//着色器 水平和竖直都需要填充满...mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setShader(bitmapShader); mWidth...bitmapShader = new BitmapShader(mBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);//着色器 水平和竖直都需要填充满...mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setShader(bitmapShader); //rectF
BitmapShader 的作用 官方定义:Shader used to draw a bitmap as a texture BitmapShader的作用是使用特定的图片来作为纹理来使用...简单使用 BitmapShader是Shader的子类,可以通过Paint.setShader(Shader shader)进行设置。...BitmapShader 的构造函数 public BitmapShader(@NonNull Bitmap bitmap, TileMode tileX, TileMode tileY) 三个参数...bmpShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); ?...通过上面的例子,我们可以发现就算我们不绘制闭合的路径,使用BitmapShader,仍然会给我们自动path.close();形成一个闭合的路径,并将背景填充进去。
可以修改圆形图片的半径) import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapShader...source.getConfig()); Canvas canvas = new Canvas(bitmap); Paint paint = new Paint(); BitmapShader...shader = new BitmapShader(squaredBitmap, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP
实现方式: 1.初始化一个BitmapShader着色器对象; 2.将着色器对象set给画笔; 3.在画布上绘制圆或圆角即可; 4.使用,view.setBackgroundDrawable...ImageView.setImageDrawable package com.mydrawable.musk; import android.graphics.Bitmap; import android.graphics.BitmapShader...Bitmap mBitmap; public CircleDrawable(Bitmap bitmap) { mBitmap = bitmap; //着色器,设置横向和纵向的着色模式为平铺 BitmapShader...bitmapShader = new BitmapShader(mBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); mPaint =...new Paint(); mPaint.setAntiAlias(true); mPaint.setDither(true); mPaint.setShader(bitmapShader);
R.drawable.head) .into(ImageView); 加载圆形图片 import android.graphics.Bitmap; import android.graphics.BitmapShader...source.getConfig()); Canvas canvas = new Canvas(bitmap); Paint paint = new Paint(); BitmapShader...shader = new BitmapShader(squaredBitmap, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP
除了BitmapShader外,还有几种渲染 1.LinearGradient--线性渲染 参数 float left 渲染区域的左坐标 float top...* 组合渲染 * @param canvas */ private void drawComposeShader(Canvas canvas){ BitmapShader...bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP,Shader.TileMode.CLAMP); SweepGradient...sweepGradient = new SweepGradient(200,200,colors,null); ComposeShader composeShader = new ComposeShader(bitmapShader
领取专属 10元无门槛券
手把手带您无忧上云