700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【Android】Drawable裁剪圆形 椭圆 圆角矩形图片(89/100)

【Android】Drawable裁剪圆形 椭圆 圆角矩形图片(89/100)

时间:2018-09-21 07:21:23

相关推荐

【Android】Drawable裁剪圆形 椭圆 圆角矩形图片(89/100)

自定义CircleDrawable:

package top.lc951.myandroid.views;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapShader;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.Shader;import android.graphics.drawable.BitmapDrawable;/*** @author lichong* 08月01日14:40:45*/public class CircleDrawable extends BitmapDrawable {private Paint mPaint = new Paint(); // 声明一个画笔对象public CircleDrawable(Context ctx, Bitmap bitmap) {super(ctx.getResources(), bitmap);// 创建一个位图着色器,CLAMP表示边缘拉伸BitmapShader shader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);mPaint.setShader(shader); // 设置画笔的着色器对象}@Overridepublic void draw(Canvas canvas) {int width = getBitmap().getWidth();int height = getBitmap().getHeight();int radius = Math.min(width, height) / 2 - 4;// 在画布上绘制圆形,也就是只显示圆形内部的图像canvas.drawCircle(width/2, height/2, radius, mPaint);}}

OvalDrawable:

package top.lc951.myandroid.views;import android.content.res.Resources;import android.graphics.Bitmap;import android.graphics.BitmapShader;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.Shader;import android.graphics.drawable.BitmapDrawable;/*** @author lichong* 08月01日14:37:09*/public class OvalDrawable extends BitmapDrawable {private Paint mPaint =new Paint();public OvalDrawable(Resources res, Bitmap bitmap) {super(res, bitmap);// 创建一个位图着色器,CLAMP表示边缘拉伸BitmapShader shader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);mPaint.setShader(shader); // 设置画笔的着色器对象}@Overridepublic void draw(Canvas canvas) {canvas.drawOval(0,0,getBitmap().getWidth(),getBitmap().getHeight(),mPaint);}}

RoundDrawable:

package top.lc951.myandroid.views;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapShader;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.RectF;import android.graphics.Shader;import android.graphics.drawable.BitmapDrawable;import com.example.indicatorlib.utils.Utils;/*** @author lichong* 08月01日14:49:26*/public class RoundDrawable extends BitmapDrawable {private Paint mPaint = new Paint(); // 声明一个画笔对象private int mRoundRadius; // 圆角的半径public RoundDrawable(Context ctx, Bitmap bitmap) {super(ctx.getResources(), bitmap);// 创建一个位图着色器,CLAMP表示边缘拉伸BitmapShader shader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);mPaint.setShader(shader); // 设置画笔的着色器对象mRoundRadius = Utils.dp2px(ctx, 30);}@Overridepublic void draw(Canvas canvas) {RectF rect = new RectF(0, 0, getBitmap().getWidth(), getBitmap().getHeight());// 在画布上绘制圆角矩形,也就是只显示圆角矩形内部的图像canvas.drawRoundRect(rect, mRoundRadius, mRoundRadius, mPaint);}}

借用之前的图片变化BitmapColorModeActivity,添加使用如下:

private String[] colorNameArray = {"原色", "黑白", "底片", "怀旧", "模糊", "圆形剪裁", "椭圆剪裁", "圆角矩形剪裁"};private void initSpinner() {mOriginBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_img06);ArrayAdapter<String> colorAdapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1, colorNameArray);Spinner spinner = findViewById(R.id.spinner);spinner.setAdapter(colorAdapter);spinner.setSelection(0);spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {@Overridepublic void onItemSelected(AdapterView<?> parent, View view, int position, long id) {Bitmap bitmap;switch (position) {case 0:bitmap = mOriginBitmap;break;case 1:bitmap = BitmapUtil.convertBlack(mOriginBitmap); // 转换为黑白效果break;case 2:bitmap = BitmapUtil.convertNegative(mOriginBitmap); // 转换为底片效果break;case 3:bitmap = BitmapUtil.convertOld(mOriginBitmap); // 转换为怀旧效果break;case 4:bitmap = BitmapUtil.convertBlur(mOriginBitmap); // 转换为模糊效果break;case 5:Drawable drawable = new CircleDrawable(BitmapColorModeActivity.this, mOriginBitmap);pictureIv.setImageDrawable(drawable); // 设置图像视图的图形对象return;case 6:Drawable ovalDrawable = new OvalDrawable(BitmapColorModeActivity.this.getResources(), mOriginBitmap);pictureIv.setImageDrawable(ovalDrawable); // 设置图像视图的图形对象return;case 7:Drawable roundDrawable = new RoundDrawable(BitmapColorModeActivity.this, mOriginBitmap);pictureIv.setImageDrawable(roundDrawable); // 设置图像视图的图形对象return;default:bitmap = mOriginBitmap;}pictureIv.setImageBitmap(bitmap);}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。