当前位置: 首页 > news >正文

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

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

<?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"><ImageViewandroid: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一直。

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.TransformationUtilsclass MainActivity : AppCompatActivity() {companion object {const val SIZE = 200const 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 = truep.style = Paint.Style.STROKE //描边p.color = Color.REDp.strokeWidth = STROKE_WIDTHval 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

http://www.lryc.cn/news/228665.html

相关文章:

  • 【ruoyi】微服务关闭登录验证码
  • AI:78-基于深度学习的食物识别与营养分析
  • 日本it培训班,如何选择靠谱的赴日IT培训班?
  • 51单片机PCF8591数字电压表LCD1602液晶显示设计( proteus仿真+程序+设计报告+讲解视频)
  • 缅因州政府通知130万人MOVEit数据泄露事件
  • 4.2 onnx简化模型结构
  • 通用的链栈实现(C++)
  • 物联网AI MicroPython学习之语法 bluetooth蓝牙
  • React中的key有什么作用?
  • 初认识vue,v-for,v-if,v-bind,v-model,v-html等指令
  • Java 算法篇-深入了解单链表的反转(实现:用 5 种方式来具体实现)
  • Android 10.0 系统内存优化之修改dalvik虚拟机的内存参数
  • Docker+K8s基础(重要知识点总结)
  • IDEA 关闭SpringBoot启动Logo/图标
  • 提供话费充值接口 话费快充慢充/API独立接口,商城/小程序/公众号合作
  • [N-133]基于springboot,vue小说网站
  • 计算机网络:概述
  • 服务号怎么升级订阅号
  • 11.读取文件长度-fseek和ftell函数的使用
  • 视觉大模型DINOv2:自我监督学习的新领域
  • Java事务详解
  • el-table实现展开当前行时收起上一行的功能
  • Go的优雅退出
  • 【KVM-6】KVM/QEMU软件栈
  • 硬件知识2
  • 【Java 进阶篇】JQuery DOM操作:通用属性操作的绝妙魔法
  • 在任何机器人上实施 ROS 导航堆栈的指南
  • Android 中注解的使用
  • 我国陆地遥感卫星发展现状与展望
  • arcgis基础篇--实验