Android分享腳手架:Github/EasyShare說明文檔

EasyShare是什麼

它是一個Android社會化分享腳手架,集成微信,qq,微博分享。
項目地址:github.com/xiong-it/Ea…
以爲有幫助的能夠給個star,有意見或者建議能夠提issue,或者發起prjava

EasyShare有什麼用

利用抽象工廠,工廠方法,橋接模式搭配Java泛型封裝的一個簡單易擴展的分享組件,沒法代替ShareSDK等商業化SDK使用,僅供開發交流探討,不建議線上項目直接使用,可供開發者參考擴展用。git

架構類圖

  • 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

分享代碼舉例

以位圖分享舉例(場景:二維碼圖片分享)github

// 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子類實現,新增點擊事件
相關文章
相關標籤/搜索