Android Glide transform圆形图CircleCrop动态代码描边绘制外框线并rotateImage旋转,Kotlin

Android Glide transform圆形图CircleCrop动态代码描边绘制外框线并rotateImage旋转,Kotlin

XML 复制代码
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:padding="2px"
        android:background="@drawable/ic_launcher_background"
        android:src="@drawable/ic_launcher_foreground" />

</FrameLayout>

注意,要用padding而不是margin,padding的值2px和kotlin代码里面的描边线宽度stroke一直。

Kotlin 复制代码
import android.graphics.Bitmap
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
import android.os.Bundle
import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool
import com.bumptech.glide.load.resource.bitmap.CenterCrop
import com.bumptech.glide.load.resource.bitmap.CircleCrop
import com.bumptech.glide.load.resource.bitmap.TransformationUtils


class MainActivity : AppCompatActivity() {
    companion object {
        const val SIZE = 200
        const val STROKE_WIDTH = 2F //描边宽度为2px
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val image = findViewById<ImageView>(R.id.image)

        GlideApp.with(this)
            .load(R.mipmap.pic4)
            .transform(CenterCrop(), MyCircleCrop())
            .error(android.R.drawable.stat_notify_error)
            .override(SIZE)
            .into(image)
    }

    class MyCircleCrop : CircleCrop() {
        override fun transform(
            pool: BitmapPool,
            toTransform: Bitmap,
            outWidth: Int,
            outHeight: Int
        ): Bitmap {
            val bmp = TransformationUtils.circleCrop(pool, toTransform, outWidth, outHeight)

            val p = Paint()
            p.isAntiAlias = true
            p.style = Paint.Style.STROKE //描边
            p.color = Color.RED
            p.strokeWidth = STROKE_WIDTH

            val cv = Canvas(bmp)
            cv.drawCircle(
                (outWidth / 2).toFloat(),
                (outHeight / 2).toFloat(),

                //半径取宽和高最小的。同时减去描边占掉的宽度,否则会把边画到外面。
                minOf(outWidth, outHeight) / 2 - STROKE_WIDTH,

                p
            )

            return TransformationUtils.rotateImage(bmp, -90) //逆时针旋转90度。
        }
    }
}

Android transform旋转rotate圆角矩形图roundedCorners,Kotlin-CSDN博客文章浏览阅读63次。文章浏览阅读369次。文章浏览阅读1.2w次。引入: implementation 'com.github.bumptech.glide:glide:4.9.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'Android标准Glide加载圆形图和圆角矩形图_android glide加载圆角-CSDN博客。Glide transform CircleCrop()圆图,Kotlin。https://blog.csdn.net/zhangphil/article/details/134149777Glide transform CircleCrop()圆图,Kotlin-CSDN博客文章浏览阅读383次。文章浏览阅读1.2w次。引入: implementation 'com.github.bumptech.glide:glide:4.9.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'Android标准Glide加载圆形图和圆角矩形图_android glide加载圆角-CSDN博客。Glide transform CircleCrop()圆图,Kotlin。https://blog.csdn.net/zhangphil/article/details/134147774

相关推荐
ideaout技术团队38 分钟前
android集成react native组件踩坑笔记(Activity局部展示RN的组件)
android·javascript·笔记·react native·react.js
shaominjin1231 小时前
单例模式:设计模式中的“独一无二“之道
android·单例模式·设计模式
千里马学框架2 小时前
windows系统上aosp15上winscope离线html如何使用?
android·windows·html·framework·安卓窗口系统·winscope
码住懒羊羊2 小时前
【C++】模板进阶 | 继承
android·java·c++
urkay-2 小时前
Android 线程详解
android·java·kotlin·iphone·androidx
aqi002 小时前
FFmpeg开发笔记(八十七)采用Kotlin的手机开源播放器VLC-Android
android·ffmpeg·音视频·流媒体
峥嵘life3 小时前
Android EDLA项目导入mainline包后蓝牙签名报错分析解决
android·gitee
灵猫小西4 小时前
Android耗时卡顿原因排查工具Profiler
android·profiler·耗时卡顿
gfdgd xi4 小时前
好消息:KMRE 安卓模拟器现可在Debian/GXDE使用
android·python·架构·bug·deepin·龙芯
La Pulga5 小时前
【STM32】FLASH闪存
android·c语言·javascript·stm32·单片机·嵌入式硬件·mcu