快餐可直接到解决方案

目录

问题引入

解决方案


问题引入

        在写GridView的时候想把里面的头像修成圆角图片,如图中方形粉色头像

据我分析,想在一个界面里添加圆角样式就应该在该界面的Activity里,用findViewById找到头像然后对它一顿操作,但是GridView的部分是单独在一个Xml里的,没有属于他自己的Activity,也就没有操作空间。。

后来看见了别人的这个重写Image的方法:解决方案

解决方案

可以通过重写ImageView的方法,重写完了直接到Xml布局文件里引入。

重写部分

RoundRectImageView.java
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Shader;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.ImageView;public class RoundRectImageView extends ImageView {private Paint paint;public RoundRectImageView(Context context) {this(context,null);}public RoundRectImageView(Context context, AttributeSet attrs) {this(context, attrs,0);}public RoundRectImageView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);paint = new Paint();}/*** 绘制圆角矩形图片* @author caizhiming*/@Overrideprotected void onDraw(Canvas canvas) {Drawable drawable = getDrawable();if (null != drawable) {Bitmap bitmap = getBitmapFromDrawable(drawable);
//   Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();Bitmap b = getRoundBitmapByShader(bitmap,getWidth(),getHeight(), 32,5);final Rect rectSrc = new Rect(0, 0, b.getWidth(), b.getHeight());final Rect rectDest = new Rect(0,0,getWidth(),getHeight());paint.reset();canvas.drawBitmap(b, rectSrc, rectDest, paint);} else {super.onDraw(canvas);}}/*** 把资源图片转换成Bitmap* @param drawable* 资源图片* @return 位图*/public static Bitmap getBitmapFromDrawable(Drawable drawable) {int width = drawable.getIntrinsicWidth();int height = drawable.getIntrinsicHeight();Bitmap bitmap = Bitmap.createBitmap(width, height, drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888: Bitmap.Config.RGB_565);Canvas canvas = new Canvas(bitmap);//drawable.setBounds(-4, -4, width + 4, height + 4);drawable.draw(canvas);return bitmap;}public static Bitmap getRoundBitmapByShader(Bitmap bitmap, int outWidth, int outHeight, int radius, int boarder) {if (bitmap == null) {return null;}int width = bitmap.getWidth();int height = bitmap.getHeight();float widthScale = outWidth * 1f / width;float heightScale = outHeight * 1f / height;Matrix matrix = new Matrix();matrix.setScale(widthScale, heightScale);//创建输出的bitmapBitmap desBitmap = Bitmap.createBitmap(outWidth, outHeight, Bitmap.Config.ARGB_8888);//创建canvas并传入desBitmap,这样绘制的内容都会在desBitmap上Canvas canvas = new Canvas(desBitmap);Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);//创建着色器BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);//给着色器配置matrixbitmapShader.setLocalMatrix(matrix);paint.setShader(bitmapShader);//创建矩形区域并且预留出borderRectF rect = new RectF(boarder, boarder, outWidth - boarder, outHeight - boarder);//把传入的bitmap绘制到圆角矩形区域内canvas.drawRoundRect(rect, radius, radius, paint);if (boarder > 0) {//绘制boarderPaint boarderPaint = new Paint(Paint.ANTI_ALIAS_FLAG);boarderPaint.setColor(Color.GREEN);boarderPaint.setStyle(Paint.Style.STROKE);boarderPaint.setStrokeWidth(boarder);canvas.drawRoundRect(rect, radius, radius, boarderPaint);}return desBitmap;}}

引入部分

实现结果

 结束!

Android 添加GridView中图片的圆角样式相关推荐

  1. android gridview 中图片大小不一,android – Gridview及其图像不适合所有屏幕大小

    正如在我的标题gridview中,图像不适合所有屏幕. 在我的应用程序中,我有15个图像,它是标题,我想在所有屏幕尺寸的3列和5行格式显示它. 但我的Gridview不适合所有屏幕尺寸和图像,标题未正 ...

  2. Android的GridView中的选中图标后图标的背景颜色

    1.首先在GridView组件中添加android:listSelector="@android:color/transparent",表示选中图标后颜色是透明的(给用户的感觉就是 ...

  3. Android之设置资源图片为圆角图片

    效果图: 参看以下代码: public class MainActivity extends Activity {private ImageView imageView1;private ImageV ...

  4. php中图片怎么加样式,html5实现各种图片样式实例用法汇总

    在我们日常Web网页布局中,我们经常会遇到对对象内鼠标指针光标进行控制,比如鼠标经过指针变为手指形状等样式,常见有些网站鼠标指针是各种各样小图片样式,那么如何实现鼠标样式呢?下面我们就给大家来总结下实 ...

  5. Android获取相册中图片的路径 4.4版本前后的变化

    两个问题: 1. 通过调用系统Action,从图库中选择图片,并展示到界面上 2. API19前后获取相册图片路径 详见(仅客户端代码),请移步:本人GITHUB Intent intent = ne ...

  6. Android安卓开发中图片缩放讲解

    安卓开发中应用到图片的处理时候,我们通常会怎么缩放操作呢,来看下面的两种做法: 方法1:按固定比例进行缩放 在开发一些软件,如新闻客户端,很多时候要显示图片的缩略图,由于手机屏幕限制,一般情况下,我们 ...

  7. html中图片自动滑动样式,“图片滑动样式”修改HTML教程

    通知:使用135编辑器,请在"360安全浏览器""猎豹浏览器""谷歌浏览器",可减少出现一大堆问题!详情戳<135编辑器新手指南> ...

  8. android 删除手机中图片的方法

    在app中删除手机中的图片,如果使用file的delete方法,会出现删除不干净的情况,这个时候留有一个空白的文件,还是会显示在相册中.经过调查后,发现是数据库中没有更新导致的,后来经过测试多款机型, ...

  9. Android聊天界面中图片大小的合理缩小算法

    应用场景 我们知道在聊天界面中,发送显示图片是不可缺少的一部分,这个时候就会面临对于图片显示控件的缩小处理.当然如果是简单的给ImageView设置一个固定的值的话,这篇文章就没有意义了.我们要做的就 ...

  10. android 模糊到清晰,Android打开图库中图片为什么从模糊变清晰

    1. 有一点要明确,图片要进行显示,首先要先将图片进行decode,然后才能显示 2. 图片decode需要时间,越大的图片,细节越多的图片,那么它decode时间就越长 3. 最笨的做法就是,等图片 ...

最新文章

  1. Redis 之布隆过滤器与布谷鸟过滤器
  2. android 获取 第三方应用,​android PackageManager的使用如何获取第三方应用程序(包)的信息,求大神指点...
  3. 李航第一章课后习题答案
  4. 线程类C++多线程框架(一)--------- new一下就启动一个线程
  5. 使用Vert.x进行响应式开发
  6. C语言中声明复数用什么字母,用c语言定义复数-20210407134457.docx-原创力文档
  7. ollydbg,ring3级别的调试软件
  8. vue js 反编译_学会了Vue,前端面试却没找到工作?
  9. 活动 | 日立·INNOWAY “引领变革 启迪未来” 创意马拉松
  10. 实验2-2-2 计算摄氏温度 (10 分)
  11. linux内核代码container_of
  12. spark 尽量避免数据源的数据倾斜
  13. 通过vmstat命令判断服务器瓶颈
  14. GOF设计模式--简单工厂模式
  15. FireMonkey TListView 使用 LiveBindings 绑定 TObjectList
  16. 程序员常用软件,你用了哪些
  17. 因为涉嫌歧视女性被开除的那位工程师到底在备忘录上写了什么?
  18. Python——>图像的字符画绘制
  19. Wap友链刷量软件V5.1
  20. 前端技术的趋势和最新的发展

热门文章

  1. 彻底了解DVD:从入门到精通
  2. 内部敌人中文 android,幽浮:内部敌人(含数据包)
  3. 操作Windows文件夹时,弹出文件夹正在使用,操作无法完成【解决】
  4. 社交网络中影响力传播模型
  5. 航空公司系统是怎样炼成的
  6. android tv 盒子,安卓TV电视盒子推荐软件一览表(盒子端+手机端+电脑端+群晖端)...
  7. 芯科Zigbee应用程序框架
  8. datawhale8月组队学习《pandas数据处理与分析》(下)(文本、分类、时序数据)
  9. #天府TV#《什么是成都》爆红背后,还有上千热泪盈眶留言!
  10. AOP之基于AspectJ注解总结与案例