zoukankan      html  css  js  c++  java
  • 使用Picasso实现图片圆角和图片圆形

    作者很好的文章访问量缺很少也很难搜到(我这里插个眼以后用的到)
    作者:先知丨先觉
    来源:CSDN
    原文:https://blog.csdn.net/github_33304260/article/details/52033539
    (图片圆角做的不是很好我试了试)

    导入依赖

    compile 'com.squareup.picasso:picasso:2.5.2'
    

      代码使用

    Picasso.with(Activity.this)
           .load(URL)
           .transform(new CircleCornerForm())
           .error(R.drawable.head)
           .into(ImageView);
    

      

    加载圆形图片

    import android.graphics.Bitmap;
    import android.graphics.BitmapShader;
    import android.graphics.Canvas;
    import android.graphics.Paint;
    
    import com.squareup.picasso.Transformation;
    
    /**
     * Created libin on 2016/4/25.
     * 圆形图片
     */
    public class CircleTransform implements Transformation {
    
        @Override
        public Bitmap transform(Bitmap source) {
            int size = Math.min(source.getWidth(), source.getHeight());
            int x = (source.getWidth() - size) / 2;
            int y = (source.getHeight() - size) / 2;
            Bitmap squaredBitmap = Bitmap.createBitmap(source, x, y, size, size);
            if (squaredBitmap != source) {
                source.recycle();
            }
            Bitmap bitmap = Bitmap.createBitmap(size, size, source.getConfig());
            Canvas canvas = new Canvas(bitmap);
            Paint paint = new Paint();
            BitmapShader shader = new BitmapShader(squaredBitmap,
                    BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP);
            paint.setShader(shader);
            paint.setAntiAlias(true);
            float r = size / 2f;
            canvas.drawCircle(r, r, r, paint);
            squaredBitmap.recycle();
            return bitmap;
        }
        @Override
        public String key() {
            return "circle";
        }
    }
    

      

    加载圆角图片

    import android.graphics.Bitmap;
    import android.graphics.Canvas;
    import android.graphics.Paint;
    import android.graphics.PorterDuff;
    import android.graphics.PorterDuffXfermode;
    import android.graphics.Rect;
    import android.graphics.RectF;
    
    import com.squareup.picasso.Transformation;
    
    /**
     * Created by libin on 16/7/22.
     * 圆角切片
     */
    public class CircleCornerForm implements Transformation {
    
        @Override
        public Bitmap transform(Bitmap source) {
            int widthLight = source.getWidth();
            int heightLight = source.getHeight();
    
            Bitmap output = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888);
    
            Canvas canvas = new Canvas(output);
            Paint paintColor = new Paint();
            paintColor.setFlags(Paint.ANTI_ALIAS_FLAG);
    
            RectF rectF = new RectF(new Rect(0, 0, widthLight, heightLight));
    
            canvas.drawRoundRect(rectF, widthLight / 5, heightLight / 5, paintColor);//这里除的数越大角度越小
    
            Paint paintImage = new Paint();
            paintImage.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP));
            canvas.drawBitmap(source, 0, 0, paintImage);
            source.recycle();
            return output;
        }
    
        @Override
        public String key() {
            return "roundcorner";
        }
    }
    

      

  • 相关阅读:
    封装

    如何通过命令行窗口查看sqlite数据库文件
    标签控件
    信息提示框
    循环
    数组
    switch
    成员局部变量
    变量
  • 原文地址:https://www.cnblogs.com/xuexidememeda/p/10329643.html
Copyright © 2011-2022 走看看