Android使用uCrop实现图片裁剪功能

本文介绍了如何在Android应用中使用uCrop库实现图片裁剪功能,包括调用第三方应用、自定义裁剪的实现方式,以及uCrop的配置、迁移至androidx、界面定制等步骤。在定制过程中,解决了不显示ActionBar、裁剪gif图片的问题,并优化了安装包大小。
摘要由CSDN通过智能技术生成

一、目标

在这里插入图片描述

二、下载地址

神马笔记最新版本下载:【神马笔记 版本1.5.0——笔名功能.apk

三、功能设计

笔名中包含2个图片信息——头像和图片签名。

头像比例为1:1,显示为圆形图片。

图片签名比例为2.164:1,显示为长条形矩形图片。

用户可以选择任意的图片,然后通过裁剪图片,转化为目标图片尺寸比例。

四、准备工作

图片裁剪实现方式有2种

  • 调用第三方应用
  • 自己动手写一个

1. 使用com.android.camera.action.CROP调用第三方应用

可以通过设置Intent的Action为com.android.camera.action.CROP来调用第三方应用。

具体的调用方式参考《Android中com.android.camera.action.CROP(图片裁剪)所有属性》。

2. 实现自定义的裁剪功能

虽然是自己动手写一个,当然不是指从零开始实现。我们在GitHub选择一个开源的项目,然后在这基础上进行修改以提高开发效率。

推荐使用uCrop

GitHub项目地址:https://github.com/Yalantis/uCrop

开发者Yalantis的官方介绍:https://yalantis.com/blog/introducing-ucrop-our-own-image-cropping-library-for-android/

五、组合起来

uCrop功能强大并且提供了丰富的配置接口。

通常情况下直接调用uCrop提供的接口即可实现需要的功能。

因为目标设计中要求不显示ActionBar,uCrop并没有提供这样的设置接口,因此采用源代码的形式来使用uCrop。

1. 迁移到androidx

从GitHub clone下来的项目使用的是support包,而主项目工程使用的是androidx包。

要做的第一个便是将uCrop迁移到androidx。

2. 不使用native

从GitHub clone下来的源码,使用的是native的方式。经测试native方式存在2个问题。

  • 增加了安装包体积(0.5M~1.5M,根据打包的so文件而定)
  • 遇到gif裁剪不成功的情况。
    在这里插入图片描述对上图尽心裁剪时,发现裁剪失败,原因未明。

3. 定制界面

  1. 隐藏ActionBar
  2. 增加操作提示——移动和缩放
  3. 增加操作按钮——取消、选取
  4. 使用沉浸式全屏模式

得益于uCrop清晰的代码结构,很容易完成以上功能,实现目标功能。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:app="http://schemas.android.com/apk/res-auto"
                xmlns:tools="http://schemas.android.com/tools"
                android:id="@+id/ucrop_photobox"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

    <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/ucrop_color_toolbar"
            android:minHeight="?attr/actionBarSize"
            
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值