开启组件
设置组件委托
使用下面代码创建组件委托,并将得到的委托对象传递给获取组件对象时调用的 editMultipleCommponent()
方法。
// 组件委托 TuSdkComponentDelegate delegate = new TuSdkComponentDelegate() { @Override public void onComponentFinished(TuSdkResult result, Error error, TuFragment lastFragment) { TLog.d("onEditMultipleComponentReaded: %s | %s", result, error); } };
获取组件对象
组件对象使用 TuSdkGeeV1 类中的 editMultipleCommponent()
方法获得,该方法有两个版本的重载方式,分别是
editMultipleCommponent(TuFragment fragment, TuSdkComponentDelegate delegate)
和
editMultipleCommponent(Activity activity, TuSdkComponentDelegate delegate)
因此获取组件对象就有两种方式,分别是使用 Activity 和 TuFragment 的对象作为 editMultipleCommponent()
方法的第一个参数,该方法的第二个参数即是上面定义的组件委托。
这两种方式都会新打开一个 Activity,并将代表组件的 Fragment 附在该 Activity 上面,唯一的不同只是在打开和关闭编辑组件时使用的动画效果不同。
如下面代码所示, lastFragment
是传递进来的 TuFragment 类型的参数,当 lastFragment
为空的时候就取得一个 Activity 的实例并将其传递到 editMultipleCommponent()
方法中;而当 lastFragment
不为空的时候就将 lastFragment
传递给 editMultipleCommponent()
方法:
TuEditMultipleComponent component = null; if (lastFragment == null) { component = TuSdkGeeV1.editMultipleCommponent(this.componentHelper.activity(), delegate); } else { component = TuSdkGeeV1.editMultipleCommponent(lastFragment, delegate); }
开启组件
获得组件对象之后下一步就该是为组件设置图片了,设置图片有三种方式,分别是 setImage(result.image)
、setImageSqlInfo(result.imageSqlInfo)
以及 setTempFilePath(result.imageFile)
。
同时也可以设置组件执行完成后自动关闭,最后调用 showComponent()
方法开启组件,如下代码所示:
// 设置图片 component.setImage(result.image) // 设置系统照片 .setImageSqlInfo(result.imageSqlInfo) // 设置临时文件 .setTempFilePath(result.imageFile) // 在组件执行完成后自动关闭组件 .setAutoDismissWhenCompleted(true) // 开启组件 .showComponent();
常见属性设置
获取属性控制对象
可以通过配置 TuEditMultipleOption 来指定照片美化组件的各个属性,通过以下方式获得 TuEditMultipleOption 的对象:
TuEditMultipleOption option = component.componentOption().editMultipleOption();
指定界面控制器类型
自定义界面的时候,需要使用该方法将继承 TuEditMultipleFragment 类的子类指定给组件,这样组件就会自动调用子类中重写的相应方法。
option.setComponentClazz(TuEditMultipleFragment.class);
指定界面视图资源ID
需要给控制器重新指定一个主界面资源ID的时候,使用该方法将新的视图ID指定给组件。
照片美化组件界面布局文件是 tusdk_impl_component_edit_multiple_fragment.xml
,放在 TuSDK/res/layout 目录下,建议用户修改界面的时候不要直接在该文件上做修改,而是把该文件复制到自己的项目下的 res/layout 目录中并重命名,这样可以防止将来升级 SDK 的时候造成覆盖。
option.setRootViewLayoutId(TuEditMultipleFragment.getLayoutId());
将处理结果保存到相册
option.setSaveToAlbum(true);
将处理结果保存到临时文件
option.setSaveToTemp(true);
在控制器结束后自动删除临时文件
option.setAutoRemoveTemp(true);
禁用操作步骤记录
如果想去除编辑界面上代表前进和后退的两个按钮,可以禁用操作步骤记录,这样用户就不能再回退到上一次编辑效果。
option.setDisableStepsSave(true);
设置最大输出图片边长
默认不限制最大输出图片边长,使用该属性设置输出图片的最大边长,图片长宽将按照原图片长宽比率变化。
option.setLimitSideSize(800);
限制图片最大输出尺寸为设备屏幕尺寸
默认不限制最大输出图片尺寸,使用该属性限制最大输出图片尺寸为屏幕大小,如果设置了LimitSideSize, 将忽略此属性。
option.setLimitForScreen(true);
禁用功能选项
照片美化组件中的八个功能选项可以选择启用或者禁用,可以使用下面的设置禁用贴纸功能:
option.disableModule(TuEditActionType.TypeSticker);
配置功能选项
照片美化组件中包括了十一个功能选项,分别是:
贴纸
滤镜
美颜
裁切
涂抹
调整
模糊
光圈
圣光
暗角
锐化
所有的功能选项均可以设置开启或者禁用,可以使用下面方式禁用贴纸功能选项:
component.componentOption().editMultipleOption().disableModule(TuEditActionType.TypeSticker);
同时也可以在组件打开之前对每个功能选项的属性分别进行设置,下面列出几个常用到的配置。
只使用指定的滤镜
// 需要显示的滤镜名称列表 (如果为空将显示所有自定义滤镜, 可选) String[] filters = { "SkinNature", "SkinPink", "SkinJelly", "SkinNoir", "SkinRuddy", "SkinPowder", "SkinSugar"}; component.componentOption().editFilterOption().setFilterGroup(Arrays.asList(filters));
禁用滤镜历史记录
component.componentOption().editFilterOption().setEnableFiltersHistory(false);
显示指定的裁切比例类型
裁剪组件提供了八种比例类型,分别是:ratio_orgin
ratio_1_1
ratio_2_3
ratio_3_4
ratio_9_16
ratio_3_2
ratio_4_3
ratio_16_9
默认只显示了前五种比例;如果想要显示所有的比例类型,可以如下设置:
component.componentOption().editCuterOption().setRatioTypeList(RatioType.ratioTypes);
同时也支持设置裁切界面只显示指定的一个或多个比例类型,比如设置只显示 9:16
类型和 1:1
类型:
component.componentOption().editCuterOption().setRatioTypeList(new int[]{RatioType.ratio_9_16, RatioType.ratio_1_1});
裁切界面禁用镜像或旋转功能
可以设置裁切界面禁用镜像或旋转功能,如下:
// 禁用镜像功能 component.componentOption().editCuterOption().setEnableMirror(false); // 禁用旋转功能 component.componentOption().editCuterOption().setEnableTrun(false);
获取编辑结果
照片美化组件可以通过设置不同的属性管理编辑结果的输出方式,可以通过下面三种方式获得编辑后的结果:
获取图片的 Bitmap 对象,此方式将不保存图片
获取图片的存储路径,此方式会将图片保存在相册中
将图片保存在临时文件中,并获取临时文件
获取编辑结果的 Bitmap 对象
需要进行如下设置:
// 是否保存到相册 component.componentOption().editMultipleOption().setSaveToAlbum(false); // 是否保存到临时文件 component.componentOption().editMultipleOption().setSaveToTemp(false);
该方式将不会保存处理结果。
随后可以在所设置的组件委托中的 onComponentFinished(TuSdkResult result, Error error, TuFragment lastFragment)
方法中使用 result.image
获取图片的 Bitmap 对象。
获取编辑结果的存储路径
需要进行如下设置:
// 是否保存到相册 component.componentOption().editMultipleOption().setSaveToAlbum(true); // 是否保存到临时文件 component.componentOption().editMultipleOption().setSaveToTemp(false);
该方式会将处理结果保存到相册中。
同时也可以设置
component.componentOption().editMultipleOption().setSaveToAlbumName("TuSDKEdit");
将图片保存到名称为 TuSDKEdit
的相册中。
同时,此方法还可以使您获取到处理后的照片的其他属性,比如拍摄时间、文件长宽等,具体可以参看 ImageSqlInfo 类的API。
随后可以在所设置的组件委托中的 onComponentFinished(TuSdkResult result, Error error, TuFragment lastFragment)
方法中使用 result.imageSqlInfo.path
获取图片路径。
获取编辑结果所在的临时文件
需要进行如下设置:
// 是否保存到相册 component.componentOption().editMultipleOption().setSaveToAlbum(false); // 是否保存到临时文件 component.componentOption().editMultipleOption().setSaveToTemp(true);
该方式将会把处理结果保存到临时文件,同时也可以设置
// 自动清理临时文件 component.componentOption().editMultipleOption().setAutoRemoveTemp(true);
这样在处理完成之后将会自动删除临时文件。
随后可以在所设置的组件委托中的 onComponentFinished(TuSdkResult result, Error error, TuFragment lastFragment)
方法中使用 result.imageFile
获取临时文件。