Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使矩形的图像变成圆形?_Android_Android Studio_Android Animation - Fatal编程技术网

Android 如何使矩形的图像变成圆形?

Android 如何使矩形的图像变成圆形?,android,android-studio,android-animation,Android,Android Studio,Android Animation,我有一个RecyclerView,里面有一个图像,我希望图像缩小到它大小的一半,同时它变成一个圆形,然后我希望动画能够持续一定的时间 任何帮助都将不胜感激。使用毕加索设置图像 Picasso.with(context) .load(imgSource) .transform(new CircleTransform()) .resize(128, 128) .centerCrop() .into(imageView); 用于转换类 public class Circl

我有一个RecyclerView,里面有一个图像,我希望图像缩小到它大小的一半,同时它变成一个圆形,然后我希望动画能够持续一定的时间


任何帮助都将不胜感激。

使用毕加索设置图像

Picasso.with(context)
  .load(imgSource)
  .transform(new CircleTransform())
  .resize(128, 128)
  .centerCrop()
  .into(imageView);
用于转换类

    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";
    }
}
依赖

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

使用毕加索设置图像

Picasso.with(context)
  .load(imgSource)
  .transform(new CircleTransform())
  .resize(128, 128)
  .centerCrop()
  .into(imageView);
用于转换类

    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";
    }
}
依赖

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

如果需要额外的细节,请评论,我会尽我所能。提前谢谢。如果需要额外的细节,请评论,我会尽我所能。先谢谢你,总之你是个天才。但我想知道你是否知道如何减缓过渡。此外,它变得模糊不是一个大问题,但如果你知道如何修复它将不胜感激。最后,出于兴趣,什么是调整大小(128128);是什么意思?使用.load函数,我想知道你会在一个有各种图像的回收器视图中放些什么?用一句话来说,你是个天才。但我想知道你是否知道如何减缓过渡。此外,它变得模糊不是一个大问题,但如果你知道如何修复它将不胜感激。最后,出于兴趣,什么是调整大小(128128);是什么意思?使用.load函数,我想知道你会在有各种图像的回收器视图中放些什么?