OneStepDemo
Github地址:
这是一个适配Smartisan OS一步Demo,实现文字、链接、单图、多图拖拽功能,打破应用边界,操作更便捷。
This is a one-step demo for Smartisan OS. It implements text, link, single-picture, multi-picture drag and drop functions, breaks application boundaries and makes operation more convenient.
软件截图
Demo视频演示
使用教程
1、初始化OneStepHelper
将 添加到你的项目 /libs
目录下,添加依赖并同步
2、初始化OneStepHelper
OneStepHelper mOneStepHelper = OneStepHelper.getInstance(OnestepDragActivity.this);复制代码
3、设置view长按事件,在onLongClick中设置拖拽
views[i].setOnLongClickListener(this);复制代码
@Overridepublic boolean onLongClick(View view){ switch (view.getId()){ case R.id.txt_link_style: //链接类型 if (mOneStepHelper.isOneStepShowing()){ mOneStepHelper.dragLink(view, mBinding.txtLinkStyle.getText().toString().trim()); } break;}复制代码
基础API:
1、文字类型
mOneStepHelper.dragText(View view, CharSequence text)复制代码
2、链接类型
mOneStepHelper.dragLink(View view, CharSequence link)复制代码
3、单图类型
mOneStepHelper.dragImage(View view, File file, String mimeType)复制代码
4、多图类型
mOneStepHelper.dragMultipleImages(View view, File[] files, String[] mimeTypes)复制代码
5、文件类型
mOneStepHelper.dragFile(View view, File file, String mimeType, String displayname)复制代码
高级自定义API:
1、文字类型自定义拖拽缩略图
mOneStepHelper.dragText(View view, CharSequence text, Bitmap background, Bitmap content, Bitmap avatar)复制代码
2、文件类型自定义拖拽缩略图
mOneStepHelper.dragFile(View view, File file, String mimeType, Bitmap background, Bitmap content, Bitmap avatar)复制代码
3、单图类型自定义拖拽缩略图
mOneStepHelper.dragImage(View view, Bitmap content, File file, String mimeType)复制代码
4、自定义气泡显示位置
mOneStepHelper.showDragPopupText(View view, OnDragListener dragListener, String content, int x, int y)复制代码
注意事项:
1、进行图片拖拽、文件拖拽时,请在AndroidManifest.xml
申请权限
复制代码
2、进行图片拖拽分享时,请先将图片保存到本地 , 测试保存代码示例:
/** * 保存目录 */private static final String SAMPLE_FILE_DIR = Environment.getExternalStorageDirectory() + "/OneStepDemo/";/** * 创建文件 * @param filename 文件名称 * @return */private File createTestFileIfNotExists(String filename){ File testFile = new File(SAMPLE_FILE_DIR, filename); if (!testFile.exists()) { try { testFile.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } return testFile;}复制代码
/** * 将图片从assets中拷贝到sd卡中 * @param assetFile 文件 * @return */private void copyAssetFile2Sdcard(String assetFile){ InputStream inputStream = null; OutputStream outputStream = null; try { inputStream = getAssets().open(assetFile); String destFilePath = createTestFileIfNotExists(assetFile).getAbsolutePath(); File f = new File(destFilePath); outputStream = new FileOutputStream(f); byte[] buf = new byte[1024 * 4]; int len = 0; while ((len = inputStream.read(buf)) > 0) { outputStream.write(buf, 0, len); } outputStream.flush(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (outputStream != null) { outputStream.close(); } if (inputStream != null) { inputStream.close(); } } catch (IOException e) { e.printStackTrace(); } }}复制代码
TODO
- [ ] 接收拖拽的图片、文字、链接、文件;
项目Github地址:
官方GITHUB主页: