付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、蛟龙腾飞学习分享材料HarmonyOS应用开发-Doodle图像编辑主键体验演示视频:效果图如下所示: 该组件有画笔缩放,旋转等功能,可以自定义布局,掉用其接口完成图片编辑的功能。部分代码:public class MainAbility extends Ability private static final int PERMISSION_REQUEST_INTERACTIVE = 1; private static final int REQ_CODE_SELECT_IMAGE = 100; private static final int REQ_CODE_DOODLE = 101; p
2、rivate final static int mDuration = 20000; private Text mPath; private Image mSaveImg; private DataAbilityHelper mHelper; private boolean mIsOpenImageSelector = false; private final static String mPermmReadMedia = ohos.permission.READ_MEDIA; Override public void onStart(Intent intent) super.onStart(
3、intent); setUIContent(ResourceTable.Layout_ability_main); requestPermissionsFromUser(new StringSystemPermission.READ_USER_STORAGE, SystemPermission.WRITE_USER_STORAGE, SystemPermission.READ_MEDIA, SystemPermission.WRITE_MEDIA, SystemPermission.MEDIA_LOCATION, PERMISSION_REQUEST_INTERACTIVE); mSaveIm
4、g = (Image) findComponentById(ResourceTable.Id_img); findComponentById(ResourceTable.Id_btn_select_image).setClickedListener(new Component.ClickedListener() Override public void onClick(Component component) checkPermission(); ); findComponentById(ResourceTable.Id_btn_guide).setClickedListener(new Co
5、mponent.ClickedListener() Override public void onClick(Component component) Intent intent = new Intent(); Operation operation = new Intent.OperationBuilder() .withDeviceId().withBundleName(getBundleName() .withAbilityName(com.example.doodledemo.guide.DoodleGuideAbility).build(); intent.setOperation(
6、operation); startAbility(intent); ); findComponentById(ResourceTable.Id_btn_mosaic).setClickedListener(new Component.ClickedListener() Override public void onClick(Component component) Intent intent = new Intent(); Operation operation = new Intent.OperationBuilder() .withDeviceId().withBundleName(ge
7、tBundleName() .withAbilityName(com.example.doodledemo.MosaicDemo).build(); intent.setOperation(operation); startAbility(intent); ); findComponentById(ResourceTable.Id_btn_scale_gesture).setClickedListener(new Component.ClickedListener() Override public void onClick(Component component) Intent intent
8、 = new Intent(); Operation operation = new Intent.OperationBuilder() .withDeviceId().withBundleName(getBundleName() .withAbilityName(com.example.doodledemo.ScaleGestureItemDemoAbility) .build(); intent.setOperation(operation); startAbility(intent); ); mPath = (Text) findComponentById(ResourceTable.I
9、d_img_path); private void checkPermission() if (verifySelfPermission(mPermmReadMedia) != IBundleManager.PERMISSION_GRANTED) / 应用未被授予权限 if (canRequestPermission(mPermmReadMedia) / 是否可以申请弹框授权(首次申请或者用户未选择禁止且不再提示) requestPermissionsFromUser( new StringmPermmReadMedia, PERMISSION_REQUEST_INTERACTIVE); el
10、se if (!mIsOpenImageSelector) Intent intent = new Intent(); intent.setParam(ImageSelectorActivity.KEY_IS_MULTIPLE_CHOICE, false); intent.setParam(ImageSelectorActivity.KEY_MAX_COUNT, Integer.MAX_VALUE); Operation operation = new Intent.OperationBuilder() .withDeviceId() .withBundleName(getBundleName
11、() .withAbilityName(com.example.doodle.imagepicker.ImageSelectorActivity) .build(); intent.setOperation(operation); mIsOpenImageSelector = !mIsOpenImageSelector; startAbilityForResult(intent, REQ_CODE_SELECT_IMAGE); Override public void onRequestPermissionsFromUserResult(int requestCode, String perm
12、issions, int grantResults) super.onRequestPermissionsFromUserResult(requestCode, permissions, grantResults); if (requestCode = PERMISSION_REQUEST_INTERACTIVE) if (!(grantResults.length 0 & grantResults0 = IBundleManager.PERMISSION_GRANTED) Toast.showLong(this, 请前往“设置”授予“存储访问权限”); Override protected
13、void onOrientationChanged(AbilityInfo.DisplayOrientation displayOrientation) super.onOrientationChanged(displayOrientation); Override protected void onAbilityResult(int requestCode, int resultCode, Intent resultData) super.onAbilityResult(requestCode, resultCode, resultData); if (requestCode = REQ_C
14、ODE_SELECT_IMAGE) mIsOpenImageSelector = false; if (resultData = null) return; if (resultCode = ImageSelectorActivity.RESULT_OK) Intent intent = new Intent(); Uri uri = resultData.getUri(); intent.setUriAndType(uri, null); Operation operation = new Intent.OperationBuilder() .withDeviceId() .withBund
15、leName(getBundleName() .withAbilityName(com.example.doodle.DoodleAbility) .build(); intent.setOperation(operation); startAbilityForResult(intent, REQ_CODE_DOODLE); else if (requestCode = REQ_CODE_DOODLE) if (resultData = null) return; if (resultCode = DoodleAbility.RESULT_OK) Uri uri = resultData.ge
16、tUri(); String path = resultData.getStringParam(DoodleAbility.KEY_IMAGE_PATH); if (TextTool.isNullOrEmpty(path) return; showSavePic(uri); mPath.setText(path); LogUtil.d(onAbilityResult, path= + path); else if (resultCode = DoodleAbility.RESULT_ERROR) ToastDialog toastDialog = new ToastDialog(this);
17、toastDialog.setText(error).setAlignment(1).setDuration(mDuration).show(); private void showSavePic(Uri uri) if (mHelper = null) mHelper = DataAbilityHelper.creator(getContext(); FileDescriptor filedesc = null; try filedesc = mHelper.openFile(uri, r); catch (DataAbilityRemoteException | FileNotFoundException e) e.getMessage(); ImageSource.DecodingOptions decodingOpts = new ImageSource.DecodingOptions(); decodingOpts.desiredSize = new Size(Util.getScreenWidth(this), Util.getScreenHeight(this); ImageSource imageSource = ImageSource.create(filedesc, null); PixelMap pixel
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年学前心理考试题库及答案1套
- 市级机关文印服务中心2025年编外用工招聘备考题库及答案详解一套
- 常熟市中学2026年公开招聘奥林匹克竞赛辅导教师备考题库及参考答案详解1套
- 2026年天津城市建设管理职业技术学院单招职业技能考试题库及答案1套
- 平顶山市2026年度市直机关公开遴选公务员备考题库及完整答案详解一套
- 广东省四会市教育局2026年赴高校招聘教师98人备考题库及一套参考答案详解
- 广东省环境保护宣传教育中心2026年公开招聘编外人员备考题库完整参考答案详解
- 广发证券2026届Fintech校园招聘备考题库完整参考答案详解
- 广州大学2026年第一次公开招聘事业编制管理和教辅人员备考题库及答案详解1套
- 广州市天河区灵秀小学2025年12月公开招聘编外聘用制专任教师二次延迟备考题库及完整答案详解1套
- 医院检查、检验结果互认制度
- 2025年医院物价科工作总结及2026年工作计划
- 2026年高考化学模拟试卷重点知识题型汇编-原电池与电解池的综合
- 2025青海省生态环保产业有限公司招聘11人笔试历年参考题库附带答案详解
- 2025浙江杭州钱塘新区建设投资集团有限公司招聘5人笔试参考题库及答案解析
- 2025年天津市普通高中学业水平等级性考试思想政治试卷(含答案)
- 2025年昆明市呈贡区城市投资集团有限公司及下属子公司第二批招聘(11人)备考核心题库及答案解析
- 2025年中国磁悬浮柔性输送线行业市场集中度、竞争格局及投融资动态分析报告(智研咨询)
- 脑膜瘤患者出院指导与随访
- 学堂在线 雨课堂 学堂云 科研伦理与学术规范 期末考试答案
- 2026年武汉大学专职管理人员和学生辅导员招聘38人备考题库必考题
评论
0/150
提交评论