自定义圆形图标控件
来源:互联网 发布:数据库和关系数据库 编辑:程序博客网 时间:2024/05/21 10:20
直接上代码:
package com.android.systemui.recent;import android.annotation.SuppressLint;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapShader;import android.graphics.Canvas;import android.graphics.Matrix;import android.graphics.Shader.TileMode;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;import android.graphics.drawable.ShapeDrawable;import android.graphics.drawable.shapes.OvalShape;import android.util.AttributeSet;import android.widget.ImageView;public class CircleIconImage extends ImageView {private static final int SIZE_VIEW = 109;private static final int SIZE_DRAWABLE = 109;private static final int SIZE_DRAWABLE_MIN = 109;private Matrix mMatrix;private BitmapShader mBitmapShader;@SuppressLint("NewApi")public CircleIconImage(Context context, AttributeSet attrs) {super(context, attrs);mMatrix = new Matrix();setScaleType(ScaleType.CENTER_INSIDE);}@Overrideprotected void onDraw(Canvas canvas) {// TODO Auto-generated method stubsetUpShader(canvas);}private void setUpShader(Canvas canvas) {Drawable drawable = getDrawable();if (drawable == null) {return;}Bitmap bmp = drawableToBitamp(drawable);mBitmapShader = new BitmapShader(bmp, TileMode.CLAMP, TileMode.CLAMP);float scale = 1.0f;int bSize = Math.min(bmp.getWidth(), bmp.getHeight());final int offset;if (bSize > SIZE_DRAWABLE) {scale = SIZE_DRAWABLE * 1.0f / bSize;offset = (SIZE_VIEW - SIZE_DRAWABLE) / 2;} else if (bSize < SIZE_DRAWABLE_MIN) {scale = SIZE_DRAWABLE_MIN * 1.0f / bSize;offset = (SIZE_VIEW - SIZE_DRAWABLE_MIN) / 2;} else {offset = (SIZE_VIEW - bSize) / 2;}ShapeDrawable shape = new ShapeDrawable(new OvalShape());mMatrix.setScale(scale, scale);mBitmapShader.setLocalMatrix(mMatrix);shape.getPaint().setAntiAlias(true);shape.getPaint().setDither(true);shape.getPaint().setShader(mBitmapShader);shape.setBounds(0 + offset, 0 + offset, SIZE_VIEW - offset, SIZE_VIEW - offset);shape.draw(canvas);}private Bitmap drawableToBitamp(Drawable drawable) {if (drawable instanceof BitmapDrawable) {BitmapDrawable bd = (BitmapDrawable) drawable;return bd.getBitmap();}int w = drawable.getIntrinsicWidth();int h = drawable.getIntrinsicHeight();Bitmap bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(bitmap);drawable.setBounds(0, 0, w, h);drawable.draw(canvas);return bitmap;}}
阅读全文
0 0
- 自定义圆形图标控件
- 自定义圆形头像图标控件
- 自定义圆形圆形控件CircleImageview
- 自定义圆形图片控件
- 自定义圆形ImageView控件
- 自定义圆形QLabel控件
- 自定义控件------圆形Imageview
- 自定义圆形图片控件
- 自定义圆形进度控件
- 【自定义控件】圆形时钟
- 自定义圆形控件 RoundImageView
- 自定义控件 圆形进度条
- 自定义圆形QLabel控件
- 自定义控件-圆形进度条
- Android自定义控件:圆形进度条
- android 自定义圆形imageview控件
- Android圆形图片--自定义控件
- 自定义控件 - 圆形缓冲进度条
- 面向过程和面向对象的理解
- Solr -- 查询语法/参数
- 小米手机-刷机日志
- H5Slides幻灯演示系统
- 博客系统开发推送第三季----文章的归档分类
- 自定义圆形图标控件
- swustoj(统计在简单选择排序中的数据交换的次数(1109))
- 文本内容溢出用省略号(...)表示
- Ubuntu OpenCV2.4.13与OpenCV3.1.0共存
- Java中抽象类于接口解析
- 30分钟LINQ教程
- 创建SSH key
- [Err] ORA-01791: not a SELECTed expression 数据库错误 的原因与解决
- Java IO流学习总结