Kotlin实战练习——自定义圆形图片三种实现方式

Kotlin实战练习——自定义圆形图片三种实现方式

前言

如今Kotlin越来越重要,本人也开始了Kotlin的学习。为了检测学习效果,加深学习印象,同时回顾一下以前的一些知识点,决定从写一个自定义圆形图片开始入手。圆形图片写法有很多,这里介绍最主要的三种方式,如果能掌握这三种方式,那么其他的自定义控件应该也都很好实现了。

1. XferMode方式

知识点

1. 关于XferMode

XferMode是一种图片重叠时的处理方式,主要是在图片重叠时,由用户来选取如何对重叠的图片进行处理,XferMode的模式有如下几种:

XferMode

目前,XferMode有三个子类:AvoidXfermode, PixelXorXfermodePorterDuffXfermode,其中前两个已过时,现在一般用PorterDuffXfermode

2. Canvas和Bitmap的关系

Canvas类似于画板,Bitmap类似于画布,最终我们呈现给别人看的东西,是画布上的内容,也就是Bitmap,但是我们要在Bitmap上画东西,则需要画板的支撑。

3. drawable

drawable主要作用是提供一个可绘制区域和draw函数用来绘制需要的图像、颜色等,在ImageView内,我们只需要关心它的两个方法:

  • setBounds: 可绘制区域;
  • draw: 将内容绘制到画板上的画布中。

实现思路

  1. 先获取一个圆形的Bitmap对象;

  2. 将这个圆形的Bitmap对象覆盖在图片上;

  3. 通过XferMode中的DST_IN模式,选

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个示例代码,用于在Android Kotlin中更换用户头像并从相册选择或拍摄照: ``` //在此处声明变量 private lateinit var profileImage: ImageView //在onCreate方法中初始化变量 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) profileImage = findViewById(R.id.profile_image) //添加一个点击事件监听器,当用户点击头像时,将弹出一个对话框,询问用户是否从相机或相册中选择照 profileImage.setOnClickListener { val options = arrayOf<CharSequence>("拍照", "从相册选择") val builder = AlertDialog.Builder(this) builder.setTitle("选择图来源") builder.setItems(options) { dialog, item -> when { options[item] == "拍照" -> { val takePictureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE) startActivityForResult(takePictureIntent, 1) } options[item] == "从相册选择" -> { val pickPhotoIntent = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI) startActivityForResult(pickPhotoIntent, 2) } } } builder.show() } } //在activity中添加以下方法,用于处理从相机或相册返回的结果 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (resultCode == Activity.RESULT_OK) { when (requestCode) { 1 -> { val imageBitmap = data?.extras?.get("data") as Bitmap profileImage.setImageBitmap(imageBitmap) } 2 -> { val selectedImage = data?.data profileImage.setImageURI(selectedImage) } } } } ``` 该代码将在用户点击头像时,弹出一个对话框,询问用户是否从相机或相册中选择照。如果用户选择拍照,将启动相机应用程序并允许用户拍摄照。如果用户选择从相册选择,将启动相册应用程序并允许用户选择照。一旦用户选择了照,将在ImageView中显示所选照

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值