同步操作将从 ISRC_OHOS/ImageCropper_ohos 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
……
}
通过如下代码跳转到组件提供的AbilitySlice——CropImageAbility
CropImage.activity()
.setContext(this)
.setSource(ResourceTable.Media_cat_square)
.setBundleName("com.huawei.mytestproject")
.setAbilityName("com.huawei.mytestproject.MainAbility")
.setRequset_code(1234)
.start(super.getAbility(),this);
注:
activity() 方法为初始化类。
setContext() 方法需要传入一个上下文环境。
setResource() 方法需要传入期待被裁减图片的id (目前只能使用在ResourceTable中注册过的图片,并且必须为正方形图片,图片位置如下所示)。
setBundleName() 与setAbilityName() 方法即为跳转到裁剪页面以后,想跳转回来的界面的包名以及类名 。如在MainAbilitySlice中写了这段代码并执行,就会跳转到组件自带的AbilitySlice,组件自带的界面也有一些按钮实现跳转回来的方法,所以需要设置想要跳转回来的Ability的名字。
setRequest_code() 方法则为请求参数,如例子填写即可。
start() 方法需要传入ability和context。
在组件提供的界面中进行裁剪图片翻转图片等操作
组件界面会根据setBundleName() 与setAbilityName()传入的包名和类名进行跳转。
跳转回主页面时intent中默认塞入了两个参数cropFlag,cropStatus。cropFlag为布尔型变量,表示是否裁剪成功。cropStatus为int型变量,表示裁剪状态。0为默认值,表示还未进行页面跳转,1表示取消裁剪,2表示裁剪成功,intent中有数据。可以参考如下示例进行使用,或者自定义其他功能实现。
if(intent.getIntParam("cropStatus",0) == 0){
text.setText("欢迎使用");
}else if(intent.getIntParam("cropStatus",0) == 1){
text.setText("剪裁取消");
}else if(intent.getIntParam("cropStatus",0) == 2){
text.setText("剪裁成功");
}
获得裁剪结果
裁剪后组件提供了两个方法。
方法一:
CropImage.handleImage(int result_code ,Component image)
参数 int result_code(可以从intent中获得,如下所示)
int result_code = result.getIntParam("result_code" , 0);
参数Component image 需要传入一个空的新new的Component。
此方法会对component进行处理,塞入裁剪后的图片,以及图片旋转等等。
方法二:
PixelMap croppedPixelMap = CropImage.getCroppedPixelMap();
此方法可以返回裁剪后的PixelMap,用户可以根据需要自行进行处理。
MainAbilitySlice的具体使用可以参考如下代码:
public class MainAbilitySlice extends AbilitySlice {
//定义一个图片
Component image;
//定义一个文本
Text text;
@Override
public void onStart(Intent intent) {
//重写onstart方法并加载布局文件
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_MainAbility_layout);
//获取图片对象对应的component
image = findComponentById(ResourceTable.Id_result_image);
/*
* 如果接收的cropFlag为true
* 处理剪裁后的图片
* 否则跳过
*/
if(intent.getBooleanParam("cropFlag",false)){
handleCrop(intent);
}
/* 自定义--获取文本对象对应的component
* 根据intent里面的cropStatus来显示不同的文本
* 0表示未接收到数据
* 1表示剪裁取消
* 2表示剪裁成功 有数据
*/
text = (Text) findComponentById(ResourceTable.Id_text);
if(intent.getIntParam("cropStatus",0) == 0){
text.setText("欢迎使用");
}else if(intent.getIntParam("cropStatus",0) == 1){
text.setText("剪裁取消");
}else if(intent.getIntParam("cropStatus",0) == 2){
text.setText("剪裁成功");
}
//获取button对象对应的component
Button button = (Button) findComponentById(ResourceTable.Id_button);
// 设置button的属性及背景
ShapeElement background = new ShapeElement();
background.setRgbColor(new RgbColor(0, 125, 255));
background.setCornerRadius(25);
button.setBackground(background);
if (button != null) {
// 绑定点击事件
button.setClickedListener(new Component.ClickedListener() {
public void onClick(Component v) {
begincrop();
}
});
}
}
public void begincrop(){
CropImage.activity()
.setContext(this)
.setSource(ResourceTable.Media_cat_square)
.setBundleName("com.huawei.mytestproject")
.setAbilityName("com.huawei.mytestproject.MainAbility")
.setRequset_code(1234)
.start(super.getAbility(),this);
}
//处理剪裁结果
private void handleCrop(Intent result) {
int resultImg = result.getIntParam("resultImg",0);
int result_code = result.getIntParam("result_code" , 0);
if(resultImg != 0){
CropImage.handleImage(result_code , image);
//PixelMap croppedPixelMap = CropImage.getCroppedPixelMap();
}
}
@Override
public void onActive() {
super.onActive();
}
@Override
public void onForeground(Intent intent) {
super.onForeground(intent);
}
}
v0.2.0-alpha 修复了由于module config文件问题导致的项目不可用
v0.1.0-alpha
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。