package cn.bidaround.ytcore.activity; import java.util.Locale; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.view.Gravity; import android.view.View; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import cn.bidaround.ytcore.YtShareListener; import cn.bidaround.ytcore.data.ShareData; import cn.bidaround.ytcore.data.YtPlatform; import cn.bidaround.ytcore.kaixin.KaixinShare; import cn.bidaround.ytcore.renn.RennShare; import cn.bidaround.ytcore.sina.SinaHttpShare; import cn.bidaround.ytcore.tencentwb.TencentWbShare; import cn.bidaround.ytcore.util.Util; /** * 自定义的分享界面 * @author youtui * @since 2015/1/23 */ public class ShareView extends LinearLayout{ private final int BACK_ID = 140901; private final int SHAREBT_ID = 140902; private Activity activity; private ShareData shareData; private YtPlatform platform; private YtShareListener listener; private EditText editText; public ShareView(Activity activity, ShareData shareData, YtShareListener listener, YtPlatform platform) { super(activity); this.activity = activity; this.shareData = shareData; this.listener = listener; this.platform = platform; if(shareData == null){ return; } init(); } private void init(){ setOrientation(LinearLayout.VERTICAL); setBackgroundColor(0xFFE9ECFF); // 分享内容框 LinearLayout bodyLayout = new LinearLayout(activity); bodyLayout.setOrientation(LinearLayout.VERTICAL); LinearLayout.LayoutParams bodyParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); bodyLayout.setLayoutParams(bodyParams); bodyLayout.setBackgroundColor(0xFFF4F4F4); bodyLayout.setHorizontalGravity(Gravity.LEFT); bodyLayout.setVerticalGravity(Gravity.TOP); bodyLayout.addView(createTextView()); bodyLayout.addView(createImageView()); addView(createHeadView()); addView(bodyLayout, bodyParams); } class ShareListener implements OnClickListener{ @Override public void onClick(View v) { shareData.setText(editText.getText().toString()); Util.showProgressDialog(activity, getStringRes("yt_shareing"), true); if(platform == YtPlatform.PLATFORM_SINAWEIBO) new SinaHttpShare(activity, shareData, listener).shareToSina(); if(platform == YtPlatform.PLATFORM_RENREN) new RennShare(activity, listener, shareData).shareToRenn(); if(platform == YtPlatform.PLATFORM_TENCENTWEIBO) new TencentWbShare(activity, listener, shareData).shareToTencentWb(); else if(platform == YtPlatform.PLATFORM_KAIXIN){ KaixinShare kaixinShare = new KaixinShare(activity, shareData, listener); if (kaixinShare.isAuthValid()) kaixinShare.shareToKaixin(); else kaixinShare.doAuth(); } } } private View createHeadView(){ RelativeLayout headerLayout = new RelativeLayout(activity); RelativeLayout.LayoutParams headerLinearParams = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.MATCH_PARENT, Util.dip2px(activity, 50)); headerLayout.setLayoutParams(headerLinearParams); headerLayout.setBackgroundColor(0xff66c0ff); // 返回键 LinearLayout back = new LinearLayout(activity); RelativeLayout.LayoutParams backParams = new RelativeLayout.LayoutParams(Util.dip2px(activity, 50), RelativeLayout.LayoutParams.MATCH_PARENT); backParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT); back.setHorizontalGravity(Gravity.CENTER); back.setVerticalGravity(Gravity.CENTER); back.setId(BACK_ID); back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onCancel(); } }); // 返回键图片 ImageView backImage = new ImageView(activity); LayoutParams backImageParams = new LayoutParams(Util.dip2px(activity, 20), Util.dip2px(activity, 20)); backImage.setLayoutParams(backImageParams); backImage.setImageResource(activity.getResources().getIdentifier("yt_left_arrow", "drawable", activity.getPackageName())); back.addView(backImage); // 标题栏 TextView title = new TextView(activity); RelativeLayout.LayoutParams titleParams = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT); titleParams.addRule(RelativeLayout.RIGHT_OF, BACK_ID); titleParams.addRule(RelativeLayout.LEFT_OF, SHAREBT_ID); title.setGravity(Gravity.CENTER_VERTICAL); title.setText(getPlatformName(platform)); title.setTextSize(16); title.setTextColor(0xffffffff); // 分享按钮 TextView shareBt = new TextView(activity); shareBt.setId(SHAREBT_ID); RelativeLayout.LayoutParams shareBtParams = new RelativeLayout.LayoutParams(Util.dip2px(activity, 50), RelativeLayout.LayoutParams.MATCH_PARENT); shareBtParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); shareBt.setText(getStringRes("yt_share")); shareBt.setGravity(Gravity.CENTER_VERTICAL); shareBt.setTextColor(0xffffffff); shareBt.setOnClickListener(new ShareListener()); headerLayout.addView(back, backParams); headerLayout.addView(title, titleParams); headerLayout.addView(shareBt, shareBtParams); return headerLayout; } private String getPlatformName(YtPlatform platform){ return activity.getResources().getString(activity.getResources() .getIdentifier("yt_" + platform.getName().toLowerCase(Locale.US), "string", activity.getPackageName())); } @SuppressWarnings("deprecation") private EditText createTextView(){ editText = new EditText(activity); LinearLayout.LayoutParams editParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); editParams.setMargins(8, 8, 8, 8); editText.setLayoutParams(editParams); if ((shareData.getShareType() == ShareData.SHARETYPE_IMAGEANDTEXT || shareData.getShareType() == ShareData.SHARETYPE_TEXT) && shareData != null && shareData.getText() != null) { editText.setText(shareData.getText()); } else shareData.setText(""); editText.setGravity(Gravity.TOP); editText.setTextColor(0xffa1a1a1); editText.setTextSize(13); editText.setBackgroundDrawable(null); return editText; } private View createImageView(){ LinearLayout layout = new LinearLayout(activity); layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); layout.setOrientation(LinearLayout.HORIZONTAL); if(shareData.getShareType() == ShareData.SHARETYPE_IMAGE || shareData.getShareType() == ShareData.SHARETYPE_IMAGEANDTEXT || shareData.getShareType() == ShareData.IMAGETYPE_APPRESOURE){ ImageView shareImage = new ImageView(activity); LinearLayout.LayoutParams shareImageParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); shareImageParams.setMargins(15, 15, 25, 15); shareImageParams.gravity = Gravity.LEFT; shareImage.setLayoutParams(shareImageParams); if (shareData != null && shareData.getImagePath() != null) { Bitmap imageBit = BitmapFactory.decodeFile(shareData.getImagePath()); Bitmap scaleBit = Bitmap.createScaledBitmap(imageBit, Util.dip2px(activity, 300), Util.dip2px(activity, 300) * imageBit.getHeight() / imageBit.getWidth(), true); @SuppressWarnings("deprecation") BitmapDrawable bitDraw = new BitmapDrawable(scaleBit); shareImage.setImageDrawable(bitDraw); } layout.addView(shareImage); } // empty view for the adaptive View view = new View(activity); view.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, 1, 1)); layout.addView(view); return layout; } private String getStringRes(String res){ return activity.getString(activity.getResources().getIdentifier(res, "string", activity.getPackageName())); } private void onCancel(){ if(listener != null) listener.onCancel(platform); // if(activity instanceof ShareActivity || activity instanceof SinaShareActivity) // activity.finish(); if(onBackListener != null) onBackListener.onBack(); } public View setOnBackListener(OnBackListener onBackListener) { this.onBackListener = onBackListener; return this; } private OnBackListener onBackListener; public interface OnBackListener{ public void onBack(); } }