glide 加载圆角图片

效果如上, 这是ListView的一个item 左边是一个圆角矩形的背景. 使用glide加载图片

自定义一个FilletImageView, 代码如下:

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Xfermode;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.widget.ImageView;

/**
 * Created by Administrator on 2016/8/19.
 */
public class FilletImageView extends ImageView
{
    private Rect    rect = new Rect();
    private RectF   rectF = new RectF();
    private float   radius;
    private Bitmap  bitmap;
    private Xfermode xfermode = new PorterDuffXfermode(PorterDuff.Mode.SRC_IN);

    public FilletImageView(Context context)
    {
        this(context, null);
    }

    public FilletImageView(Context context, AttributeSet attrs)
    {
        super(context, attrs);
        radius = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 2, getResources().getDisplayMetrics());
        try
        {
            if(android.os.Build.VERSION.SDK_INT >= 11)
            {
                setLayerType(LAYER_TYPE_SOFTWARE, null);
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }

    @Override
    public void setImageBitmap(Bitmap bm)
    {
        this.bitmap = bm;
    }

    @Override
    protected void onDraw(Canvas canvas)
    {
        if (bitmap == null)
            return;

        rect.set(0,0,getWidth(),getHeight());
        rectF.set(rect);

        Paint paint = new Paint();
        paint.setColor(Color.RED);
        paint.setAntiAlias(true);
        canvas.drawRoundRect(rectF, radius, radius, paint);
        paint.setXfermode(xfermode);
        canvas.drawBitmap(bitmap, null, rect, paint);
    }
}

然后在加载的时候列表项太多, 第一次没有显示出图像, 解决方法:在glide将图像下载成功后再加载. 代码如下:

好了, 一次可以全部显示了

参考:
http://blog.csdn.net/zz7zz7zz/article/details/11495517
http://www.cnblogs.com/zhaoyanjun/p/5404162.html

时间: 2024-10-25 19:15:42

glide 加载圆角图片的相关文章

使用Glide加载圆角图片

//设置图片圆角角度 RoundedCorners roundedCorners= new RoundedCorners(6); //通过RequestOptions扩展功能,override采样率,因为ImageView就这么大,可以压缩图片,降低内存消耗 RequestOptions options=RequestOptions.bitmapTransform(roundedCorners).override(300, 300); Glide.with(context).load(files

Glide加载圆形图片第一次只显示默认图片

Glide加载圆形图,又设置了默认图,很多时候第一次加载的时候只显示默认图.下面的方案可以解决.\ Glide.with(AudioDetailActivity.this) .load(cover) .placeholder(R.drawable.audio_default_normal) .into(new SimpleTarget<GlideDrawable>() { @Override public void onResourceReady(GlideDrawable resource,

安卓MediaPlayer 播放网络视频源走了Error监听(原因同 Glide 无法加载Http图片)

问题:网上拿了一个视频加载封装库,主要封装了MediaPlayer,运行下视频是可以正常播放的,且视频源是网络视频源,但是引入我的项目里面的时候无法播放,mmp 调试下发现走了 public boolean onError(MediaPlayer mp, int what, int extra) 这个监听,后面两个参数是(1,-2147483648),源码中有对这串数字的解释:<li><code>MEDIA_ERROR_SYSTEM (-2147483648)</code&g

基于开源框架Glide加载Gif资源图到Android ImageView中

<基于第三方开源框架Android Glide加载Gif资源图片到Android ImageView中> 通常Android的ImageView不能加载Gif图片,如不做任何处理,那么加载到ImageView中的Gif只显示第一帧.网上给出很多解决方案,也有不少开源框架定制专属的Gif View用于加载Gif图,这些解决方案基本上大多数是借助Android的Movie,把Gif图片资源作为流,解析成Android Movie显示,这些定制的基本思想就是先检测该图片资源是否是Gif图,若是,则按

swift UIImage加载远程图片和圆角矩形

UIImage这个对象是swift中的图像类,可以使用UIImageView加载显示到View上. 以下是UIImage的构造函数: init(named name: String!) -> UIImage // load from main bundle init(named name: String!, inBundle bundle: NSBundle!, compatibleWithTraitCollection traitCollection: UITraitCollection!)

android开发里跳过的坑——GridView使用Glide加载图片不显示

用grideview显示本地图片列表,用了Glide加载框架,具体调用如下: Glide.with(mContext).load(Uri.fromFile(file)).into(imageView); 但是神奇的事情发生了,什么都不显示,且没有错误提示!!!!!网上搜索信息无过后,想着要么显示占位符试试,如下 Glide.with(mContext).load(Uri.fromFile(file)).placeholder(R.drawable.add).into(imageView); 然后

Glide加载异常调试

Glide提供了listener链式调用方法,传入一个RequestListener对象,然后实现内部的onException方法,那么在Glide加载图片失败时就会调用这个方法. 代码实现很简单: private RequestListener<String, GlideDrawable> requestListener = new RequestListener<String, GlideDrawable>() { @Override public boolean onExce

win32用GDI+加载png图片作为背景图

#include <windows.h> #include <gdiplus.h> /* GDI+ startup token */ ULONG_PTR gdiplusStartupToken; /* Declare Windows procedure */ LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM); // UpdateLayeredWindow Defination typedef BOOL(*UP

有效解决Android加载大图片时内存溢出的问题

首先解析一下基本的知识: 位图模式,bitmap颜色位数是1位 灰度模式,bitmap颜色位数是8位,和256色一样 RGB模式,bitmap颜色位数是24位 在RGB模式下,一个像素对应的是红.绿.蓝三个字节 CMYK模式,bitmap颜色位数是32位  在CMYK模式下,一个像素对应的是青.品.黄.黑四个字节 图像文件的字节数(Byte) = 图像分辨率*颜色深度/8(bit/8) 例如:一幅640*480图像分辨率.RGB色一般为24位真彩色,图像未经压缩的数据容量为:640X480X24