From 82cf8cb877b73d55d267712ea6aa385e2a8947e4 Mon Sep 17 00:00:00 2001 From: khy <18814188563@163.com> Date: Thu, 24 Nov 2016 18:30:34 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E7=94=A8=E7=B3=BB=E7=BB=9F=E7=9F=AD?= =?UTF-8?q?=E4=BF=A1=E5=88=86=E4=BA=AB=EF=BC=8C=E5=88=A0=E9=99=A4shareSDK?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/libs/ShareSDK-Core-2.7.2.jar | Bin 104941 -> 0 bytes app/libs/ShareSDK-ShortMessage-2.7.2.jar | Bin 8196 -> 0 bytes app/src/main/assets/ShareSDK.xml | 127 ------ .../main/java/com/gh/base/BaseActivity.java | 3 - .../com/gh/base/BaseFragmentActivity.java | 3 - .../java/com/gh/common/util/ShareUtils.java | 45 +- .../com/gh/gamecenter/GameDetailActivity.java | 23 +- .../main/java/onekeyshare/CustomerLogo.java | 19 - .../main/java/onekeyshare/OnekeyShare.java | 267 ----------- .../java/onekeyshare/OnekeySharePage.java | 77 ---- .../java/onekeyshare/OnekeyShareTheme.java | 44 -- .../onekeyshare/OnekeyShareThemeImpl.java | 421 ------------------ .../ShareContentCustomizeCallback.java | 19 - .../themes/classic/ClassicTheme.java | 52 --- .../onekeyshare/themes/classic/EditPage.java | 240 ---------- .../themes/classic/FriendAdapter.java | 284 ------------ .../themes/classic/FriendListItem.java | 97 ---- .../themes/classic/FriendListPage.java | 200 --------- .../themes/classic/IndicatorView.java | 68 --- .../onekeyshare/themes/classic/PRTHeader.java | 115 ----- .../themes/classic/PicViewerPage.java | 57 --- .../themes/classic/PlatformPage.java | 269 ----------- .../themes/classic/PlatformPageAdapter.java | 233 ---------- .../themes/classic/RotateImageView.java | 33 -- .../onekeyshare/themes/classic/XView.java | 47 -- .../themes/classic/land/EditPageLand.java | 276 ------------ .../classic/land/FriendListPageLand.java | 33 -- .../classic/land/PlatformPageAdapterLand.java | 70 --- .../themes/classic/land/PlatformPageLand.java | 35 -- .../themes/classic/port/EditPagePort.java | 271 ----------- .../classic/port/FriendListPagePort.java | 33 -- .../classic/port/PlatformPageAdapterPort.java | 74 --- .../themes/classic/port/PlatformPagePort.java | 34 -- 33 files changed, 23 insertions(+), 3546 deletions(-) delete mode 100644 app/libs/ShareSDK-Core-2.7.2.jar delete mode 100644 app/libs/ShareSDK-ShortMessage-2.7.2.jar delete mode 100644 app/src/main/assets/ShareSDK.xml delete mode 100644 app/src/main/java/onekeyshare/CustomerLogo.java delete mode 100644 app/src/main/java/onekeyshare/OnekeyShare.java delete mode 100644 app/src/main/java/onekeyshare/OnekeySharePage.java delete mode 100644 app/src/main/java/onekeyshare/OnekeyShareTheme.java delete mode 100644 app/src/main/java/onekeyshare/OnekeyShareThemeImpl.java delete mode 100644 app/src/main/java/onekeyshare/ShareContentCustomizeCallback.java delete mode 100644 app/src/main/java/onekeyshare/themes/classic/ClassicTheme.java delete mode 100644 app/src/main/java/onekeyshare/themes/classic/EditPage.java delete mode 100644 app/src/main/java/onekeyshare/themes/classic/FriendAdapter.java delete mode 100644 app/src/main/java/onekeyshare/themes/classic/FriendListItem.java delete mode 100644 app/src/main/java/onekeyshare/themes/classic/FriendListPage.java delete mode 100644 app/src/main/java/onekeyshare/themes/classic/IndicatorView.java delete mode 100644 app/src/main/java/onekeyshare/themes/classic/PRTHeader.java delete mode 100644 app/src/main/java/onekeyshare/themes/classic/PicViewerPage.java delete mode 100644 app/src/main/java/onekeyshare/themes/classic/PlatformPage.java delete mode 100644 app/src/main/java/onekeyshare/themes/classic/PlatformPageAdapter.java delete mode 100644 app/src/main/java/onekeyshare/themes/classic/RotateImageView.java delete mode 100644 app/src/main/java/onekeyshare/themes/classic/XView.java delete mode 100644 app/src/main/java/onekeyshare/themes/classic/land/EditPageLand.java delete mode 100644 app/src/main/java/onekeyshare/themes/classic/land/FriendListPageLand.java delete mode 100644 app/src/main/java/onekeyshare/themes/classic/land/PlatformPageAdapterLand.java delete mode 100644 app/src/main/java/onekeyshare/themes/classic/land/PlatformPageLand.java delete mode 100644 app/src/main/java/onekeyshare/themes/classic/port/EditPagePort.java delete mode 100644 app/src/main/java/onekeyshare/themes/classic/port/FriendListPagePort.java delete mode 100644 app/src/main/java/onekeyshare/themes/classic/port/PlatformPageAdapterPort.java delete mode 100644 app/src/main/java/onekeyshare/themes/classic/port/PlatformPagePort.java diff --git a/app/libs/ShareSDK-Core-2.7.2.jar b/app/libs/ShareSDK-Core-2.7.2.jar deleted file mode 100644 index d247c0f7a12a5f6985b2a16a6dd1ef5476ea500e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 104941 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 diff --git a/app/libs/ShareSDK-ShortMessage-2.7.2.jar b/app/libs/ShareSDK-ShortMessage-2.7.2.jar deleted file mode 100644 index aaca6043197a7df223cf91a8a94485506f4b71ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 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 - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/java/com/gh/base/BaseActivity.java b/app/src/main/java/com/gh/base/BaseActivity.java index 3acf205daa..f6ab4f5a16 100644 --- a/app/src/main/java/com/gh/base/BaseActivity.java +++ b/app/src/main/java/com/gh/base/BaseActivity.java @@ -34,7 +34,6 @@ import com.gh.gamecenter.manager.SystemBarTintManager.SystemBarConfig; import java.lang.reflect.Field; import java.util.ArrayList; -import cn.sharesdk.framework.ShareSDK; import de.greenrobot.event.EventBus; public class BaseActivity extends Activity implements OnCallBackListener { @@ -142,8 +141,6 @@ public class BaseActivity extends Activity implements OnCallBackListener { //如果是游戏分享,newsTitle默认为空 public void showShare(String url, String gameName, String icon, String newsTitle, ArrayList tag, String entrance, String type) { - ShareSDK.initSDK(this); - //判断是否是官方版 boolean isPlugin = false; if (tag != null){ diff --git a/app/src/main/java/com/gh/base/BaseFragmentActivity.java b/app/src/main/java/com/gh/base/BaseFragmentActivity.java index 7988088d67..ae57e14869 100644 --- a/app/src/main/java/com/gh/base/BaseFragmentActivity.java +++ b/app/src/main/java/com/gh/base/BaseFragmentActivity.java @@ -33,7 +33,6 @@ import com.gh.gamecenter.manager.SystemBarTintManager.SystemBarConfig; import java.lang.reflect.Field; import java.util.ArrayList; -import cn.sharesdk.framework.ShareSDK; import de.greenrobot.event.EventBus; public class BaseFragmentActivity extends FragmentActivity { @@ -134,8 +133,6 @@ public class BaseFragmentActivity extends FragmentActivity { //如果是游戏分享,newsTitle默认为空 public void showShare(String url, String gameName, String icon, String newsTitle, ArrayList tag, String entrance, String type) { - ShareSDK.initSDK(this); - //判断是否是官方版 boolean isPlugin = false; if (tag != null){ diff --git a/app/src/main/java/com/gh/common/util/ShareUtils.java b/app/src/main/java/com/gh/common/util/ShareUtils.java index 01ba941c92..ea2a162e29 100644 --- a/app/src/main/java/com/gh/common/util/ShareUtils.java +++ b/app/src/main/java/com/gh/common/util/ShareUtils.java @@ -10,6 +10,7 @@ import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Matrix; +import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.support.v7.widget.GridLayoutManager; @@ -44,14 +45,8 @@ import com.tencent.tauth.UiError; import java.io.ByteArrayOutputStream; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import cn.sharesdk.framework.Platform; -import cn.sharesdk.framework.PlatformActionListener; -import cn.sharesdk.framework.ShareSDK; -import cn.sharesdk.system.text.ShortMessage; - /** * Created by khy on 2016/9/4. */ @@ -362,44 +357,22 @@ public class ShareUtils { //短信分享 private void shortMessageSahre(){ - ShortMessage.ShareParams shortMessageParams = new ShortMessage.ShareParams(); - + String smsBody; if (shareNewsTitle != null){ - shortMessageParams.setText(shareNewsTitle + shareUrl); + smsBody = shareNewsTitle + shareUrl; }else { if (isPlugin){ - shortMessageParams.setText("向你推荐:" + shareGameName + "(光环加速版)" + shareUrl); + smsBody = "向你推荐:" + shareGameName + "(光环加速版)" + shareUrl; }else { - shortMessageParams.setText("向你推荐:" + shareGameName + shareUrl); + smsBody = "向你推荐:" + shareGameName + shareUrl; } } - shortMessageParams.setUrl(shareUrl); - shortMessageParams.setTitleUrl(shareUrl); - sharePlatform(shortMessageParams, ShortMessage.NAME); - } + Intent sendIntent = new Intent(Intent.ACTION_VIEW, Uri.parse( "smsto:" )); + sendIntent.putExtra( "sms_body", smsBody); + sendIntent.setType( "vnd.android-dir/mms-sms" ); + context.startActivity(sendIntent); - //分享平台回调 - private void sharePlatform(Platform.ShareParams params, String name) { - Utils.toast(context,"分享跳转中..."); - Platform platform = ShareSDK.getPlatform(name); - platform.setPlatformActionListener(new PlatformActionListener() { - @Override - public void onComplete(Platform platform, int i, HashMap hashMap) { - Utils.log("分享成功"); - } - - @Override - public void onError(Platform platform, int i, Throwable throwable) { - Utils.log("分享失败"); - } - - @Override - public void onCancel(Platform platform, int i) { - Utils.log("取消分享"); - } - }); - platform.share(params); popupWindow.dismiss(); } diff --git a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java index e5fa5f430b..8bc9327b73 100644 --- a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java @@ -140,15 +140,20 @@ public class GameDetailActivity extends DetailActivity implements View.OnClickLi String url = "http://www.ghzhushou.com/game/" + adapter.getGameDetailEntity().getShareCode(); showShare(url, gameEntity.getName(), gameEntity.getIcon(), null, gameEntity.getTag(), entrance, "游戏"); - } else if (v == actionbar_rl_back && InitChangeSkinUtils.isChecking) { - DialogUtils.showWarningDialog(GameDetailActivity.this, "退出提示", - "素材更新还在检测中,如果强行退出会中断所有进度,确定退出?", - "取消", "强行退出", new DialogUtils.ConfiremListener() { - @Override - public void onConfirem() { - finish(); - } - }, null); + } else if (v == actionbar_rl_back) { + if (InitChangeSkinUtils.isChecking) { + DialogUtils.showWarningDialog(GameDetailActivity.this, "退出提示", + "素材更新还在检测中,如果强行退出会中断所有进度,确定退出?", + "取消", "强行退出", new DialogUtils.ConfiremListener() { + @Override + public void onConfirem() { + finish(); + } + }, null); + } else { + finish(); + } + } } diff --git a/app/src/main/java/onekeyshare/CustomerLogo.java b/app/src/main/java/onekeyshare/CustomerLogo.java deleted file mode 100644 index 727479d479..0000000000 --- a/app/src/main/java/onekeyshare/CustomerLogo.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * 官网地站:http://www.mob.com - * 技术支持QQ: 4006852216 - * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复) - * - * Copyright (c) 2013年 mob.com. All rights reserved. - */ - -package onekeyshare; - -import android.graphics.Bitmap; -import android.view.View.OnClickListener; - -/** 九宫格自定义的图标对象 */ -public class CustomerLogo { - public String label; - public Bitmap logo; - public OnClickListener listener; -} diff --git a/app/src/main/java/onekeyshare/OnekeyShare.java b/app/src/main/java/onekeyshare/OnekeyShare.java deleted file mode 100644 index adb7e17c8e..0000000000 --- a/app/src/main/java/onekeyshare/OnekeyShare.java +++ /dev/null @@ -1,267 +0,0 @@ -/* - * 官网地站:http://www.mob.com - * 技术支持QQ: 4006852216 - * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复) - * - * Copyright (c) 2013年 mob.com. All rights reserved. - */ - -package onekeyshare; - -import android.content.Context; -import android.graphics.Bitmap; -import android.text.TextUtils; -import android.view.View; -import android.view.View.OnClickListener; - -import com.mob.tools.utils.R; - -import java.util.ArrayList; -import java.util.HashMap; - -import cn.sharesdk.framework.Platform; -import cn.sharesdk.framework.PlatformActionListener; -import cn.sharesdk.framework.ShareSDK; -import onekeyshare.themes.classic.PlatformPage; - -import static com.mob.tools.utils.BitmapHelper.captureView; - -/** -* 快捷分享的入口 -*

-* 通过不同的setter设置参数,然后调用{@link #show(Context)}方法启动快捷分享 -*/ -public class OnekeyShare { - private HashMap params; - - public OnekeyShare() { - params = new HashMap(); - params.put("customers", new ArrayList()); - params.put("hiddenPlatforms", new HashMap()); - } - - /** address是接收人地址,仅在信息和邮件使用,否则可以不提供 */ - public void setAddress(String address) { - params.put("address", address); - } - - /** - * title标题,在印象笔记、邮箱、信息、微信(包括好友、朋友圈和收藏)、 - * 易信(包括好友、朋友圈)、人人网和QQ空间使用,否则可以不提供 - */ - public void setTitle(String title) { - params.put("title", title); - } - - /** titleUrl是标题的网络链接,仅在人人网和QQ空间使用,否则可以不提供 */ - public void setTitleUrl(String titleUrl) { - params.put("titleUrl", titleUrl); - } - - /** text是分享文本,所有平台都需要这个字段 */ - public void setText(String text) { - params.put("text", text); - } - - /** 获取text字段的值 */ - public String getText() { - return params.containsKey("text") ? String.valueOf(params.get("text")) : null; - } - - /** imagePath是本地的图片路径,除Linked-In外的所有平台都支持这个字段 */ - public void setImagePath(String imagePath) { - if(!TextUtils.isEmpty(imagePath)) - params.put("imagePath", imagePath); - } - - /** imageUrl是图片的网络路径,新浪微博、人人网、QQ空间和Linked-In支持此字段 */ - public void setImageUrl(String imageUrl) { - if (!TextUtils.isEmpty(imageUrl)) - params.put("imageUrl", imageUrl); - } - - /** url在微信(包括好友、朋友圈收藏)和易信(包括好友和朋友圈)中使用,否则可以不提供 */ - public void setUrl(String url) { - params.put("url", url); - } - - /** filePath是待分享应用程序的本地路劲,仅在微信(易信)好友和Dropbox中使用,否则可以不提供 */ - public void setFilePath(String filePath) { - params.put("filePath", filePath); - } - - /** comment是我对这条分享的评论,仅在人人网和QQ空间使用,否则可以不提供 */ - public void setComment(String comment) { - params.put("comment", comment); - } - - /** site是分享此内容的网站名称,仅在QQ空间使用,否则可以不提供 */ - public void setSite(String site) { - params.put("site", site); - } - - /** siteUrl是分享此内容的网站地址,仅在QQ空间使用,否则可以不提供 */ - public void setSiteUrl(String siteUrl) { - params.put("siteUrl", siteUrl); - } - - /** foursquare分享时的地方名 */ - public void setVenueName(String venueName) { - params.put("venueName", venueName); - } - - /** foursquare分享时的地方描述 */ - public void setVenueDescription(String venueDescription) { - params.put("venueDescription", venueDescription); - } - - /** 分享地纬度,新浪微博、腾讯微博和foursquare支持此字段 */ - public void setLatitude(float latitude) { - params.put("latitude", latitude); - } - - /** 分享地经度,新浪微博、腾讯微博和foursquare支持此字段 */ - public void setLongitude(float longitude) { - params.put("longitude", longitude); - } - - /** 是否直接分享 */ - public void setSilent(boolean silent) { - params.put("silent", silent); - } - - /** 设置编辑页的初始化选中平台 */ - public void setPlatform(String platform) { - params.put("platform", platform); - } - - /** 设置KakaoTalk的应用下载地址 */ - public void setInstallUrl(String installurl) { - params.put("installurl", installurl); - } - - /** 设置KakaoTalk的应用打开地址 */ - public void setExecuteUrl(String executeurl) { - params.put("executeurl", executeurl); - } - - /** 设置微信分享的音乐的地址 */ - public void setMusicUrl(String musicUrl) { - params.put("musicUrl", musicUrl); - } - - /** 设置自定义的外部回调 */ - public void setCallback(PlatformActionListener callback) { - params.put("callback", callback); - } - - /** 返回操作回调 */ - public PlatformActionListener getCallback() { - return R.forceCast(params.get("callback")); - } - - /** 设置用于分享过程中,根据不同平台自定义分享内容的回调 */ - public void setShareContentCustomizeCallback(ShareContentCustomizeCallback callback) { - params.put("customizeCallback", callback); - } - - /** 自定义不同平台分享不同内容的回调 */ - public ShareContentCustomizeCallback getShareContentCustomizeCallback() { - return R.forceCast(params.get("customizeCallback")); - } - - /** 设置自己图标和点击事件,可以重复调用添加多次 */ - public void setCustomerLogo(Bitmap logo, String label, OnClickListener ocl) { - CustomerLogo cl = new CustomerLogo(); - cl.logo = logo; - cl.label = label; - cl.listener = ocl; - ArrayList customers = R.forceCast(params.get("customers")); - customers.add(cl); - } - - /** 设置一个总开关,用于在分享前若需要授权,则禁用sso功能 */ - public void disableSSOWhenAuthorize() { - params.put("disableSSO", true); - } - - /** 设置视频网络地址 */ - public void setVideoUrl(String url) { - params.put("url", url); - params.put("shareType", Platform.SHARE_VIDEO); - } - - /** 设置编辑页面的显示模式为Dialog模式 */ - @Deprecated - public void setDialogMode() { - params.put("dialogMode", true); - } - - /** 添加一个隐藏的platform */ - public void addHiddenPlatform(String platform) { - HashMap hiddenPlatforms = R.forceCast(params.get("hiddenPlatforms")); - hiddenPlatforms.put(platform, platform); - } - - /** 设置一个将被截图分享的View , surfaceView是截不了图片的*/ - public void setViewToShare(View viewToShare) { - try { - Bitmap bm = captureView(viewToShare, viewToShare.getWidth(), viewToShare.getHeight()); - params.put("viewToShare", bm); - } catch (Throwable e) { - e.printStackTrace(); - } - } - - /** 腾讯微博分享多张图片 */ - public void setImageArray(String[] imageArray) { - params.put("imageArray", imageArray); - } - - /** 设置在执行分享到QQ或QZone的同时,分享相同的内容腾讯微博 */ - public void setShareToTencentWeiboWhenPerformingQQOrQZoneSharing() { - params.put("isShareTencentWeibo", true); - } - - /** 设置分享界面的样式,目前只有一种,不需要设置 */ - public void setTheme(OnekeyShareTheme theme) { - params.put("theme", theme.getValue()); - } - - @SuppressWarnings("unchecked") - public void show(Context context) { - HashMap shareParamsMap = new HashMap(); - shareParamsMap.putAll(params); - - ShareSDK.initSDK(context); - - // 打开分享菜单的统计 - ShareSDK.logDemoEvent(1, null); - - int iTheme = 0; - try { - iTheme = com.mob.tools.utils.R.parseInt(String.valueOf(shareParamsMap.remove("theme"))); - } catch (Throwable t) {} - OnekeyShareTheme theme = OnekeyShareTheme.fromValue(iTheme); - OnekeyShareThemeImpl themeImpl = theme.getImpl(); - - themeImpl.setShareParamsMap(shareParamsMap); - themeImpl.setDialogMode(shareParamsMap.containsKey("dialogMode") ? ((Boolean) shareParamsMap.remove("dialogMode")) : false); - themeImpl.setSilent(shareParamsMap.containsKey("silent") ? ((Boolean) shareParamsMap.remove("silent")) : false); - themeImpl.setCustomerLogos((ArrayList) shareParamsMap.remove("customers")); - themeImpl.setHiddenPlatforms((HashMap) shareParamsMap.remove("hiddenPlatforms")); - themeImpl.setPlatformActionListener((PlatformActionListener) shareParamsMap.remove("callback")); - themeImpl.setShareContentCustomizeCallback((ShareContentCustomizeCallback) shareParamsMap.remove("customizeCallback")); - themeImpl.setOnFinishListener((PlatformPage.OnFinishListener) shareParamsMap.remove("finishCallback")); - if (shareParamsMap.containsKey("disableSSO") ? ((Boolean) shareParamsMap.remove("disableSSO")) : false) { - themeImpl.disableSSO(); - } - - themeImpl.show(context); - } - - public void setOnFinishListener(PlatformPage.OnFinishListener listener) { - params.put("finishCallback", listener); - } - -} diff --git a/app/src/main/java/onekeyshare/OnekeySharePage.java b/app/src/main/java/onekeyshare/OnekeySharePage.java deleted file mode 100644 index 1c2ea4d6ce..0000000000 --- a/app/src/main/java/onekeyshare/OnekeySharePage.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * 官网地站:http://www.mob.com - * 技术支持QQ: 4006852216 - * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复) - * - * Copyright (c) 2013年 mob.com. All rights reserved. - */ - -package onekeyshare; - -import com.mob.tools.FakeActivity; - -import java.util.ArrayList; -import java.util.HashMap; - -import cn.sharesdk.framework.Platform; -import cn.sharesdk.framework.Platform.ShareParams; -import cn.sharesdk.framework.PlatformActionListener; - -/** 快捷分享的基类 */ -public class OnekeySharePage extends FakeActivity { - private OnekeyShareThemeImpl impl; - - public OnekeySharePage(OnekeyShareThemeImpl impl) { - this.impl = impl; - } - - /** 分享界面是否弹窗模式 */ - protected final boolean isDialogMode() { - return impl.dialogMode; - } - - protected final HashMap getShareParamsMap() { - return impl.shareParamsMap; - } - - /** 静默分享开关(没有界面,直接分享 )*/ - protected final boolean isSilent() { - return impl.silent; - } - - protected final ArrayList getCustomerLogos() { - return impl.customerLogos; - } - - protected final HashMap getHiddenPlatforms() { - return impl.hiddenPlatforms; - } - - protected final PlatformActionListener getCallback() { - return impl.callback; - } - - protected final ShareContentCustomizeCallback getCustomizeCallback() { - return impl.customizeCallback; - } - - protected final boolean isDisableSSO() { - return impl.disableSSO; - } - - protected final void shareSilently(Platform platform) { - impl.shareSilently(platform); - } - - protected final ShareParams formateShareData(Platform platform) { - if (impl.formateShareData(platform)) { - return impl.shareDataToShareParams(platform); - } - return null; - } - - protected final boolean isUseClientToShare(Platform platform) { - return impl.isUseClientToShare(platform); - } - -} diff --git a/app/src/main/java/onekeyshare/OnekeyShareTheme.java b/app/src/main/java/onekeyshare/OnekeyShareTheme.java deleted file mode 100644 index 54ad31c0bb..0000000000 --- a/app/src/main/java/onekeyshare/OnekeyShareTheme.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * 官网地站:http://www.mob.com - * 技术支持QQ: 4006852216 - * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复) - * - * Copyright (c) 2013年 mob.com. All rights reserved. - */ - -package onekeyshare; - - -import onekeyshare.themes.classic.ClassicTheme; - -/** 快捷分享的主题样式 */ -public enum OnekeyShareTheme { - /** 九格宫的主题样式 ,对应的实现类ClassicTheme */ - CLASSIC(0, new ClassicTheme()); - - private final int value; - private final OnekeyShareThemeImpl impl; - - private OnekeyShareTheme(int value, OnekeyShareThemeImpl impl) { - this.value = value; - this.impl = impl; - } - - public int getValue() { - return value; - } - - public OnekeyShareThemeImpl getImpl() { - return impl; - } - - public static OnekeyShareTheme fromValue(int value) { - for (OnekeyShareTheme theme : OnekeyShareTheme.values()) { - if (theme.value == value) { - return theme; - } - } - return CLASSIC; - } - -} diff --git a/app/src/main/java/onekeyshare/OnekeyShareThemeImpl.java b/app/src/main/java/onekeyshare/OnekeyShareThemeImpl.java deleted file mode 100644 index e0826e33b9..0000000000 --- a/app/src/main/java/onekeyshare/OnekeyShareThemeImpl.java +++ /dev/null @@ -1,421 +0,0 @@ -/* - * 官网地站:http://www.mob.com - * 技术支持QQ: 4006852216 - * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复) - * - * Copyright (c) 2013年 mob.com. All rights reserved. - */ - -package onekeyshare; - -import android.content.Context; -import android.content.Intent; -import android.content.pm.ResolveInfo; -import android.graphics.Bitmap; -import android.graphics.Bitmap.CompressFormat; -import android.os.Handler.Callback; -import android.os.Message; -import android.text.TextUtils; -import android.widget.Toast; - -import com.mob.tools.utils.R; -import com.mob.tools.utils.UIHandler; - -import java.io.File; -import java.io.FileOutputStream; -import java.util.ArrayList; -import java.util.HashMap; - -import cn.sharesdk.framework.CustomPlatform; -import cn.sharesdk.framework.Platform; -import cn.sharesdk.framework.Platform.ShareParams; -import cn.sharesdk.framework.PlatformActionListener; -import cn.sharesdk.framework.ShareSDK; -import onekeyshare.themes.classic.PlatformPage; - -/** 快捷分享的主题样式的实现父类 */ -public abstract class OnekeyShareThemeImpl implements PlatformActionListener, Callback { - protected boolean dialogMode; - protected HashMap shareParamsMap; - protected boolean silent; - protected ArrayList customerLogos; - protected HashMap hiddenPlatforms; - protected PlatformActionListener callback; - protected ShareContentCustomizeCallback customizeCallback; - protected boolean disableSSO; - protected Context context; - - protected PlatformPage.OnFinishListener mOnFinishListener; - - public final void setOnFinishListener(PlatformPage.OnFinishListener listener) { - this.mOnFinishListener = listener; - } - - public PlatformPage.OnFinishListener getOnFinishListener() { - return mOnFinishListener; - } - - public OnekeyShareThemeImpl() { - callback = this; - } - - public final void setDialogMode(boolean dialogMode) { - this.dialogMode = dialogMode; - } - - public final void setShareParamsMap(HashMap shareParamsMap) { - this.shareParamsMap = shareParamsMap; - } - - public final void setSilent(boolean silent) { - this.silent = silent; - } - - public final void setCustomerLogos(ArrayList customerLogos) { - this.customerLogos = customerLogos; - } - - public final void setHiddenPlatforms(HashMap hiddenPlatforms) { - this.hiddenPlatforms = hiddenPlatforms; - } - - public final void setPlatformActionListener(PlatformActionListener callback) { - this.callback = callback == null ? this : callback; - } - - public final void setShareContentCustomizeCallback(ShareContentCustomizeCallback customizeCallback) { - this.customizeCallback = customizeCallback; - } - - public final void disableSSO() { - disableSSO = true; - } - - public final void show(Context context) { - this.context = context; - - // 显示方式是由platform和silent两个字段控制的 - // 如果platform设置了,则无须显示九宫格,否则都会显示; - // 如果silent为true,表示不进入编辑页面,否则会进入。 - if (shareParamsMap.containsKey("platform")) { - String name = String.valueOf(shareParamsMap.get("platform")); - Platform platform = ShareSDK.getPlatform(name); - boolean isCustomPlatform = platform instanceof CustomPlatform; - boolean isUseClientToShare = isUseClientToShare(platform); - if (silent || isCustomPlatform || isUseClientToShare) { - shareSilently(platform); - } else { - prepareForEditPage(platform); - } - } else { - showPlatformPage(context); - } - } - - /** 判断指定平台是否只能使用客户端分享 */ - final boolean isUseClientToShare(Platform platform) { - String name = platform.getName(); - if ("Wechat".equals(name) || "WechatMoments".equals(name) - || "WechatFavorite".equals(name) || "ShortMessage".equals(name) - || "Email".equals(name) || "GooglePlus".equals(name) - || "QQ".equals(name) || "Pinterest".equals(name) - || "Instagram".equals(name) || "Yixin".equals(name) - || "YixinMoments".equals(name) || "QZone".equals(name) - || "Mingdao".equals(name) || "Line".equals(name) - || "KakaoStory".equals(name) || "KakaoTalk".equals(name) - || "Bluetooth".equals(name) || "WhatsApp".equals(name) - || "BaiduTieba".equals(name) || "Laiwang".equals(name) - || "LaiwangMoments".equals(name) || "Alipay".equals(name) - || "FacebookMessenger".equals(name) - ) { - return true; - } else if ("Evernote".equals(name)) { - if ("true".equals(platform.getDevinfo("ShareByAppClient"))) { - return true; - } - } else if ("SinaWeibo".equals(name)) { - if ("true".equals(platform.getDevinfo("ShareByAppClient"))) { - Intent test = new Intent(Intent.ACTION_SEND); - test.setPackage("com.sina.weibo"); - test.setType("image/*"); - ResolveInfo ri = platform.getContext().getPackageManager().resolveActivity(test, 0); - return (ri != null); - } - } - - return false; - } - - final void shareSilently(Platform platform) { - if (formateShareData(platform)) { - ShareParams sp = shareDataToShareParams(platform); - if (sp != null) { - toast("ssdk_oks_sharing"); - if (customizeCallback != null) { - customizeCallback.onShare(platform, sp); - } - if (disableSSO) { - platform.SSOSetting(disableSSO); - } - platform.setPlatformActionListener(callback); - platform.share(sp); - } - } - } - - private void prepareForEditPage(Platform platform) { - if (formateShareData(platform)) { - ShareParams sp = shareDataToShareParams(platform); - if (sp != null) { - // 编辑分享内容的统计 - ShareSDK.logDemoEvent(3, null); - if (customizeCallback != null) { - customizeCallback.onShare(platform, sp); - } - showEditPage(context, platform, sp); - } - } - } - - final boolean formateShareData(Platform plat) { - String name = plat.getName(); - - boolean isGooglePlus = "GooglePlus".equals(name); - if (isGooglePlus && !plat.isClientValid()) { - toast("ssdk_google_plus_client_inavailable"); - return false; - } - - boolean isAlipay = "Alipay".equals(name); - if (isAlipay && !plat.isClientValid()) { - toast("ssdk_alipay_client_inavailable"); - return false; - } - - boolean isKakaoTalk = "KakaoTalk".equals(name); - if (isKakaoTalk && !plat.isClientValid()) { - toast("ssdk_kakaotalk_client_inavailable"); - return false; - } - - boolean isKakaoStory = "KakaoStory".equals(name); - if (isKakaoStory && !plat.isClientValid()) { - toast("ssdk_kakaostory_client_inavailable"); - return false; - } - - boolean isLine = "Line".equals(name); - if (isLine && !plat.isClientValid()) { - toast("ssdk_line_client_inavailable"); - return false; - } - - boolean isWhatsApp = "WhatsApp".equals(name); - if (isWhatsApp && !plat.isClientValid()) { - toast("ssdk_whatsapp_client_inavailable"); - return false; - } - - boolean isPinterest = "Pinterest".equals(name); - if (isPinterest && !plat.isClientValid()) { - toast("ssdk_pinterest_client_inavailable"); - return false; - } - - if ("Instagram".equals(name) && !plat.isClientValid()) { - toast("ssdk_instagram_client_inavailable"); - return false; - } - - boolean isLaiwang = "Laiwang".equals(name); - boolean isLaiwangMoments = "LaiwangMoments".equals(name); - if(isLaiwang || isLaiwangMoments){ - if (!plat.isClientValid()) { - toast("ssdk_laiwang_client_inavailable"); - return false; - } - } - - boolean isYixin = "YixinMoments".equals(name) || "Yixin".equals(name); - if (isYixin && !plat.isClientValid()) { - toast("ssdk_yixin_client_inavailable"); - return false; - } - - boolean isWechat = "WechatFavorite".equals(name) || "Wechat".equals(name) || "WechatMoments".equals(name); - if (isWechat && !plat.isClientValid()) { - toast("ssdk_wechat_client_inavailable"); - return false; - } - - if ("FacebookMessenger".equals(name) && !plat.isClientValid()) { - toast("ssdk_facebookmessenger_client_inavailable"); - return false; - } - - if (!shareParamsMap.containsKey("shareType")) { - int shareType = Platform.SHARE_TEXT; - String imagePath = String.valueOf(shareParamsMap.get("imagePath")); - if (imagePath != null && (new File(imagePath)).exists()) { - shareType = Platform.SHARE_IMAGE; - if (imagePath.endsWith(".gif") && isWechat) { - shareType = Platform.SHARE_EMOJI; - } else if (shareParamsMap.containsKey("url") && !TextUtils.isEmpty(shareParamsMap.get("url").toString())) { - shareType = Platform.SHARE_WEBPAGE; - if (shareParamsMap.containsKey("musicUrl") && !TextUtils.isEmpty(shareParamsMap.get("musicUrl").toString()) && isWechat) { - shareType = Platform.SHARE_MUSIC; - } - } - } else { - Bitmap viewToShare = R.forceCast(shareParamsMap.get("viewToShare")); - if (viewToShare != null && !viewToShare.isRecycled()) { - shareType = Platform.SHARE_IMAGE; - if (shareParamsMap.containsKey("url") && !TextUtils.isEmpty(shareParamsMap.get("url").toString())) { - shareType = Platform.SHARE_WEBPAGE; - if (shareParamsMap.containsKey("musicUrl") && !TextUtils.isEmpty(shareParamsMap.get("musicUrl").toString()) && isWechat) { - shareType = Platform.SHARE_MUSIC; - } - } - } else { - Object imageUrl = shareParamsMap.get("imageUrl"); - if (imageUrl != null && !TextUtils.isEmpty(String.valueOf(imageUrl))) { - shareType = Platform.SHARE_IMAGE; - if (String.valueOf(imageUrl).endsWith(".gif") && isWechat) { - shareType = Platform.SHARE_EMOJI; - } else if (shareParamsMap.containsKey("url") && !TextUtils.isEmpty(shareParamsMap.get("url").toString())) { - shareType = Platform.SHARE_WEBPAGE; - if (shareParamsMap.containsKey("musicUrl") && !TextUtils.isEmpty(shareParamsMap.get("musicUrl").toString()) && isWechat) { - shareType = Platform.SHARE_MUSIC; - } - } - } - } - } - shareParamsMap.put("shareType", shareType); - } - - return true; - } - - final ShareParams shareDataToShareParams(Platform plat) { - if (plat == null || shareParamsMap == null) { - toast("ssdk_oks_share_failed"); - return null; - } - - try { - String imagePath = R.forceCast(shareParamsMap.get("imagePath")); - Bitmap viewToShare = R.forceCast(shareParamsMap.get("viewToShare")); - if (TextUtils.isEmpty(imagePath) && viewToShare != null && !viewToShare.isRecycled()) { - String path = com.mob.tools.utils.R.getCachePath(plat.getContext(), "screenshot"); - File ss = new File(path, String.valueOf(System.currentTimeMillis()) + ".jpg"); - FileOutputStream fos = new FileOutputStream(ss); - viewToShare.compress(CompressFormat.JPEG, 100, fos); - fos.flush(); - fos.close(); - shareParamsMap.put("imagePath", ss.getAbsolutePath()); - } - } catch (Throwable t) { - t.printStackTrace(); - toast("ssdk_oks_share_failed"); - return null; - } - - return new ShareParams(shareParamsMap); - } - - private void toast(final String resOrName) { - UIHandler.sendEmptyMessage(0, new Callback() { - public boolean handleMessage(Message msg) { - int resId = com.mob.tools.utils.R.getStringRes(context, resOrName); - if (resId > 0) { - Toast.makeText(context, resId, Toast.LENGTH_SHORT).show(); - } else { - Toast.makeText(context, resOrName, Toast.LENGTH_SHORT).show(); - } - return false; - } - }); - } - - protected abstract void showPlatformPage(Context context); - - protected abstract void showEditPage(Context context, Platform platform, ShareParams sp); - - public final void onComplete(Platform platform, int action, - HashMap res) { - Message msg = new Message(); - msg.arg1 = 1; - msg.arg2 = action; - msg.obj = platform; - UIHandler.sendMessage(msg, this); - } - - public final void onError(Platform platform, int action, Throwable t) { - t.printStackTrace(); - - Message msg = new Message(); - msg.arg1 = 2; - msg.arg2 = action; - msg.obj = t; - UIHandler.sendMessage(msg, this); - - // 分享失败的统计 - ShareSDK.logDemoEvent(4, platform); - } - - public final void onCancel(Platform platform, int action) { - Message msg = new Message(); - msg.arg1 = 3; - msg.arg2 = action; - msg.obj = platform; - UIHandler.sendMessage(msg, this); - - // 分享失败的统计 - ShareSDK.logDemoEvent(5, platform); - } - - public final boolean handleMessage(Message msg) { - switch (msg.arg1) { - case 1: { - // 成功 - int resId = com.mob.tools.utils.R.getStringRes(context, "ssdk_oks_share_completed"); - if (resId > 0) { - toast(context.getString(resId)); - } - } break; - case 2: { - // 失败 - String expName = msg.obj.getClass().getSimpleName(); - if ("WechatClientNotExistException".equals(expName) - || "WechatTimelineNotSupportedException".equals(expName) - || "WechatFavoriteNotSupportedException".equals(expName)) { - toast("ssdk_wechat_client_inavailable"); - } else if ("GooglePlusClientNotExistException".equals(expName)) { - toast("ssdk_google_plus_client_inavailable"); - } else if ("QQClientNotExistException".equals(expName)) { - toast("ssdk_qq_client_inavailable"); - } else if ("YixinClientNotExistException".equals(expName) - || "YixinTimelineNotSupportedException".equals(expName)) { - toast("ssdk_yixin_client_inavailable"); - } else if ("KakaoTalkClientNotExistException".equals(expName)) { - toast("ssdk_kakaotalk_client_inavailable"); - } else if ("KakaoStoryClientNotExistException".equals(expName)) { - toast("ssdk_kakaostory_client_inavailable"); - } else if("WhatsAppClientNotExistException".equals(expName)){ - toast("ssdk_whatsapp_client_inavailable"); - } else if("FacebookMessengerClientNotExistException".equals(expName)){ - toast("ssdk_facebookmessenger_client_inavailable"); - } else { - toast("ssdk_oks_share_failed"); - } - } break; - case 3: { - // 取消 - toast("ssdk_oks_share_canceled"); - } break; - } - return false; - } - -} diff --git a/app/src/main/java/onekeyshare/ShareContentCustomizeCallback.java b/app/src/main/java/onekeyshare/ShareContentCustomizeCallback.java deleted file mode 100644 index 350f7eb726..0000000000 --- a/app/src/main/java/onekeyshare/ShareContentCustomizeCallback.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * 官网地站:http://www.mob.com - * 技术支持QQ: 4006852216 - * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复) - * - * Copyright (c) 2013年 mob.com. All rights reserved. - */ - -package onekeyshare; - -import cn.sharesdk.framework.Platform; -import cn.sharesdk.framework.Platform.ShareParams; - -/** 自定义不同平台分享不同内容的接口 */ -public interface ShareContentCustomizeCallback { - - public void onShare(Platform platform, ShareParams paramsToShare); - -} diff --git a/app/src/main/java/onekeyshare/themes/classic/ClassicTheme.java b/app/src/main/java/onekeyshare/themes/classic/ClassicTheme.java deleted file mode 100644 index c70e6243c0..0000000000 --- a/app/src/main/java/onekeyshare/themes/classic/ClassicTheme.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * 官网地站:http://www.mob.com - * 技术支持QQ: 4006852216 - * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复) - * - * Copyright (c) 2013年 mob.com. All rights reserved. - */ - -package onekeyshare.themes.classic; - -import android.content.Context; -import android.content.res.Configuration; - -import cn.sharesdk.framework.Platform; -import cn.sharesdk.framework.Platform.ShareParams; -import onekeyshare.OnekeyShareThemeImpl; -import onekeyshare.themes.classic.land.EditPageLand; -import onekeyshare.themes.classic.land.PlatformPageLand; -import onekeyshare.themes.classic.port.EditPagePort; -import onekeyshare.themes.classic.port.PlatformPagePort; - - -/** 九宫格经典主题样式的实现类*/ -public class ClassicTheme extends OnekeyShareThemeImpl { - - /** 展示平台列表*/ - protected void showPlatformPage(Context context) { - PlatformPage page; - int orientation = context.getResources().getConfiguration().orientation; - if (orientation == Configuration.ORIENTATION_PORTRAIT) { - page = new PlatformPagePort(this); - } else { - page = new PlatformPageLand(this); - } - page.show(context, null); - } - - /** 展示编辑界面*/ - protected void showEditPage(Context context, Platform platform, ShareParams sp) { - EditPage page; - int orientation = context.getResources().getConfiguration().orientation; - if (orientation == Configuration.ORIENTATION_PORTRAIT) { - page = new EditPagePort(this); - } else { - page = new EditPageLand(this); - } - page.setPlatform(platform); - page.setShareParams(sp); - page.show(context, null); - } - -} diff --git a/app/src/main/java/onekeyshare/themes/classic/EditPage.java b/app/src/main/java/onekeyshare/themes/classic/EditPage.java deleted file mode 100644 index 5f66b5d900..0000000000 --- a/app/src/main/java/onekeyshare/themes/classic/EditPage.java +++ /dev/null @@ -1,240 +0,0 @@ -/* - * 官网地站:http://www.mob.com - * 技术支持QQ: 4006852216 - * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复) - * - * Copyright (c) 2013年 mob.com. All rights reserved. - */ - -package onekeyshare.themes.classic; - -import android.app.Activity; -import android.content.res.Configuration; -import android.graphics.Bitmap; -import android.graphics.drawable.ColorDrawable; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.ViewGroup.LayoutParams; -import android.view.WindowManager; -import android.widget.EditText; -import android.widget.LinearLayout; -import android.widget.RelativeLayout; -import android.widget.ScrollView; -import android.widget.TextView; -import android.widget.Toast; - -import com.mob.tools.gui.AsyncImageView; -import com.mob.tools.utils.DeviceHelper; -import com.mob.tools.utils.R; - -import java.util.ArrayList; -import java.util.HashMap; - -import cn.sharesdk.framework.Platform; -import cn.sharesdk.framework.Platform.ShareParams; -import cn.sharesdk.framework.ShareSDK; -import onekeyshare.OnekeySharePage; -import onekeyshare.OnekeyShareThemeImpl; -import onekeyshare.themes.classic.land.FriendListPageLand; -import onekeyshare.themes.classic.port.FriendListPagePort; - - -public class EditPage extends OnekeySharePage implements OnClickListener, TextWatcher, Runnable { - private OnekeyShareThemeImpl impl; - protected Platform platform; - protected ShareParams sp; - - protected LinearLayout llPage; - protected RelativeLayout rlTitle; - protected ScrollView svContent; - protected EditText etContent; - protected TextView tvCancel; - protected TextView tvShare; - protected RelativeLayout rlThumb; - /** 异步加载图片的控件 */ - protected AsyncImageView aivThumb; - protected XView xvRemove; - protected LinearLayout llBottom; - protected TextView tvAt; - protected TextView tvTextCouter; - - protected Bitmap thumb; - protected int maxBodyHeight; - - public EditPage(OnekeyShareThemeImpl impl) { - super(impl); - this.impl = impl; - } - - public void setPlatform(Platform platform) { - this.platform = platform; - } - - public void setShareParams(ShareParams sp) { - this.sp = sp; - } - - public void setActivity(Activity activity) { - super.setActivity(activity); - if (isDialogMode()) { - System.err.println("Theme classic does not support dialog mode!"); -// activity.setTheme(android.R.style.Theme_Dialog); -// activity.requestWindowFeature(Window.FEATURE_NO_TITLE); -// if (Build.VERSION.SDK_INT >= 11) { -// try { -// ReflectHelper.invokeInstanceMethod(activity, "setFinishOnTouchOutside", false); -// } catch (Throwable e) {} -// } - } - - activity.getWindow().setSoftInputMode( - WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE | - WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); - } - - public void onCreate() { - activity.getWindow().setBackgroundDrawable(new ColorDrawable(0xfff3f3f3)); - } - - /** 取消分享时,执行的方法 */ - private void cancelAndFinish() { - // 分享失败的统计 - ShareSDK.logDemoEvent(5, platform); - finish(); - } - - /** 执行分享时的方法 */ - private void shareAndFinish() { - int resId = com.mob.tools.utils.R.getStringRes(activity, "ssdk_oks_sharing"); - if (resId > 0) { - Toast.makeText(activity, resId, Toast.LENGTH_SHORT).show(); - } - - if (isDisableSSO()) { - platform.SSOSetting(true); - } - platform.setPlatformActionListener(getCallback()); - platform.share(sp); - - finish(); - } - - /** 编辑界面,显示的图片 */ - private void showThumb(Bitmap pic) { - PicViewerPage page = new PicViewerPage(impl); - page.setImageBitmap(pic); - page.show(activity, null); - } - - private void removeThumb() { - sp.setImageArray(null); - sp.setImageData(null); - sp.setImagePath(null); - sp.setImageUrl(null); - } - - /** @ 好友时,展示的好友列表 */ - private void showFriendList() { - FriendListPage page; - int orientation = activity.getResources().getConfiguration().orientation; - if (orientation == Configuration.ORIENTATION_PORTRAIT) { - page = new FriendListPagePort(impl); - } else { - page = new FriendListPageLand(impl); - } - page.setPlatform(platform); - page.showForResult(platform.getContext(), null, this); - } - - public void onResult(HashMap data) { - String atText = getJoinSelectedUser(data); - if(!TextUtils.isEmpty(atText)) { - etContent.append(atText); - } - } - - private String getJoinSelectedUser(HashMap data) { - if (data != null && data.containsKey("selected")) { - @SuppressWarnings("unchecked") - ArrayList selected = (ArrayList) data.get("selected"); - String platform = ((Platform)data.get("platform")).getName(); - if("FacebookMessenger".equals(platform)) { - return null; - } - StringBuilder sb = new StringBuilder(); - for (String sel : selected) { - sb.append('@').append(sel).append(' '); - } - return sb.toString(); - } - return null; - } - - protected boolean isShowAtUserLayout(String platformName) { - return "SinaWeibo".equals(platformName) - || "TencentWeibo".equals(platformName) - || "Facebook".equals(platformName) - || "Twitter".equals(platformName); - } - - public void onClick(View v) { - if (v.equals(tvCancel)) { - cancelAndFinish(); - } else if (v.equals(tvShare)) { - sp.setText(etContent.getText().toString().trim()); - shareAndFinish(); - } else if (v.equals(aivThumb)) { - showThumb(thumb); - } else if (v.equals(xvRemove)) { - maxBodyHeight = 0; - rlThumb.setVisibility(View.GONE); - llPage.measure(0, 0); - onTextChanged(etContent.getText(), 0, 0, 0); - removeThumb(); - } else if (v.equals(tvAt)) { - showFriendList(); - } - } - - public void onTextChanged(CharSequence s, int start, int before, int count) { - tvTextCouter.setText(String.valueOf(s.length())); - - if (maxBodyHeight == 0) { - maxBodyHeight = llPage.getHeight() - rlTitle.getHeight() - llBottom.getHeight(); - } - - if (maxBodyHeight > 0) { - svContent.post(this); - } - } - - /** 动态适配编辑界面的高度 */ - public void run() { - int height = svContent.getChildAt(0).getHeight(); - RelativeLayout.LayoutParams lp = R.forceCast(svContent.getLayoutParams()); - if (height > maxBodyHeight && lp.height != maxBodyHeight) { - lp.height = maxBodyHeight; - svContent.setLayoutParams(lp); - } else if (height < maxBodyHeight && lp.height == maxBodyHeight) { - lp.height = LayoutParams.WRAP_CONTENT; - svContent.setLayoutParams(lp); - } - } - - public void afterTextChanged(Editable s) { - - } - - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - public void onPause() { - DeviceHelper.getInstance(activity).hideSoftInput(getContentView()); - super.onPause(); - } - -} diff --git a/app/src/main/java/onekeyshare/themes/classic/FriendAdapter.java b/app/src/main/java/onekeyshare/themes/classic/FriendAdapter.java deleted file mode 100644 index 87c10b382d..0000000000 --- a/app/src/main/java/onekeyshare/themes/classic/FriendAdapter.java +++ /dev/null @@ -1,284 +0,0 @@ -/* - * 官网地站:http://www.mob.com - * 技术支持QQ: 4006852216 - * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复) - * - * Copyright (c) 2013年 mob.com. All rights reserved. - */ - -package onekeyshare.themes.classic; - -import android.graphics.drawable.ColorDrawable; -import android.os.Handler.Callback; -import android.os.Message; -import android.view.View; -import android.view.ViewGroup; -import android.widget.AdapterView.OnItemClickListener; - -import com.mob.tools.gui.PullToRefreshListAdapter; -import com.mob.tools.gui.PullToRefreshView; -import com.mob.tools.utils.UIHandler; - -import java.util.ArrayList; -import java.util.HashMap; - -import cn.sharesdk.framework.Platform; -import cn.sharesdk.framework.PlatformActionListener; - -/** 好友列表的适配器 */ -public class FriendAdapter extends PullToRefreshListAdapter implements PlatformActionListener { - private FriendListPage activity; - private boolean hasNext; - private Platform platform; - /** 请求好友列表时,每页15个 */ - private final int pageCount = 15; - /** 当前的好友列表是第几页 */ - private int curPage; - /** 好友列表数据 */ - private ArrayList follows; - /** 判断当前的好友列表数据与请求的新数据是否有重复 */ - private HashMap map; - /** 好友列表的头部View */ - private PRTHeader llHeader; - /** 根据设计,按照比例来布局,以此来适配所有手机 */ - private float ratio; - - public FriendAdapter(FriendListPage activity, PullToRefreshView view) { - super(view); - this.activity = activity; - - curPage = -1; - hasNext = true; - map = new HashMap(); - follows = new ArrayList(); - - getListView().setDivider(new ColorDrawable(0xffeaeaea)); - } - - public void setRatio(float ratio) { - this.ratio = ratio; - getListView().setDividerHeight((int) (ratio < 1 ? 1 : ratio)); - } - - public void setOnItemClickListener(OnItemClickListener listener) { - getListView().setOnItemClickListener(listener); - } - - public void setPlatform(Platform platform) { - this.platform = platform; - platform.setPlatformActionListener(this); - } - - private void next() { - if (hasNext) { - platform.listFriend(pageCount, curPage + 1, null); - } - } - - public void onComplete(Platform plat, int action, HashMap res) { - final FollowersResult followersResult = parseFollowers(platform.getName(), res, map); - if (followersResult == null) { - UIHandler.sendEmptyMessage(0, new Callback() { - public boolean handleMessage(Message msg) { - notifyDataSetChanged(); - return false; - } - }); - return; - } - - hasNext = followersResult.hasNextPage; - if (followersResult.list != null && followersResult.list.size() > 0) { - curPage++; - Message msg = new Message(); - msg.what = 1; - msg.obj = followersResult.list; - UIHandler.sendMessage(msg, new Callback() { - public boolean handleMessage(Message msg) { - if (curPage <= 0) { - follows.clear(); - } - follows.addAll(followersResult.list); - notifyDataSetChanged(); - return false; - } - }); - } - } - - private FollowersResult parseFollowers(String platform, HashMap res, HashMap uidMap) { - if (res == null || res.size() <= 0) { - return null; - } - - boolean hasNext = false; - ArrayList data = new ArrayList(); - if ("SinaWeibo".equals(platform)) { - // users[id, name, description] - @SuppressWarnings("unchecked") - ArrayList> users = (ArrayList>) res.get("users"); - for (HashMap user : users) { - String uid = String.valueOf(user.get("id")); - if (!uidMap.containsKey(uid)) { - Following following = new Following(); - following.uid = uid; - following.screenName = String.valueOf(user.get("name")); - following.description = String.valueOf(user.get("description")); - following.icon = String.valueOf(user.get("profile_image_url")); - following.atName = following.screenName; - uidMap.put(following.uid, true); - data.add(following); - } - } - hasNext = (Integer) res.get("total_number") > uidMap.size(); - } else if ("TencentWeibo".equals(platform)) { - hasNext = ((Integer)res.get("hasnext") == 0); - // info[nick, name, tweet[text]] - @SuppressWarnings("unchecked") - ArrayList> infos = (ArrayList>) res.get("info"); - for (HashMap info : infos) { - String uid = String.valueOf(info.get("name")); - if (!uidMap.containsKey(uid)) { - Following following = new Following(); - following.screenName = String.valueOf(info.get("nick")); - following.uid = uid; - following.atName = uid; - @SuppressWarnings("unchecked") - ArrayList> tweets = (ArrayList>) info.get("tweet"); - for (HashMap tweet : tweets) { - following.description = String.valueOf(tweet.get("text")); - break; - } - following.icon = String.valueOf(info.get("head")) + "/100"; - uidMap.put(following.uid, true); - data.add(following); - } - } - } else if ("Facebook".equals(platform)) { - // data[id, name] - @SuppressWarnings("unchecked") - ArrayList> datas = (ArrayList>) res.get("data"); - for (HashMap d : datas) { - String uid = String.valueOf(d.get("id")); - if (!uidMap.containsKey(uid)) { - Following following = new Following(); - following.uid = uid; - following.atName = "["+uid+"]"; - following.screenName = String.valueOf(d.get("name")); - @SuppressWarnings("unchecked") - HashMap picture = (HashMap) d.get("picture"); - if (picture != null) { - @SuppressWarnings("unchecked") - HashMap pData = (HashMap) picture.get("data"); - following.icon = String.valueOf(pData.get("url")); - } - uidMap.put(following.uid, true); - data.add(following); - } - } - @SuppressWarnings("unchecked") - HashMap paging = (HashMap) res.get("paging"); - hasNext = paging.containsKey("next"); - } else if ("Twitter".equals(platform)) { - // users[screen_name, name, description] - @SuppressWarnings("unchecked") - ArrayList> users = (ArrayList>) res.get("users"); - for (HashMap user : users) { - String uid = String.valueOf(user.get("screen_name")); - if (!uidMap.containsKey(uid)) { - Following following = new Following(); - following.uid = uid; - following.atName = uid; - following.screenName = String.valueOf(user.get("name")); - following.description = String.valueOf(user.get("description")); - following.icon = String.valueOf(user.get("profile_image_url")); - uidMap.put(following.uid, true); - data.add(following); - } - } - } - - FollowersResult ret = new FollowersResult(); - ret.list = data; - ret.hasNextPage = hasNext; - return ret; - } - - public void onError(Platform plat, int action, Throwable t) { - t.printStackTrace(); - } - - public void onCancel(Platform plat, int action) { - UIHandler.sendEmptyMessage(0, new Callback() { - public boolean handleMessage(Message msg) { - activity.finish(); - return false; - } - }); - } - - public Following getItem(int position) { - return follows.get(position); - } - - public long getItemId(int position) { - return position; - } - - public int getCount() { - return follows == null ? 0 : follows.size(); - } - - public View getHeaderView() { - if (llHeader == null) { - llHeader = new PRTHeader(getContext()); - } - return llHeader; - } - - public void onPullDown(int percent) { - llHeader.onPullDown(percent); - } - - public void onRequest() { - llHeader.onRequest(); - curPage = -1; - hasNext = true; - map.clear(); - next(); - } - - public void onReversed() { - llHeader.reverse(); - } - - public View getView(int position, View convertView, ViewGroup parent) { - if (convertView == null) { - FriendListItem llItem = new FriendListItem(parent.getContext(), ratio); - convertView = llItem; - } - FriendListItem llItem = (FriendListItem) convertView; - llItem.update(getItem(position), isFling()); - - if (position == getCount() - 1) { - next(); - } - return convertView; - } - - public static class Following { - public boolean checked; - public String screenName; - public String description; - public String uid; - public String icon; - //@Name 用于微博等提示或关联某个人 - public String atName; - } - - private static class FollowersResult { - public ArrayList list; - public boolean hasNextPage = false; - } - -} diff --git a/app/src/main/java/onekeyshare/themes/classic/FriendListItem.java b/app/src/main/java/onekeyshare/themes/classic/FriendListItem.java deleted file mode 100644 index 45b37a078d..0000000000 --- a/app/src/main/java/onekeyshare/themes/classic/FriendListItem.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * 官网地站:http://www.mob.com - * 技术支持QQ: 4006852216 - * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复) - * - * Copyright (c) 2013年 mob.com. All rights reserved. - */ - -package onekeyshare.themes.classic; - -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.Color; -import android.util.TypedValue; -import android.view.Gravity; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; - -import com.mob.tools.gui.AsyncImageView; -import com.mob.tools.gui.BitmapProcessor; - - -/** 好友列表的item */ -public class FriendListItem extends LinearLayout { - private static final int DESIGN_AVATAR_WIDTH = 64; - private static final int DESIGN_AVATAR_PADDING = 24; - private static final int DESIGN_ITEM_HEIGHT = 96; - private static final int DESIGN_ITEM_PADDING = 20; - - private ImageView ivCheck; - private AsyncImageView aivIcon; - private TextView tvName; - /** 好友列表中,被选中的checkbox图标 */ - private Bitmap bmChd; - /** 好友列表中,没选中的checkbox图标 */ - private Bitmap bmUnch; - - public FriendListItem(Context context, float ratio) { - super(context); - int itemPadding = (int) (ratio * DESIGN_ITEM_PADDING); - setPadding(itemPadding, 0, itemPadding, 0); - setMinimumHeight((int) (ratio * DESIGN_ITEM_HEIGHT)); - setBackgroundColor(Color.WHITE); - - ivCheck = new ImageView(context); - LayoutParams lp = new LayoutParams( - LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); - lp.gravity = Gravity.CENTER_VERTICAL; - addView(ivCheck, lp); - - aivIcon = new AsyncImageView(context); - int avatarWidth = (int) (ratio * DESIGN_AVATAR_WIDTH); - lp = new LayoutParams(avatarWidth, avatarWidth); - lp.gravity = Gravity.CENTER_VERTICAL; - int avatarMargin = (int) (ratio * DESIGN_AVATAR_PADDING); - lp.setMargins(avatarMargin, 0, avatarMargin, 0); - addView(aivIcon, lp); - - tvName = new TextView(context); - tvName.setTextColor(0xff000000); - tvName.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18); - tvName.setSingleLine(); - lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); - lp.gravity = Gravity.CENTER_VERTICAL; - lp.weight = 1; - addView(tvName, lp); - - int resId = com.mob.tools.utils.R.getBitmapRes(context, "ssdk_oks_classic_check_checked"); - if (resId > 0) { - bmChd = BitmapFactory.decodeResource(context.getResources(), resId); - } - resId = com.mob.tools.utils.R.getBitmapRes(getContext(), "ssdk_oks_classic_check_default"); - if (resId > 0) { - bmUnch = BitmapFactory.decodeResource(context.getResources(), resId); - } - } - - public void update(FriendAdapter.Following following, boolean fling) { - tvName.setText(following.screenName); - ivCheck.setImageBitmap(following.checked ? bmChd : bmUnch); - if (aivIcon != null) { - if (fling) { - Bitmap bm = BitmapProcessor.getBitmapFromCache(following.icon); - if (bm != null && !bm.isRecycled()) { - aivIcon.setImageBitmap(bm); - } else { - aivIcon.execute(null, 0); - } - } else { - aivIcon.execute(following.icon, 0); - } - } - } - -} diff --git a/app/src/main/java/onekeyshare/themes/classic/FriendListPage.java b/app/src/main/java/onekeyshare/themes/classic/FriendListPage.java deleted file mode 100644 index 3435ed7e40..0000000000 --- a/app/src/main/java/onekeyshare/themes/classic/FriendListPage.java +++ /dev/null @@ -1,200 +0,0 @@ -/* - * 官网地站:http://www.mob.com - * 技术支持QQ: 4006852216 - * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复) - * - * Copyright (c) 2013年 mob.com. All rights reserved. - */ - -package onekeyshare.themes.classic; - -import android.graphics.drawable.ColorDrawable; -import android.util.TypedValue; -import android.view.Gravity; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.ViewGroup.LayoutParams; -import android.widget.AdapterView; -import android.widget.AdapterView.OnItemClickListener; -import android.widget.FrameLayout; -import android.widget.LinearLayout; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import com.mob.tools.gui.PullToRefreshView; - -import java.util.ArrayList; -import java.util.HashMap; - -import cn.sharesdk.framework.Platform; -import onekeyshare.OnekeySharePage; -import onekeyshare.OnekeyShareThemeImpl; - - -/** 编辑界面,@好友时,弹出的好友列表 */ -public abstract class FriendListPage extends OnekeySharePage implements OnClickListener, OnItemClickListener { - private static final int DESIGN_LEFT_PADDING = 40; - - private Platform platform; - private LinearLayout llPage; - private RelativeLayout rlTitle; - private TextView tvCancel; - private TextView tvConfirm; - private FriendAdapter adapter; - private int lastPosition = -1; - /** 展示好友列表时,已选择要‘@’的好友个数 */ - private int checkNum = 0; - - public FriendListPage(OnekeyShareThemeImpl impl) { - super(impl); - } - - public void setPlatform(Platform platform) { - this.platform = platform; - } - - public void onCreate() { - activity.getWindow().setBackgroundDrawable(new ColorDrawable(0xfff3f3f3)); - - llPage = new LinearLayout(activity); - llPage.setOrientation(LinearLayout.VERTICAL); - activity.setContentView(llPage); - - rlTitle = new RelativeLayout(activity); - float ratio = getRatio(); - int titleHeight = (int) (getDesignTitleHeight() * ratio); - LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( - LayoutParams.MATCH_PARENT, titleHeight); - llPage.addView(rlTitle, lp); - initTitle(rlTitle, ratio); - - View line = new View(activity); - LinearLayout.LayoutParams lpline = new LinearLayout.LayoutParams( - LayoutParams.MATCH_PARENT, (int) (ratio < 1 ? 1 : ratio)); - line.setBackgroundColor(0xffdad9d9); - llPage.addView(line, lpline); - - FrameLayout flPage = new FrameLayout(getContext()); - LinearLayout.LayoutParams lpFl = new LinearLayout.LayoutParams( - LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); - lpFl.weight = 1; - flPage.setLayoutParams(lpFl); - llPage.addView(flPage); - - // 关注(或朋友)列表 - PullToRefreshView followList = new PullToRefreshView(getContext()); - FrameLayout.LayoutParams lpLv = new FrameLayout.LayoutParams( - LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); - followList.setLayoutParams(lpLv); - flPage.addView(followList); - - adapter = new FriendAdapter(this, followList); - adapter.setPlatform(platform); - adapter.setRatio(ratio); - adapter.setOnItemClickListener(this); - followList.setAdapter(adapter); - - // 请求数据 - followList.performPulling(true); - } - - protected abstract float getRatio(); - - protected abstract int getDesignTitleHeight(); - - private void initTitle(RelativeLayout rlTitle, float ratio) { - tvCancel = new TextView(activity); - tvCancel.setTextColor(0xff3b3b3b); - tvCancel.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18); - tvCancel.setGravity(Gravity.CENTER); - int resId = com.mob.tools.utils.R.getStringRes(activity, "ssdk_oks_cancel"); - if (resId > 0) { - tvCancel.setText(resId); - } - int padding = (int) (DESIGN_LEFT_PADDING * ratio); - tvCancel.setPadding(padding, 0, padding, 0); - RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT); - rlTitle.addView(tvCancel, lp); - tvCancel.setOnClickListener(this); - - TextView tvTitle = new TextView(activity); - tvTitle.setTextColor(0xff3b3b3b); - tvTitle.setTextSize(TypedValue.COMPLEX_UNIT_SP, 22); - tvTitle.setGravity(Gravity.CENTER); - resId = com.mob.tools.utils.R.getStringRes(activity, "ssdk_oks_contacts"); - if (resId > 0) { - tvTitle.setText(resId); - } - lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT); - lp.addRule(RelativeLayout.CENTER_IN_PARENT); - rlTitle.addView(tvTitle, lp); - - tvConfirm = new TextView(activity); - tvConfirm.setTextColor(0xffff6d11); - tvConfirm.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18); - tvConfirm.setGravity(Gravity.CENTER); - resId = com.mob.tools.utils.R.getStringRes(activity, "ssdk_oks_confirm"); - if (resId > 0) { - tvConfirm.setText(resId); - } - tvConfirm.setPadding(padding, 0, padding, 0); - lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT); - lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); - rlTitle.addView(tvConfirm, lp); - tvConfirm.setOnClickListener(this); - } - - public void onClick(View v) { - if (v.equals(tvCancel)) { - finish(); - } else { - ArrayList selected = new ArrayList(); - for (int i = 0, size = adapter.getCount(); i < size; i++) { - if (adapter.getItem(i).checked) { - selected.add(adapter.getItem(i).atName); - } - } - - HashMap res = new HashMap(); - res.put("selected", selected); - res.put("platform", platform); - setResult(res); - finish(); - } - } - - public void onItemClick(AdapterView parent, View view, int position, long id) { - if ("FacebookMessenger".equals(platform.getName())) { - if(lastPosition >= 0) { - FriendAdapter.Following lastFollwing = adapter.getItem(lastPosition); - lastFollwing.checked = false; - } - lastPosition = position; - } - FriendAdapter.Following following = adapter.getItem(position); - following.checked = !following.checked; - - if(following.checked) { - checkNum++; - } else { - checkNum--; - } - - updateConfirmView(); - adapter.notifyDataSetChanged(); - } - - private void updateConfirmView() { - int resId = com.mob.tools.utils.R.getStringRes(activity, "ssdk_oks_confirm"); - String confirm = "Confirm"; - if(resId > 0) { - confirm = getContext().getResources().getString(resId); - } - if(checkNum == 0) { - tvConfirm.setText(confirm); - } else if(checkNum > 0) { - tvConfirm.setText(confirm + "(" + checkNum + ")"); - } - } - -} diff --git a/app/src/main/java/onekeyshare/themes/classic/IndicatorView.java b/app/src/main/java/onekeyshare/themes/classic/IndicatorView.java deleted file mode 100644 index 954e6b1cf8..0000000000 --- a/app/src/main/java/onekeyshare/themes/classic/IndicatorView.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * 官网地站:http://www.mob.com - * 技术支持QQ: 4006852216 - * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复) - * - * Copyright (c) 2013年 mob.com. All rights reserved. - */ - -package onekeyshare.themes.classic; - -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Paint; -import android.view.View; - -/** 九宫格滑动时,下面显示的圆圈 */ -public class IndicatorView extends View { - private static final int DESIGN_INDICATOR_RADIUS = 6; - private static final int DESIGN_INDICATOR_DISTANCE = 14; - private static final int DESIGN_BOTTOM_HEIGHT = 52; - /** 九格宫有多少页数 */ - private int count; - /** 当前显示的是九格宫中的第几页 */ - private int current; - - public IndicatorView(Context context) { - super(context); - } - - public void setScreenCount(int count) { - this.count = count; - } - - public void onScreenChange(int currentScreen, int lastScreen) { - if (currentScreen != current) { - current = currentScreen; - postInvalidate(); - } - } - - protected void onDraw(Canvas canvas) { - if (count <= 1) { - this.setVisibility(View.GONE); - return; - } - float height = getHeight(); - float radius = height * DESIGN_INDICATOR_RADIUS / DESIGN_BOTTOM_HEIGHT; - float distance = height * DESIGN_INDICATOR_DISTANCE / DESIGN_BOTTOM_HEIGHT; - float windowWidth = radius * 2 * count + distance * (count - 1); - float left = (getWidth() - windowWidth) / 2; - float cy = height / 2; - - canvas.drawColor(Color.WHITE); - Paint paint = new Paint(); - paint.setAntiAlias(true); - for (int i = 0; i < count; i++) { - if (i == current) { - paint.setColor(0xff5d71a0); - } else { - paint.setColor(0xffafb1b7); - } - float cx = left + (radius * 2 + distance) * i; - canvas.drawCircle(cx, cy, radius, paint); - } - } - -} diff --git a/app/src/main/java/onekeyshare/themes/classic/PRTHeader.java b/app/src/main/java/onekeyshare/themes/classic/PRTHeader.java deleted file mode 100644 index 76048ae4f5..0000000000 --- a/app/src/main/java/onekeyshare/themes/classic/PRTHeader.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * 官网地站:http://www.mob.com - * 技术支持QQ: 4006852216 - * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复) - * - * Copyright (c) 2013年 mob.com. All rights reserved. - */ - -package onekeyshare.themes.classic; - -import android.content.Context; -import android.graphics.drawable.Drawable; -import android.util.TypedValue; -import android.view.Gravity; -import android.view.View; -import android.widget.LinearLayout; -import android.widget.ProgressBar; -import android.widget.TextView; - -import static com.mob.tools.utils.R.getStringRes; - -/** 下拉刷新的头部控件 */ -public class PRTHeader extends LinearLayout { - private static final int DESIGN_SCREEN_WIDTH = 720; - private static final int DESIGN_AVATAR_WIDTH = 64; - private static final int DESIGN_AVATAR_PADDING = 24; - - private TextView tvHeader; - private RotateImageView ivArrow; - private ProgressBar pbRefreshing; - - public PRTHeader(Context context) { - super(context); - int[] size = com.mob.tools.utils.R.getScreenSize(context); - float screenWidth = size[0] < size[1] ? size[0] : size[1]; - float ratio = screenWidth / DESIGN_SCREEN_WIDTH; - - setOrientation(VERTICAL); - - LinearLayout llInner = new LinearLayout(context); - LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); - lp.gravity = Gravity.CENTER_HORIZONTAL; - addView(llInner, lp); - - ivArrow = new RotateImageView(context); - int resId = com.mob.tools.utils.R.getBitmapRes(context, "ssdk_oks_ptr_ptr"); - if (resId > 0) { - ivArrow.setImageResource(resId); - } - int avatarWidth = (int) (ratio * DESIGN_AVATAR_WIDTH); - lp = new LayoutParams(avatarWidth, avatarWidth); - lp.gravity = Gravity.CENTER_VERTICAL; - int avataPadding = (int) (ratio * DESIGN_AVATAR_PADDING); - lp.topMargin = lp.bottomMargin = avataPadding; - llInner.addView(ivArrow, lp); - - pbRefreshing = new ProgressBar(context); - resId = com.mob.tools.utils.R.getBitmapRes(context, "ssdk_oks_classic_progressbar"); - Drawable pbdrawable = context.getResources().getDrawable(resId); - pbRefreshing.setIndeterminateDrawable(pbdrawable); - llInner.addView(pbRefreshing, lp); - pbRefreshing.setVisibility(View.GONE); - - tvHeader = new TextView(getContext()); - tvHeader.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18); - tvHeader.setPadding(avataPadding, 0, avataPadding, 0); - tvHeader.setTextColor(0xff09bb07); - lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); - lp.gravity = Gravity.CENTER_VERTICAL; - llInner.addView(tvHeader, lp); - } - - public void onPullDown(int percent) { - if (percent > 100) { - int degree = (percent - 100) * 180 / 20; - if (degree > 180) { - degree = 180; - } - if (degree < 0) { - degree = 0; - } - ivArrow.setRotation(degree); - } else { - ivArrow.setRotation(0); - } - - if (percent < 100) { - int resId = getStringRes(getContext(), "ssdk_oks_pull_to_refresh"); - if (resId > 0) { - tvHeader.setText(resId); - } - } else { - int resId = getStringRes(getContext(), "ssdk_oks_release_to_refresh"); - if (resId > 0) { - tvHeader.setText(resId); - } - } - } - - public void onRequest() { - ivArrow.setVisibility(View.GONE); - pbRefreshing.setVisibility(View.VISIBLE); - int resId = getStringRes(getContext(), "ssdk_oks_refreshing"); - if (resId > 0) { - tvHeader.setText(resId); - } - } - - public void reverse() { - pbRefreshing.setVisibility(View.GONE); - ivArrow.setRotation(180); - ivArrow.setVisibility(View.VISIBLE); - } - -} diff --git a/app/src/main/java/onekeyshare/themes/classic/PicViewerPage.java b/app/src/main/java/onekeyshare/themes/classic/PicViewerPage.java deleted file mode 100644 index cfae3b3a38..0000000000 --- a/app/src/main/java/onekeyshare/themes/classic/PicViewerPage.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * 官网地站:http://www.mob.com - * 技术支持QQ: 4006852216 - * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复) - * - * Copyright (c) 2013年 mob.com. All rights reserved. - */ - -package onekeyshare.themes.classic; - -import android.graphics.Bitmap; -import android.graphics.drawable.ColorDrawable; -import android.view.ViewTreeObserver.OnGlobalLayoutListener; -import android.widget.ImageView.ScaleType; - -import com.mob.tools.gui.ScaledImageView; - -import onekeyshare.OnekeySharePage; -import onekeyshare.OnekeyShareThemeImpl; - - -/** 图片浏览的视图类 */ -public class PicViewerPage extends OnekeySharePage implements OnGlobalLayoutListener { - private Bitmap pic; - /** 图片浏览的缩放控件 */ - private ScaledImageView sivViewer; - - public PicViewerPage(OnekeyShareThemeImpl impl) { - super(impl); - } - - /** 设置图片用于浏览 */ - public void setImageBitmap(Bitmap pic) { - this.pic = pic; - } - - public void onCreate() { - activity.getWindow().setBackgroundDrawable(new ColorDrawable(0x4c000000)); - - sivViewer = new ScaledImageView(activity); - sivViewer.setScaleType(ScaleType.MATRIX); - activity.setContentView(sivViewer); - if (pic != null) { - sivViewer.getViewTreeObserver().addOnGlobalLayoutListener(this); - } - } - - public void onGlobalLayout() { - sivViewer.getViewTreeObserver().removeGlobalOnLayoutListener(this); - sivViewer.post(new Runnable() { - public void run() { - sivViewer.setBitmap(pic); - } - }); - } - -} diff --git a/app/src/main/java/onekeyshare/themes/classic/PlatformPage.java b/app/src/main/java/onekeyshare/themes/classic/PlatformPage.java deleted file mode 100644 index 1c81cf0242..0000000000 --- a/app/src/main/java/onekeyshare/themes/classic/PlatformPage.java +++ /dev/null @@ -1,269 +0,0 @@ -/* - * 官网地站:http://www.mob.com - * 技术支持QQ: 4006852216 - * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复) - * - * Copyright (c) 2013年 mob.com. All rights reserved. - */ - -package onekeyshare.themes.classic; - -import android.annotation.TargetApi; -import android.os.Build; -import android.util.Log; -import android.view.Gravity; -import android.view.MotionEvent; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.ViewGroup.LayoutParams; -import android.view.Window; -import android.view.WindowManager; -import android.view.animation.Animation; -import android.view.animation.ScaleAnimation; -import android.widget.LinearLayout; -import android.widget.TextView; - -import com.mob.tools.gui.MobViewPager; - -import java.util.ArrayList; -import java.util.HashMap; - -import cn.sharesdk.framework.CustomPlatform; -import cn.sharesdk.framework.Platform; -import cn.sharesdk.framework.Platform.ShareParams; -import cn.sharesdk.framework.ShareSDK; -import onekeyshare.CustomerLogo; -import onekeyshare.OnekeySharePage; -import onekeyshare.OnekeyShareThemeImpl; - -/** 九宫格的抽象类 */ -public abstract class PlatformPage extends OnekeySharePage { - private ClassicTheme impl; - /** 点击九格宫,展示编辑界面,要执行的子线程 */ - private Runnable beforeFinish; - /** 九宫格显示时的动画 */ - private Animation animShow; - /** 九宫格隐藏时的动画 */ - private Animation animHide; - private LinearLayout llPage,llPanel; - private boolean finished; - - public PlatformPage(OnekeyShareThemeImpl impl) { - super(impl); - setOnFinishListener(impl.getOnFinishListener()); - this.impl = com.mob.tools.utils.R.forceCast(impl); - } - - @TargetApi(19) - protected void setTranslucentStatus(boolean status) { - Window window = activity.getWindow(); - WindowManager.LayoutParams winParams = window.getAttributes(); - final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS; - if (status) { - winParams.flags |= bits; - } else { - winParams.flags &= ~bits; - } - window.setAttributes(winParams); - } - - public void onCreate() { -// activity.getWindow().setBackgroundDrawable(new ColorDrawable(0x4c000000)); - initAnims(); - - llPage = new LinearLayout(activity); - llPage.setBackgroundColor(0x4c000000); - llPage.setOrientation(LinearLayout.VERTICAL); - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - setTranslucentStatus(true); - } - - activity.setContentView(llPage); - TextView vTop = new TextView(activity); - LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( - LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); - lp.weight = 1; - vTop.setOnClickListener(new OnClickListener() { - public void onClick(View v) { - finish(); - } - }); - llPage.addView(vTop, lp); - - llPanel = new LinearLayout(activity); - llPanel.setOrientation(LinearLayout.VERTICAL); - llPanel.setGravity(Gravity.CENTER); - lp = new LinearLayout.LayoutParams( - LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); - lp.gravity = Gravity.CENTER; -// llPanel.setAnimation(animShow); - llPage.addView(llPanel, lp); - - MobViewPager mvp = new MobViewPager(activity); - ArrayList cells = collectCells(); - PlatformPageAdapter adapter = newAdapter(cells); -// lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, adapter.getPanelHeight()); -// int heightPixels = getContext().getResources().getDisplayMetrics().heightPixels; - int widthPixels = getContext().getResources().getDisplayMetrics().widthPixels; - lp = new LinearLayout.LayoutParams(widthPixels / 2, adapter.getCellHeight() * 2); - Log.e("TAG", "lp = " + lp.height); - llPanel.addView(mvp, lp); - mvp.setOnTouchListener(new View.OnTouchListener() { - @Override - public boolean onTouch(View v, MotionEvent event) { - if (event.getAction() == MotionEvent.ACTION_DOWN) { - finish(); - } - return false; - } - }); -// IndicatorView vInd = new IndicatorView(activity); -// lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, adapter.getBottomHeight()); -// lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 0); -// llPanel.addView(vInd, lp); - -// vInd.setScreenCount(adapter.getCount()); -// vInd.onScreenChange(0, 0); -// adapter.setIndicator(vInd); - mvp.setAdapter(adapter); - - llPage.setOnTouchListener(new View.OnTouchListener() { - @Override - public boolean onTouch(View v, MotionEvent event) { - if (event.getAction() == MotionEvent.ACTION_DOWN) { - finish(); - } - return false; - } - }); - - llPanel.setVisibility(View.GONE); - runOnUIThread(new Runnable() { - @Override - public void run() { - llPanel.clearAnimation(); - llPanel.startAnimation(animShow); - llPanel.setVisibility(View.VISIBLE); - } - }, 50); - } - - protected abstract PlatformPageAdapter newAdapter(ArrayList cells); - - protected ArrayList collectCells() { - ArrayList cells = new ArrayList(); - - Platform[] platforms = ShareSDK.getPlatformList(); - if (platforms == null) { - platforms = new Platform[0]; - } - HashMap hides = getHiddenPlatforms(); - if (hides == null) { - hides = new HashMap(); - } - for (Platform p : platforms) { - if (!hides.containsKey(p.getName())) { - cells.add(p); - } - } - - ArrayList customers = getCustomerLogos(); - if (customers != null && customers.size() > 0) { - cells.addAll(customers); - } - - return cells; - } - - public final void showEditPage(final Platform platform) { - beforeFinish = new Runnable() { - public void run() { - boolean isSilent = isSilent(); - boolean isCustomPlatform = platform instanceof CustomPlatform; - boolean isUseClientToShare = isUseClientToShare(platform); - if (isSilent || isCustomPlatform || isUseClientToShare) { - shareSilently(platform); - } else { - ShareParams sp = formateShareData(platform); - if (sp != null) { - // 编辑分享内容的统计 - ShareSDK.logDemoEvent(3, null); - if (getCustomizeCallback() != null) { - getCustomizeCallback().onShare(platform, sp); - } - impl.showEditPage(activity, platform, sp); - } - } - } - }; - finish(); - } - - public final void performCustomLogoClick(final View v, final CustomerLogo logo) { - beforeFinish = new Runnable() { - public void run() { - logo.listener.onClick(v); - } - }; - finish(); - } - - private void initAnims() { - animShow = new ScaleAnimation(0, 1, 0, 1, Animation.RELATIVE_TO_SELF, - 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); - animShow.setDuration(300); - - animHide = new ScaleAnimation(1, 0, 1, 0, Animation.RELATIVE_TO_SELF, - 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); - animHide.setDuration(300); - } - - public boolean onFinish() { - if (finished) { - finished = false; - return false; - } - - animHide.setAnimationListener(new Animation.AnimationListener() { - public void onAnimationStart(Animation animation) { - - } - - public void onAnimationRepeat(Animation animation) { - - } - - public void onAnimationEnd(Animation animation) { - if (beforeFinish == null) { - // 取消分享菜单的统计 - ShareSDK.logDemoEvent(2, null); - } else { - beforeFinish.run(); - beforeFinish = null; - } - llPage.setVisibility(View.GONE); - finished = true; - finish(); - } - }); - llPanel.clearAnimation(); - llPanel.setAnimation(animHide); - llPanel.setVisibility(View.GONE); - if (mOnFinishListener != null) { - mOnFinishListener.onFinish(); - } - return true; - } - - private OnFinishListener mOnFinishListener; - - public void setOnFinishListener(OnFinishListener listener) { - mOnFinishListener = listener; - } - - public interface OnFinishListener { - void onFinish(); - } - -} diff --git a/app/src/main/java/onekeyshare/themes/classic/PlatformPageAdapter.java b/app/src/main/java/onekeyshare/themes/classic/PlatformPageAdapter.java deleted file mode 100644 index ca3e3510ab..0000000000 --- a/app/src/main/java/onekeyshare/themes/classic/PlatformPageAdapter.java +++ /dev/null @@ -1,233 +0,0 @@ -/* - * 官网地站:http://www.mob.com - * 技术支持QQ: 4006852216 - * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复) - * - * Copyright (c) 2013年 mob.com. All rights reserved. - */ - -package onekeyshare.themes.classic; - -import android.content.Context; -import android.util.Log; -import android.view.Gravity; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.ViewGroup; -import android.view.ViewGroup.LayoutParams; -import android.widget.ImageView; -import android.widget.ImageView.ScaleType; -import android.widget.LinearLayout; - -import com.mob.tools.gui.ViewPagerAdapter; - -import java.util.ArrayList; - -import cn.sharesdk.framework.Platform; -import onekeyshare.CustomerLogo; - -/** 九宫格的适配器抽象类 */ -public abstract class PlatformPageAdapter extends ViewPagerAdapter implements OnClickListener { - /** 1秒内多次点击九格宫内的图标无效 */ - protected static final int MIN_CLICK_INTERVAL = 1000; - public static final int DESIGN_BOTTOM_HEIGHT = 52; - - /** 九格宫内图标排列的二维数组,一维对应平台,二维对应页数 */ - protected Object[][] cells; - private PlatformPage page; - private IndicatorView vInd; - - protected int bottomHeight; - protected int panelHeight; - protected int cellHeight; - protected int lineSize; - protected int sepLineWidth; - protected int paddingTop; - protected int logoHeight; - - private long lastClickTime; - - public PlatformPageAdapter(PlatformPage page, ArrayList cells) { - this.page = page; - if (cells != null && !cells.isEmpty()) { - calculateSize(page.getContext(), cells); - collectCells(cells); - } - } - - /** 计算九宫格的格数,行数,格高,行高,图标大小 */ - protected abstract void calculateSize(Context context, ArrayList plats); - - /** 计算九宫格的格数,行数 */ - protected abstract void collectCells(ArrayList plats); - - public int getBottomHeight() { - return bottomHeight; - } - - public int getPanelHeight() { - return panelHeight; - } - - public int getCellHeight() { - return cellHeight; - } - - public int getCount() { - return cells == null? 0: cells.length; - } - - public void setIndicator(IndicatorView view) { - vInd = view; - } - - public void onScreenChange(int currentScreen, int lastScreen) { - if (vInd != null) { - vInd.setScreenCount(getCount()); - vInd.onScreenChange(currentScreen, lastScreen); - } - } - - public View getView(int index, View convertView, ViewGroup parent) { - if (convertView == null) { -// convertView = LayoutInflater.from(parent.getContext()).inflate(com.example.khy.sharedemo.R.layout.share_layout,parent,false); - convertView = createPanel(parent.getContext()); - } - - LinearLayout llPanel = com.mob.tools.utils.R.forceCast(convertView); - LinearLayout[] llCells = com.mob.tools.utils.R.forceCast(llPanel.getTag()); - refreshPanel(llCells, cells[index]); - return convertView; - } - - private View createPanel(Context context) { - LinearLayout llPanel = new LinearLayout(context); - - llPanel.setOrientation(LinearLayout.VERTICAL); -// llPanel.setBackgroundColor(0xfff2f2f2); -// llPanel.setBackgroundColor(Color.BLUE); - int lineCount = (panelHeight / cellHeight); - Log.e("TAG","lineCount:"+lineCount); - lineCount = 2; - lineSize = 2; - LinearLayout[] llCells = new LinearLayout[lineCount * lineSize]; - llPanel.setTag(llCells); -// llPanel.setGravity(Gravity.CENTER); - int cellBack = com.mob.tools.utils.R.getBitmapRes(context, "ssdk_oks_classic_platform_cell_back"); - LinearLayout.LayoutParams lp; - for (int i = 0; i < lineCount; i++) { - LinearLayout llLine = new LinearLayout(context); - lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, cellHeight); - Log.e("TAG", "cellHeight = " + cellHeight); - Log.e("TAG", "panelHeight = " + panelHeight); - llPanel.addView(llLine, lp); - - for (int j = 0; j < lineSize; j++) { - Log.e("TAG",lineSize+""); - llCells[i * lineSize + j] = new LinearLayout(context); - llCells[i * lineSize + j].setBackgroundResource(cellBack); - llCells[i * lineSize + j].setOrientation(LinearLayout.VERTICAL); - llCells[i * lineSize + j].setGravity(Gravity.CENTER); - lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, cellHeight); - lp.weight = 1; - llLine.addView(llCells[i * lineSize + j], lp); - -// if (j < lineSize - 1) { -// View vSep = new View(context); -// lp = new LinearLayout.LayoutParams(sepLineWidth, LayoutParams.MATCH_PARENT); -// llLine.addView(vSep, lp); -// } - } - -// View vSep = new View(context); -// lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, sepLineWidth); -// llPanel.addView(vSep, lp); - } - - for (LinearLayout llCell : llCells) { - ImageView ivLogo = new ImageView(context); - ivLogo.setScaleType(ScaleType.CENTER_INSIDE); - lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, logoHeight); -// lp.topMargin = paddingTop; - llCell.addView(ivLogo, lp); - -// TextView tvName = new TextView(context); -// tvName.setTextColor(0xff646464); -// tvName.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14); -// tvName.setGravity(Gravity.CENTER); -// lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); -// lp.weight = 1; -// llCell.addView(tvName, lp); - } -// View llPanel = LayoutInflater.from(context).inflate(com.example.khy.sharedemo.R.layout.share_layout, null, false); - - return llPanel; - } - - private void refreshPanel(LinearLayout[] llCells, Object[] logos) { - int cellBack = com.mob.tools.utils.R.getBitmapRes(page.getContext(), "ssdk_oks_classic_platform_cell_back"); - int disableBack = com.mob.tools.utils.R.getBitmapRes(page.getContext(), "ssdk_oks_classic_platfrom_cell_back_nor"); - for (int i = 0; i < 4; i++) { - ImageView ivLogo = com.mob.tools.utils.R.forceCast(llCells[i].getChildAt(0)); -// TextView tvName = R.forceCast(llCells[i].getChildAt(1)); - if (logos[i] == null) { - ivLogo.setVisibility(View.INVISIBLE); -// tvName.setVisibility(View.INVISIBLE); - llCells[i].setBackgroundResource(disableBack); - llCells[i].setOnClickListener(null); - } else { - ivLogo.setVisibility(View.VISIBLE); -// tvName.setVisibility(View.VISIBLE); - llCells[i].setBackgroundResource(cellBack); - llCells[i].setOnClickListener(this); - llCells[i].setTag(logos[i]); - - if (logos[i] instanceof CustomerLogo) { - CustomerLogo logo = com.mob.tools.utils.R.forceCast(logos[i]); - if (logo.logo != null) { - ivLogo.setImageBitmap(logo.logo); - } else { - ivLogo.setImageBitmap(null); - } - if (logo.label != null) { -// tvName.setText(logo.label); - } else { -// tvName.setText(""); - } - } else { - Platform plat = com.mob.tools.utils.R.forceCast(logos[i]); - String name = plat.getName().toLowerCase(); - int resId = com.mob.tools.utils.R.getBitmapRes(ivLogo.getContext(),"ssdk_oks_classic_" + name); - if (resId > 0) { - ivLogo.setImageResource(resId); - } else { - ivLogo.setImageBitmap(null); - } -// resId = R.getStringRes(tvName.getContext(), "ssdk_" + name); -// if (resId > 0) { -// tvName.setText(resId); -// } else { -// tvName.setText(""); -// } - } - } - } - } - - public void onClick(View v) { - long time = System.currentTimeMillis(); - if (time - lastClickTime < MIN_CLICK_INTERVAL) { - return; - } - lastClickTime = time; - - if (v.getTag() instanceof CustomerLogo) { - CustomerLogo logo = com.mob.tools.utils.R.forceCast(v.getTag()); - page.performCustomLogoClick(v, logo); - } else { - Platform plat = com.mob.tools.utils.R.forceCast(v.getTag()); - page.showEditPage(plat); - } - } - -} diff --git a/app/src/main/java/onekeyshare/themes/classic/RotateImageView.java b/app/src/main/java/onekeyshare/themes/classic/RotateImageView.java deleted file mode 100644 index 900c08d63b..0000000000 --- a/app/src/main/java/onekeyshare/themes/classic/RotateImageView.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * 官网地站:http://www.mob.com - * 技术支持QQ: 4006852216 - * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复) - * - * Copyright (c) 2013年 mob.com. All rights reserved. - */ - -package onekeyshare.themes.classic; - -import android.content.Context; -import android.graphics.Canvas; -import android.widget.ImageView; - -/** 在At好友页面中,下拉刷新列表头部的旋转箭头 */ -public class RotateImageView extends ImageView { - private float rotation; - - public RotateImageView(Context context) { - super(context); - } - - public void setRotation(float rotation) { - this.rotation = rotation; - invalidate(); - } - - protected void onDraw(Canvas canvas) { - canvas.rotate(rotation, getWidth() / 2, getHeight() / 2); - super.onDraw(canvas); - } - -} diff --git a/app/src/main/java/onekeyshare/themes/classic/XView.java b/app/src/main/java/onekeyshare/themes/classic/XView.java deleted file mode 100644 index 3afdb54f48..0000000000 --- a/app/src/main/java/onekeyshare/themes/classic/XView.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * 官网地站:http://www.mob.com - * 技术支持QQ: 4006852216 - * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复) - * - * Copyright (c) 2013年 mob.com. All rights reserved. - */ - -package onekeyshare.themes.classic; - -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Paint; -import android.view.View; - -/** 编辑页面中删除图片“X”按钮 */ -public class XView extends View { - private float ratio; - - public XView(Context context) { - super(context); - } - - public void setRatio(float ratio) { - this.ratio = ratio; - } - - protected void onDraw(Canvas canvas) { - int width = getWidth() / 2; - int height = getHeight() / 2; - - Paint paint = new Paint(); - paint.setAntiAlias(true); - paint.setColor(0xffa0a0a0); - canvas.drawRect(width, 0, getWidth(), height, paint); - - paint = new Paint(); - paint.setAntiAlias(true); - paint.setStrokeWidth(3f * ratio); - paint.setColor(Color.WHITE); - float left = 8f * ratio; - canvas.drawLine(width + left, left, getWidth() - left, width - left, paint); - canvas.drawLine(width + left, width - left, getWidth() - left, left, paint); - } - -} diff --git a/app/src/main/java/onekeyshare/themes/classic/land/EditPageLand.java b/app/src/main/java/onekeyshare/themes/classic/land/EditPageLand.java deleted file mode 100644 index 8d610b8aa2..0000000000 --- a/app/src/main/java/onekeyshare/themes/classic/land/EditPageLand.java +++ /dev/null @@ -1,276 +0,0 @@ -/* - * 官网地站:http://www.mob.com - * 技术支持QQ: 4006852216 - * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复) - * - * Copyright (c) 2013年 mob.com. All rights reserved. - */ - -package onekeyshare.themes.classic.land; - -import android.graphics.Bitmap; -import android.graphics.Color; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.util.TypedValue; -import android.view.Gravity; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.ViewGroup.LayoutParams; -import android.widget.EditText; -import android.widget.LinearLayout; -import android.widget.RelativeLayout; -import android.widget.ScrollView; -import android.widget.TextView; - -import com.mob.tools.gui.AsyncImageView; -import com.mob.tools.utils.BitmapHelper; - -import java.io.File; - -import onekeyshare.OnekeyShareThemeImpl; -import onekeyshare.themes.classic.EditPage; -import onekeyshare.themes.classic.XView; - - -/** 横屏的编辑页 */ -public class EditPageLand extends EditPage implements OnClickListener, TextWatcher, Runnable { - private static final int DESIGN_SCREEN_WIDTH= 720; - private static final int DESIGN_BOTTOM_HEIGHT = 75; - private static final int DESIGN_LEFT_PADDING = 40; - private static final int DESIGN_TITLE_HEIGHT_L = 70; - private static final int DESIGN_THUMB_HEIGHT_L = 280; - private static final int DESIGN_REMOVE_THUMB_HEIGHT_L = 60; - - public EditPageLand(OnekeyShareThemeImpl impl) { - super(impl); - } - - public void onCreate() { - super.onCreate(); - - int screenHeight = com.mob.tools.utils.R.getScreenHeight(activity); - float ratio = ((float) screenHeight) / DESIGN_SCREEN_WIDTH; - - maxBodyHeight = 0; - - llPage = new LinearLayout(activity); - llPage.setOrientation(LinearLayout.VERTICAL); - activity.setContentView(llPage); - - rlTitle = new RelativeLayout(activity); - rlTitle.setBackgroundColor(0xffe6e9ec); - int titleHeight = (int) (DESIGN_TITLE_HEIGHT_L * ratio); - - LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, titleHeight); - llPage.addView(rlTitle, lp); - initTitle(rlTitle, ratio); - - RelativeLayout rlBody = new RelativeLayout(activity); - rlBody.setBackgroundColor(Color.WHITE); - lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); - llPage.addView(rlBody, lp); - initBody(rlBody, ratio); - - LinearLayout llShadow = new LinearLayout(activity); - llShadow.setOrientation(LinearLayout.VERTICAL); - rlBody.addView(llShadow, new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); - initShadow(llShadow, ratio); - - llBottom = new LinearLayout(activity); - llBottom.setOrientation(LinearLayout.VERTICAL); - lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); - llPage.addView(llBottom, lp); - initBottom(llBottom, ratio); - - - } - - private void initTitle(RelativeLayout rlTitle, float ratio) { - tvCancel = new TextView(activity); - tvCancel.setTextColor(0xff3b3b3b); - tvCancel.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18); - tvCancel.setGravity(Gravity.CENTER); - int resId = com.mob.tools.utils.R.getStringRes(activity, "ssdk_oks_cancel"); - if (resId > 0) { - tvCancel.setText(resId); - } - int padding = (int) (DESIGN_LEFT_PADDING * ratio); - tvCancel.setPadding(padding, 0, padding, 0); - RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT); - rlTitle.addView(tvCancel, lp); - tvCancel.setOnClickListener(this); - - TextView tvTitle = new TextView(activity); - tvTitle.setTextColor(0xff3b3b3b); - tvTitle.setTextSize(TypedValue.COMPLEX_UNIT_SP, 22); - tvTitle.setGravity(Gravity.CENTER); - resId = com.mob.tools.utils.R.getStringRes(activity, "ssdk_oks_multi_share"); - if (resId > 0) { - tvTitle.setText(resId); - } - lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT); - lp.addRule(RelativeLayout.CENTER_IN_PARENT); - rlTitle.addView(tvTitle, lp); - - tvShare = new TextView(activity); - tvShare.setTextColor(0xffff6d11); - tvShare.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18); - tvShare.setGravity(Gravity.CENTER); - resId = com.mob.tools.utils.R.getStringRes(activity, "ssdk_oks_share"); - if (resId > 0) { - tvShare.setText(resId); - } - tvShare.setPadding(padding, 0, padding, 0); - lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT); - lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); - rlTitle.addView(tvShare, lp); - tvShare.setOnClickListener(this); - } - - private void initBody(RelativeLayout rlBody, float ratio) { - svContent = new ScrollView(activity); - rlBody.addView(svContent, new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); - - LinearLayout llContent = new LinearLayout(activity); - llContent.setOrientation(LinearLayout.HORIZONTAL); - svContent.addView(llContent, new ScrollView.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); - - etContent = new EditText(activity); - int padding = (int) (DESIGN_LEFT_PADDING * ratio); - etContent.setPadding(padding, padding, padding, padding); - etContent.setBackgroundDrawable(null); - etContent.setTextColor(0xff3b3b3b); - etContent.setTextSize(TypedValue.COMPLEX_UNIT_SP, 21); - etContent.setText(sp.getText()); - LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT); - lp.weight = 1; - llContent.addView(etContent, lp); - etContent.addTextChangedListener(this); - - rlThumb = new RelativeLayout(activity); - rlThumb.setBackgroundColor(0xff313131); - int thumbWidth = (int) (DESIGN_THUMB_HEIGHT_L * ratio); - int xWidth = (int) (DESIGN_REMOVE_THUMB_HEIGHT_L * ratio); - lp = new LinearLayout.LayoutParams(thumbWidth, thumbWidth); - lp.rightMargin = lp.bottomMargin = lp.topMargin = padding; - llContent.addView(rlThumb, lp); - - aivThumb = new AsyncImageView(activity) { - public void onImageGot(String url, Bitmap bm) { - thumb = bm; - super.onImageGot(url, bm); - } - }; - aivThumb.setScaleToCropCenter(true); - RelativeLayout.LayoutParams rllp = new RelativeLayout.LayoutParams(thumbWidth, thumbWidth); - rlThumb.addView(aivThumb, rllp); - aivThumb.setOnClickListener(this); - initThumb(aivThumb); - - xvRemove = new XView(activity); - xvRemove.setRatio(ratio); - rllp = new RelativeLayout.LayoutParams(xWidth, xWidth); - rllp.addRule(RelativeLayout.ALIGN_PARENT_TOP); - rllp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); - rlThumb.addView(xvRemove, rllp); - xvRemove.setOnClickListener(this); - } - - private void initBottom(LinearLayout llBottom, float ratio) { - LinearLayout llAt = new LinearLayout(activity); - llAt.setPadding(0, 0, 0, 5); - llAt.setBackgroundColor(Color.WHITE); - int bottomHeight = (int) (DESIGN_BOTTOM_HEIGHT * ratio); - LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, bottomHeight); - llBottom.addView(llAt, lp); - - tvAt = new TextView(activity); - tvAt.setTextColor(0xff3b3b3b); - tvAt.setTextSize(TypedValue.COMPLEX_UNIT_SP, 21); - tvAt.setGravity(Gravity.BOTTOM); - tvAt.setText("@"); - int padding = (int) (DESIGN_LEFT_PADDING * ratio); - tvAt.setPadding(padding, 0, padding, 0); - lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT); - llAt.addView(tvAt, lp); - tvAt.setOnClickListener(this); - if (isShowAtUserLayout(platform.getName())) { - tvAt.setVisibility(View.VISIBLE); - } else { - tvAt.setVisibility(View.INVISIBLE); - } - - tvTextCouter = new TextView(activity); - tvTextCouter.setTextColor(0xff3b3b3b); - tvTextCouter.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18); - tvTextCouter.setGravity(Gravity.BOTTOM | Gravity.RIGHT); - onTextChanged(etContent.getText(), 0, 0, 0); - tvTextCouter.setPadding(padding, 0, padding, 0); - lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT); - lp.weight = 1; - llAt.addView(tvTextCouter, lp); - - View v = new View(activity); - v.setBackgroundColor(0xffcccccc); - int px_1 = ratio > 1 ? ((int) ratio) : 1; - lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, px_1); - llBottom.addView(v, lp); - } - - private void initShadow(LinearLayout llShadow, float ratio) { - int px_1 = ratio > 1 ? ((int) ratio) : 1; - LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, px_1); - - View v = new View(activity); - v.setBackgroundColor(0x29000000); - llShadow.addView(v, lp); - - v = new View(activity); - v.setBackgroundColor(0x14000000); - llShadow.addView(v, lp); - - v = new View(activity); - v.setBackgroundColor(0x07000000); - llShadow.addView(v, lp); - } - - private void initThumb(AsyncImageView aivThumb) { - String imageUrl = sp.getImageUrl(); - String imagePath = sp.getImagePath(); - String[] imageArray = sp.getImageArray(); - - Bitmap pic = null; - rlThumb.setVisibility(View.VISIBLE); - if(!TextUtils.isEmpty(imagePath) && new File(imagePath).exists()) { - try { - pic = BitmapHelper.getBitmap(imagePath); - } catch (Throwable e) { - e.printStackTrace(); - } - } - - if (pic != null) { - thumb = pic; - aivThumb.setBitmap(pic); - } else if (imageArray != null && imageArray.length > 0) { - if (!TextUtils.isEmpty(imageArray[0]) && new File(imageArray[0]).exists()) { - try { - pic = BitmapHelper.getBitmap(imagePath); - } catch (Throwable e) { - e.printStackTrace(); - } - } - } - - if (pic != null) { - thumb = pic; - aivThumb.setBitmap(pic); - } else if (pic == null && !TextUtils.isEmpty(imageUrl)) { - aivThumb.execute(imageUrl, 0); - } else { - rlThumb.setVisibility(View.GONE); - } - } - -} diff --git a/app/src/main/java/onekeyshare/themes/classic/land/FriendListPageLand.java b/app/src/main/java/onekeyshare/themes/classic/land/FriendListPageLand.java deleted file mode 100644 index 56eb0f84cd..0000000000 --- a/app/src/main/java/onekeyshare/themes/classic/land/FriendListPageLand.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * 官网地站:http://www.mob.com - * 技术支持QQ: 4006852216 - * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复) - * - * Copyright (c) 2013年 mob.com. All rights reserved. - */ - -package onekeyshare.themes.classic.land; - - -import onekeyshare.OnekeyShareThemeImpl; -import onekeyshare.themes.classic.FriendListPage; - -/** 横屏的好友列表 */ -public class FriendListPageLand extends FriendListPage { - private static final int DESIGN_SCREEN_WIDTH = 1280; - private static final int DESIGN_TITLE_HEIGHT = 70; - - public FriendListPageLand(OnekeyShareThemeImpl impl) { - super(impl); - } - - protected float getRatio() { - float screenWidth = com.mob.tools.utils.R.getScreenWidth(activity); - return screenWidth / DESIGN_SCREEN_WIDTH; - } - - protected int getDesignTitleHeight() { - return DESIGN_TITLE_HEIGHT; - } - -} diff --git a/app/src/main/java/onekeyshare/themes/classic/land/PlatformPageAdapterLand.java b/app/src/main/java/onekeyshare/themes/classic/land/PlatformPageAdapterLand.java deleted file mode 100644 index a9157ecd8e..0000000000 --- a/app/src/main/java/onekeyshare/themes/classic/land/PlatformPageAdapterLand.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * 官网地站:http://www.mob.com - * 技术支持QQ: 4006852216 - * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复) - * - * Copyright (c) 2013年 mob.com. All rights reserved. - */ - -package onekeyshare.themes.classic.land; - -import android.content.Context; -import android.util.Log; - -import java.util.ArrayList; - -import onekeyshare.themes.classic.PlatformPage; -import onekeyshare.themes.classic.PlatformPageAdapter; - - -/** 横屏的九宫格页面适配器 */ -public class PlatformPageAdapterLand extends PlatformPageAdapter { - private static final int DESIGN_SCREEN_WIDTH_L = 1280; - private static final int DESIGN_CELL_WIDTH_L = 160; - private static final int DESIGN_SEP_LINE_WIDTH = 1; - private static final int DESIGN_LOGO_HEIGHT = 76; - private static final int DESIGN_PADDING_TOP = 20; - - public PlatformPageAdapterLand(PlatformPage page, ArrayList cells) { - super(page, cells); - } - - protected void calculateSize(Context context, ArrayList plats) { - int screenWidth = com.mob.tools.utils.R.getScreenWidth(context); - float ratio = ((float) screenWidth) / DESIGN_SCREEN_WIDTH_L; - int cellWidth = (int) (DESIGN_CELL_WIDTH_L * ratio); - lineSize = screenWidth / cellWidth; - Log.e("TAG","lineSize2"+lineSize+"screenWidth:"+screenWidth+"cellWidth"+cellWidth); - - sepLineWidth = (int) (DESIGN_SEP_LINE_WIDTH * ratio); - sepLineWidth = sepLineWidth < 1 ? 1 : sepLineWidth; - logoHeight = (int) (DESIGN_LOGO_HEIGHT * ratio); - paddingTop = (int) (DESIGN_PADDING_TOP * ratio); - bottomHeight = (int) (DESIGN_BOTTOM_HEIGHT * ratio); - cellHeight = (screenWidth - sepLineWidth * 3) / (lineSize - 1); - panelHeight = cellHeight + sepLineWidth; - } - - protected void collectCells(ArrayList plats) { - int count = plats.size(); - if (count < lineSize) { - int lineCount = (count / lineSize); - if (count % lineSize != 0) { - lineCount++; - } - cells = new Object[1][lineCount * lineSize]; - } else { - int pageCount = (count / lineSize); - if (count % lineSize != 0) { - pageCount++; - } - cells = new Object[pageCount][lineSize]; - } - - for (int i = 0; i < count; i++) { - int p = i / lineSize; - cells[p][i - lineSize * p] = plats.get(i); - } - } - -} diff --git a/app/src/main/java/onekeyshare/themes/classic/land/PlatformPageLand.java b/app/src/main/java/onekeyshare/themes/classic/land/PlatformPageLand.java deleted file mode 100644 index 013d0e0561..0000000000 --- a/app/src/main/java/onekeyshare/themes/classic/land/PlatformPageLand.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * 官网地站:http://www.mob.com - * 技术支持QQ: 4006852216 - * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复) - * - * Copyright (c) 2013年 mob.com. All rights reserved. - */ - -package onekeyshare.themes.classic.land; - -import java.util.ArrayList; - -import onekeyshare.OnekeyShareThemeImpl; -import onekeyshare.themes.classic.PlatformPage; -import onekeyshare.themes.classic.PlatformPageAdapter; - - -/** 横屏的九宫格页面 */ -public class PlatformPageLand extends PlatformPage { - - public PlatformPageLand(OnekeyShareThemeImpl impl) { - super(impl); - } - - public void onCreate() { - requestLandscapeOrientation(); - super.onCreate(); - } - - protected PlatformPageAdapter newAdapter(ArrayList cells) { - return new PlatformPageAdapterLand(this, cells); - } - -} - diff --git a/app/src/main/java/onekeyshare/themes/classic/port/EditPagePort.java b/app/src/main/java/onekeyshare/themes/classic/port/EditPagePort.java deleted file mode 100644 index 4eabdb3131..0000000000 --- a/app/src/main/java/onekeyshare/themes/classic/port/EditPagePort.java +++ /dev/null @@ -1,271 +0,0 @@ -/* - * 官网地站:http://www.mob.com - * 技术支持QQ: 4006852216 - * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复) - * - * Copyright (c) 2013年 mob.com. All rights reserved. - */ - -package onekeyshare.themes.classic.port; - -import android.graphics.Bitmap; -import android.graphics.Color; -import android.text.TextUtils; -import android.util.TypedValue; -import android.view.Gravity; -import android.view.View; -import android.view.ViewGroup.LayoutParams; -import android.widget.EditText; -import android.widget.LinearLayout; -import android.widget.RelativeLayout; -import android.widget.ScrollView; -import android.widget.TextView; - -import com.mob.tools.gui.AsyncImageView; -import com.mob.tools.utils.BitmapHelper; - -import java.io.File; - -import onekeyshare.OnekeyShareThemeImpl; -import onekeyshare.themes.classic.EditPage; -import onekeyshare.themes.classic.XView; - - -/** 竖屏的编辑页 */ -public class EditPagePort extends EditPage { - private static final int DESIGN_SCREEN_HEIGHT= 1280; - private static final int DESIGN_TITLE_HEIGHT = 96; - private static final int DESIGN_BOTTOM_HEIGHT = 75; - private static final int DESIGN_LEFT_PADDING = 40; - private static final int DESIGN_THUMB_HEIGHT = 300; - private static final int DESIGN_REMOVE_THUMB_HEIGHT = 70; - - public EditPagePort(OnekeyShareThemeImpl impl) { - super(impl); - } - - public void onCreate() { - super.onCreate(); - - int screenHeight = com.mob.tools.utils.R.getScreenHeight(activity); - float ratio = ((float) screenHeight) / DESIGN_SCREEN_HEIGHT; - - maxBodyHeight = 0; - - llPage = new LinearLayout(activity); - llPage.setOrientation(LinearLayout.VERTICAL); - activity.setContentView(llPage); - - rlTitle = new RelativeLayout(activity); - rlTitle.setBackgroundColor(0xffe6e9ec); - int titleHeight = (int) (DESIGN_TITLE_HEIGHT * ratio); - - LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, titleHeight); - llPage.addView(rlTitle, lp); - initTitle(rlTitle, ratio); - - RelativeLayout rlBody = new RelativeLayout(activity); - rlBody.setBackgroundColor(Color.WHITE); - lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); - llPage.addView(rlBody, lp); - initBody(rlBody, ratio); - - LinearLayout llShadow = new LinearLayout(activity); - llShadow.setOrientation(LinearLayout.VERTICAL); - rlBody.addView(llShadow, new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); - initShadow(llShadow, ratio); - - llBottom = new LinearLayout(activity); - llBottom.setOrientation(LinearLayout.VERTICAL); - lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); - llPage.addView(llBottom, lp); - initBottom(llBottom, ratio); - } - - private void initTitle(RelativeLayout rlTitle, float ratio) { - tvCancel = new TextView(activity); - tvCancel.setTextColor(0xff3b3b3b); - tvCancel.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18); - tvCancel.setGravity(Gravity.CENTER); - int resId = com.mob.tools.utils.R.getStringRes(activity, "ssdk_oks_cancel"); - if (resId > 0) { - tvCancel.setText(resId); - } - int padding = (int) (DESIGN_LEFT_PADDING * ratio); - tvCancel.setPadding(padding, 0, padding, 0); - RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT); - rlTitle.addView(tvCancel, lp); - tvCancel.setOnClickListener(this); - - TextView tvTitle = new TextView(activity); - tvTitle.setTextColor(0xff3b3b3b); - tvTitle.setTextSize(TypedValue.COMPLEX_UNIT_SP, 22); - tvTitle.setGravity(Gravity.CENTER); - resId = com.mob.tools.utils.R.getStringRes(activity, "ssdk_oks_multi_share"); - if (resId > 0) { - tvTitle.setText(resId); - } - lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT); - lp.addRule(RelativeLayout.CENTER_IN_PARENT); - rlTitle.addView(tvTitle, lp); - - tvShare = new TextView(activity); - tvShare.setTextColor(0xffff6d11); - tvShare.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18); - tvShare.setGravity(Gravity.CENTER); - resId = com.mob.tools.utils.R.getStringRes(activity, "ssdk_oks_share"); - if (resId > 0) { - tvShare.setText(resId); - } - tvShare.setPadding(padding, 0, padding, 0); - lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT); - lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); - rlTitle.addView(tvShare, lp); - tvShare.setOnClickListener(this); - } - - private void initBody(RelativeLayout rlBody, float ratio) { - svContent = new ScrollView(activity); - rlBody.addView(svContent, new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); - - LinearLayout llContent = new LinearLayout(activity); - llContent.setOrientation(LinearLayout.VERTICAL); - svContent.addView(llContent, new ScrollView.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); - - etContent = new EditText(activity); - int padding = (int) (DESIGN_LEFT_PADDING * ratio); - etContent.setPadding(padding, padding, padding, padding); - etContent.setBackgroundDrawable(null); - etContent.setTextColor(0xff3b3b3b); - etContent.setTextSize(TypedValue.COMPLEX_UNIT_SP, 21); - etContent.setText(sp.getText()); - LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); - llContent.addView(etContent, lp); - etContent.addTextChangedListener(this); - - rlThumb = new RelativeLayout(activity); - rlThumb.setBackgroundColor(0xff313131); - int thumbWidth = (int) (DESIGN_THUMB_HEIGHT * ratio); - int xWidth = (int) (DESIGN_REMOVE_THUMB_HEIGHT * ratio); - lp = new LinearLayout.LayoutParams(thumbWidth, thumbWidth); - lp.leftMargin = lp.rightMargin = lp.bottomMargin = lp.topMargin = padding; - llContent.addView(rlThumb, lp); - - aivThumb = new AsyncImageView(activity) { - public void onImageGot(String url, Bitmap bm) { - thumb = bm; - super.onImageGot(url, bm); - } - }; - aivThumb.setScaleToCropCenter(true); - RelativeLayout.LayoutParams rllp = new RelativeLayout.LayoutParams(thumbWidth, thumbWidth); - rlThumb.addView(aivThumb, rllp); - aivThumb.setOnClickListener(this); - initThumb(aivThumb); - - xvRemove = new XView(activity); - xvRemove.setRatio(ratio); - rllp = new RelativeLayout.LayoutParams(xWidth, xWidth); - rllp.addRule(RelativeLayout.ALIGN_PARENT_TOP); - rllp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); - rlThumb.addView(xvRemove, rllp); - xvRemove.setOnClickListener(this); - } - - private void initBottom(LinearLayout llBottom, float ratio) { - LinearLayout llAt = new LinearLayout(activity); - llAt.setPadding(0, 0, 0, 5); - llAt.setBackgroundColor(Color.WHITE); - int bottomHeight = (int) (DESIGN_BOTTOM_HEIGHT * ratio); - LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, bottomHeight); - llBottom.addView(llAt, lp); - - tvAt = new TextView(activity); - tvAt.setTextColor(0xff3b3b3b); - tvAt.setTextSize(TypedValue.COMPLEX_UNIT_SP, 22); - tvAt.setGravity(Gravity.BOTTOM); - tvAt.setText("@"); - int padding = (int) (DESIGN_LEFT_PADDING * ratio); - tvAt.setPadding(padding, 0, padding, 0); - lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT); - llAt.addView(tvAt, lp); - tvAt.setOnClickListener(this); - if (isShowAtUserLayout(platform.getName())) { - tvAt.setVisibility(View.VISIBLE); - } else { - tvAt.setVisibility(View.INVISIBLE); - } - - tvTextCouter = new TextView(activity); - tvTextCouter.setTextColor(0xff3b3b3b); - tvTextCouter.setTextSize(TypedValue.COMPLEX_UNIT_SP, 21); - tvTextCouter.setGravity(Gravity.BOTTOM | Gravity.RIGHT); - onTextChanged(etContent.getText(), 0, 0, 0); - tvTextCouter.setPadding(padding, 0, padding, 0); - lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT); - lp.weight = 1; - llAt.addView(tvTextCouter, lp); - - View v = new View(activity); - v.setBackgroundColor(0xffcccccc); - int px_1 = ratio > 1 ? ((int) ratio) : 1; - lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, px_1); - llBottom.addView(v, lp); - } - - private void initShadow(LinearLayout llShadow, float ratio) { - int px_1 = ratio > 1 ? ((int) ratio) : 1; - LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, px_1); - - View v = new View(activity); - v.setBackgroundColor(0x29000000); - llShadow.addView(v, lp); - - v = new View(activity); - v.setBackgroundColor(0x14000000); - llShadow.addView(v, lp); - - v = new View(activity); - v.setBackgroundColor(0x07000000); - llShadow.addView(v, lp); - } - - private void initThumb(AsyncImageView aivThumb) { - String imageUrl = sp.getImageUrl(); - String imagePath = sp.getImagePath(); - String[] imageArray = sp.getImageArray(); - - Bitmap pic = null; - rlThumb.setVisibility(View.VISIBLE); - if(!TextUtils.isEmpty(imagePath) && new File(imagePath).exists()) { - try { - pic = BitmapHelper.getBitmap(imagePath); - } catch (Throwable e) { - e.printStackTrace(); - } - } - - if (pic != null) { - thumb = pic; - aivThumb.setBitmap(pic); - } else if (imageArray != null && imageArray.length > 0) { - if (!TextUtils.isEmpty(imageArray[0]) && new File(imageArray[0]).exists()) { - try { - pic = BitmapHelper.getBitmap(imagePath); - } catch (Throwable e) { - e.printStackTrace(); - } - } - } - - if (pic != null) { - thumb = pic; - aivThumb.setBitmap(pic); - } else if (pic == null && !TextUtils.isEmpty(imageUrl)) { - aivThumb.execute(imageUrl, 0); - } else { - rlThumb.setVisibility(View.GONE); - } - } - -} diff --git a/app/src/main/java/onekeyshare/themes/classic/port/FriendListPagePort.java b/app/src/main/java/onekeyshare/themes/classic/port/FriendListPagePort.java deleted file mode 100644 index bef0853246..0000000000 --- a/app/src/main/java/onekeyshare/themes/classic/port/FriendListPagePort.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * 官网地站:http://www.mob.com - * 技术支持QQ: 4006852216 - * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复) - * - * Copyright (c) 2013年 mob.com. All rights reserved. - */ - -package onekeyshare.themes.classic.port; - - -import onekeyshare.OnekeyShareThemeImpl; -import onekeyshare.themes.classic.FriendListPage; - -/** 竖屏的好友列表 */ -public class FriendListPagePort extends FriendListPage { - private static final int DESIGN_SCREEN_WIDTH = 720; - private static final int DESIGN_TITLE_HEIGHT = 96; - - public FriendListPagePort(OnekeyShareThemeImpl impl) { - super(impl); - } - - protected float getRatio() { - float screenWidth = com.mob.tools.utils.R.getScreenWidth(activity); - return screenWidth / DESIGN_SCREEN_WIDTH; - } - - protected int getDesignTitleHeight() { - return DESIGN_TITLE_HEIGHT; - } - -} diff --git a/app/src/main/java/onekeyshare/themes/classic/port/PlatformPageAdapterPort.java b/app/src/main/java/onekeyshare/themes/classic/port/PlatformPageAdapterPort.java deleted file mode 100644 index c51bb2e347..0000000000 --- a/app/src/main/java/onekeyshare/themes/classic/port/PlatformPageAdapterPort.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * 官网地站:http://www.mob.com - * 技术支持QQ: 4006852216 - * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复) - * - * Copyright (c) 2013年 mob.com. All rights reserved. - */ - -package onekeyshare.themes.classic.port; - -import android.content.Context; - -import java.util.ArrayList; - -import onekeyshare.themes.classic.PlatformPage; -import onekeyshare.themes.classic.PlatformPageAdapter; - - -/** 竖屏的九宫格页面适配器 */ -public class PlatformPageAdapterPort extends PlatformPageAdapter { - private static final int DESIGN_SCREEN_WIDTH_P = 720; - private static final int DESIGN_SEP_LINE_WIDTH = 1; - private static final int DESIGN_LOGO_HEIGHT = 76; - private static final int DESIGN_PADDING_TOP = 20; - private static final int PAGE_SIZE_P = 12; - private static final int LINE_SIZE_P = 4; - - public PlatformPageAdapterPort(PlatformPage page, ArrayList cells) { - super(page, cells); - } - - protected void calculateSize(Context context, ArrayList plats) { - int screenWidth = com.mob.tools.utils.R.getScreenWidth(context); - lineSize = LINE_SIZE_P; - - float ratio = ((float) screenWidth) / DESIGN_SCREEN_WIDTH_P; - sepLineWidth = (int) (DESIGN_SEP_LINE_WIDTH * ratio); - sepLineWidth = sepLineWidth < 1 ? 1 : sepLineWidth; - logoHeight = (int) (DESIGN_LOGO_HEIGHT * ratio); - paddingTop = (int) (DESIGN_PADDING_TOP * ratio); - bottomHeight = (int) (DESIGN_BOTTOM_HEIGHT * ratio); - cellHeight = (screenWidth - sepLineWidth * 3) / 4; - if (plats.size() <= lineSize) { - panelHeight = cellHeight + sepLineWidth; - } else if (plats.size() <= PAGE_SIZE_P - lineSize) { - panelHeight = (cellHeight + sepLineWidth) * 2; - } else { - panelHeight = (cellHeight + sepLineWidth) * 3; - } - } - - protected void collectCells(ArrayList plats) { - int count = plats.size(); - if (count < PAGE_SIZE_P) { - int lineCount = (count / lineSize); - if (count % lineSize != 0) { - lineCount++; - } - cells = new Object[1][lineCount * lineSize]; - } else { - int pageCount = (count / PAGE_SIZE_P); - if (count % PAGE_SIZE_P != 0) { - pageCount++; - } - cells = new Object[pageCount][PAGE_SIZE_P]; - } - - for (int i = 0; i < count; i++) { - int p = i / PAGE_SIZE_P; - cells[p][i - PAGE_SIZE_P * p] = plats.get(i); - } - } - -} diff --git a/app/src/main/java/onekeyshare/themes/classic/port/PlatformPagePort.java b/app/src/main/java/onekeyshare/themes/classic/port/PlatformPagePort.java deleted file mode 100644 index b4e0911bf5..0000000000 --- a/app/src/main/java/onekeyshare/themes/classic/port/PlatformPagePort.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * 官网地站:http://www.mob.com - * 技术支持QQ: 4006852216 - * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复) - * - * Copyright (c) 2013年 mob.com. All rights reserved. - */ - -package onekeyshare.themes.classic.port; - -import java.util.ArrayList; - -import onekeyshare.OnekeyShareThemeImpl; -import onekeyshare.themes.classic.PlatformPage; -import onekeyshare.themes.classic.PlatformPageAdapter; - - -/** 竖屏的九宫格页面 */ -public class PlatformPagePort extends PlatformPage { - - public PlatformPagePort(OnekeyShareThemeImpl impl) { - super(impl); - } - - public void onCreate() { - requestPortraitOrientation(); - super.onCreate(); - } - - protected PlatformPageAdapter newAdapter(ArrayList cells) { - return new PlatformPageAdapterPort(this, cells); - } - -}