博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android分享脚手架:Github/EasyShare说明文档
阅读量:6819 次
发布时间:2019-06-26

本文共 1772 字,大约阅读时间需要 5 分钟。

EasyShare是什么

它是一个Android社会化分享脚手架,集成微信,qq,微博分享。

项目地址:
觉得有帮助的可以给个star,有意见或者建议可以提issue,或者发起pr

EasyShare有什么用

利用抽象工厂,工厂方法,桥接模式搭配Java泛型封装的一个简单易扩展的分享组件,无法代替ShareSDK等商业化SDK使用,仅供开发交流探讨,不建议线上项目直接使用,可供开发者参考扩展用。

架构类图

  • IShareContent:分享的内容接口定义,具有share行为,通过桥接模式将share行为交给ISharePlatform执行
  • ISharePlatform:承接分享内容的目标平台,实际分享行为的对象接口
  • IShareModel:分享内容的属性封装,比如标题,图片地址,链接等
  • IShareDataFactory:根据IShareModel生产分享ISharePlatform平台所需的数据,其实现类抽象工厂AbsShareDataFactory定义了生产微信,朋友圈,QQ,微博4个产品族所需的数据函数

结构

  • callback-回调接口定义
  • factory-工厂类,顶级抽象工厂定义生产的所有平台的分享数据函数,拆分维度:以分享分平台为产品族,以分享内容类型为产品线。
  • model-模型类,顶级接口为IShareModel,分享数据所需要的数据模型,在此处新增需要分享的数据模型。
  • platform-分享目标平台,ISharePlatform是目标平台接口,所有衍生平台需实现该接口, 当接入新的分享平台时,需要在此处进行扩展。
  • type-分享数据类型的封装,分享的入口,顶级接口IShareContent,持有Share行为。
  • ui-界面相关类,比如IShareDialog.java,分享选择弹窗的接口类,需在项目中使用的弹窗中实现该接口。
  • wxapi-包名必须是项目包名,此处只做演示参考用。

集成步骤

  1. clone该仓库
  2. 参考DemoActivity

分享代码举例

以位图分享举例(场景:二维码图片分享)

// 1. 分享数据Model组装IShareModel model = new BitmapShareModel() {    @Override    public Bitmap shareBitmap() {            return getShareBitmap();    }};// 2. 实例化分享数据类型IShareContent bitmapShare = ShareContentFactory.newShareContent(platform, model);// 3. 将对应数据分享出去bitmapShare.share(this.activity, new OnShareResultCallback() {    @Override    public void onShareCancel(ISharePlatform platform, IShareContent type) {        // 分享取消    }    @Override    public void onShareFailed(ISharePlatform platform, IShareContent type, int errCode, String errMsg) {        // 分享失败    }    @Override    public void onShareSuccess(ISharePlatform platform, IShareContent type) {        // 分享成功     }});复制代码

当你需要新增分享类型

  1. 扩展IShareModel接口,新增实现类
  2. 扩展IShareContent接口,新增实现类
  3. 扩展AbsShareDataFactory抽象工厂产品线,新增子类生产对应数据进行分享

当你需要新增分享平台

  1. 引入对应平台依赖libs
  2. 扩展ISharePlatform接口,新增一个实现类
  3. 扩展AbsShareDataFactory抽象类产品族(新增抽象函数)及其子类实现
  4. 修改IShareDialog子类实现,新增点击事件

转载地址:http://vwmzl.baihongyu.com/

你可能感兴趣的文章
ace admin模板实现伪无刷新模式的方法
查看>>
LayaAir 自旋转的小球 横向移动
查看>>
翻译WifiConfiguration类
查看>>
Win2008 IIS 7.0+php,MySQL,Zend,phpMyadmin配置图解
查看>>
微博的理想类型(刘德寰)
查看>>
伍雨霏-懂游戏的云服务如何保驾护航
查看>>
姜正林-CIO职业规划点滴感受
查看>>
win8下获取注册表权限
查看>>
js笔试题2
查看>>
Custom TabBarController
查看>>
用Myeclipse创建PhoneGap应用程序
查看>>
Spring Cloud Alibaba基础教程:Nacos配置的多环境管理
查看>>
极乐小程序榜单(第六期)
查看>>
使用Log4j为项目配置日志输出应用详细总结及示例演示.
查看>>
Lua-5.3.2 安装 luasocket 的正确姿势
查看>>
freeswitch实战经验1:服务器向成员主动发起会议邀请
查看>>
python转换文本编码和windows换行符
查看>>
try-catch中导致全局变量无法变化的bug
查看>>
Js中数组的操作
查看>>
浏览器缓存 from memory cache与from disk cache详解
查看>>