# DynamicGrid **Repository Path**: chinasoft2_ohos/DynamicGrid ## Basic Information - **Project Name**: DynamicGrid - **Description**: 图标拖拽排序组件 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2021-05-18 - **Last Updated**: 2022-09-06 ## Categories & Tags **Categories**: harmonyos-advanced **Tags**: None ## README # DynamicGrid #### 项目介绍 - 项目名称:DynamicGrid - 所属系列:openharmony的第三方组件适配移植 - 功能:图标拖拽排序组件 - 项目移植状态:主功能完成 - 调用差异:有(取消方法 `startEditMode` ,新增 `setColumn` 和 `setData`取消方法 `setOnDropListener`,新增 `onKeyUp`) - 开发版本:sdk6,DevEco Studio2.2 beta1 - 基线版本:基于master分支 #### 效果演示 ![art1](arts/arts1.gif) #### 安装教程 1.在项目根目录下的build.gradle文件中, ```groovy // 添加maven仓库 repositories { maven { url 'https://s01.oss.sonatype.org/content/repositories/release/' } } ``` 2.在entry模块的build.gradle文件中, ```groovy // 添加依赖库 dependencies { implementation 'com.gitee.chinasoft_ohos:DynamicGrid:1.0.0' } ``` 在sdk6,DevEco Studio2.2 beta1下项目可直接运行 如无法运行,删除项目.gradle,.idea,build,gradle,build.gradle文件, 并依据自己的版本创建新项目,将新项目的对应文件复制到根目录下 #### 使用说明 添加布局 ``` xml ``` 创建对象并设置参数 **相关方法:** * **setColumn** 设置每行的列数 * **setData** 绑定数据 ```java @Override public void onStart(Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_ability_main); gridView = (DragGridView) findComponentById(ResourceTable.Id_my_gridView); List upperItemList = new ArrayList<>(); for (int i = 0; i < 100; i++) { /** * GridItemInfo 参数 * itemText 文字 * iconId 图片ID * textSize 字体大小 */ upperItemList.add(new GridItemInfo(sCheeseStrings[i],org.askerov.dynamicgrid.ResourceTable.Media_icon,25)); } //设置列数 gridView.setColumn(5); //设置数据 gridView.setData(upperItemList); } public static final String[] sCheeseStrings = { "Abbaye de Belloc", "Abbaye du Mont des Cats", "Abertam", "Abondance", "Ackawi", "Acorn", "Adelost", "Affidelice au Chablis", "Afuega'l Pitu", "Airag", "Airedale", "Aisy Cendre", "Allgauer Emmentaler", "Alverca", "Ambert", "American Cheese"}; ``` 使用onKeyUp来监听返回键退出拖拽动画 ```java @Override public boolean onKeyUp(int keyCode, KeyEvent keyEvent) { switch (keyEvent.getKeyCode()) { case KeyEvent.KEY_BACK: if (!gridView.isBack()) { gridView.resetAnimation(); gridView.setBack(true); return true; } } return false; } ``` #### 测试信息 CodeCheck代码测试无异常 CloudTest代码测试无异常 病毒安全检测通过 当前版本demo功能与原组件基本无差异 #### 版本迭代 - 1.0.0