问题描述
- 从网上下载的图片,想让图片圆边的显示在Listview里面。。。。
- SimpleAdapter 我想用这个,不想重写Adapter 求解决方案。。。。
能不能通过写ListView的布局文件来让图片加载进去就是圆边?
百度了一下,说这样做,我没看懂是怎么传参的。。。
adapter.setViewBinder(new ViewBinder() { public boolean setViewValue(View view Object data String textRepresentation) { //判断是否为我们要处理的对象 if(view instanceof ImageView && data instanceof Bitmap){ ImageView iv = (ImageView) view; iv.setImageBitmap((Bitmap) data); return true; }else return false; } });
解决方案
这两种方案,第一种,就是对获取到的Bitmap进行圆角处理,这种方式已有人回答。第二种,在自定义ListView的Item布局的时候,在要显示ImageView的图片上面再盖一层圆角的外框,就是一张图片,中间是一个圆角的透明矩形。把它覆盖在你的ImageView上面就可以了。这样是最简单的方式,但是要注意最后覆盖上去的图片,边框不透明部分的颜色应与ListView的背景一样,不然看上去很不舒服的。关于第一种方式再说一下,对于位图Bitmap作处理要谨慎,很容易引起内存溢出异常。
解决方案二:
// 获得圆角图片的方法 public static Bitmap getRoundedCornerBitmap(Bitmap bitmap float roundPxfloat roundPy) { Bitmap output = Bitmap.createBitmap(bitmap.getWidth() bitmap .getHeight() Config.ARGB_8888); Canvas canvas = new Canvas(output); final int color = 0xff424242; final Paint paint = new Paint(); final Rect rect = new Rect(0 0 bitmap.getWidth() bitmap.getHeight()); final RectF rectF = new RectF(rect); paint.setAntiAlias(true); canvas.drawARGB(0 0 0 0); paint.setColor(color); canvas.drawRoundRect(rectF roundPx roundPy paint); paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); canvas.drawBitmap(bitmap rect rect paint); return output; }
其中roundPx roundPy用来表示做出的圆角有大
解决方案三:
在XML中使用标签来创建一个圆角图片。你也可以使用shape标签定义颜色渐变效果。
这是我之前在自己程序中的一段XML文件,设置的是白色背景,黑色边框和圆角创建的图片。
希望给你帮助。
<?xml version=""1.0"" encoding=""UTF-8""?> <shape xmlns:android=""http://schemas.android.com/apk/res/android""> <solid android:color=""#ffffffff""/> <stroke android:width=""3dp"" android:color=""#ff000000"" /> <padding android:left=""1dp"" android:top=""1dp"" android:right=""1dp"" android:bottom=""1dp"" /> <corners android:bottomRightRadius=""7dp"" android:bottomLeftRadius=""7dp"" android:topLeftRadius=""7dp"" android:topRightRadius=""7dp""/> </shape>
时间: 2024-11-01 10:03:04