package net.oschina.app.ui;
import net.oschina.app.AppConfig;
import net.oschina.app.R;
import net.oschina.app.bean.AccessInfo;
import net.oschina.app.common.FileUtils;
import net.oschina.app.common.ImageUtils;
import net.oschina.app.common.QQWeiboHelper2;
import net.oschina.app.common.SinaWeiboHelper;
import net.oschina.app.common.StringUtils;
import net.oschina.app.common.UIHelper;
import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
/**
* 截屏分享
*
* @author yeguozhong@yeah.net
*
*/
public class ScreenShotShare extends BaseActivity {
private ImageView ivShare;
private LinearLayout btnSinaWeibo;
private LinearLayout btnQQWeibo;
private EditText etContent;
private TextView tvUrl;
private TextView tvLeft;
private int leftTextNum;
private static final int MAX_CONTENT_SIZE = 140;
private QQWeiboHelper2 helper;
private String mCutImagePath;
private String mTitle;
private String mUrl;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.screen_shot_share);
initView();
addListeners();
}
private void initView() {
Bundle b = getIntent().getExtras();
mTitle = b.getString("title");
mUrl = b.getString("url");
mCutImagePath = b.getString("cut_image_tmp_path");
ivShare = (ImageView) findViewById(R.id.iv_shared);
etContent = (EditText) findViewById(R.id.et_content);
tvUrl = (TextView) findViewById(R.id.tv_url);
btnSinaWeibo = (LinearLayout) findViewById(R.id.btn_sina_weibo);
btnQQWeibo = (LinearLayout) findViewById(R.id.btn_qq_weibo);
tvLeft = (TextView) findViewById(R.id.tv_text_left);
etContent.setText(mTitle);
tvUrl.setText(mUrl);
if (mCutImagePath != null) {
ivShare.setImageBitmap(ImageUtils.getBitmapByPath(mCutImagePath));
}
leftTextNum = getLeftTextNum();
tvLeft.setText("还可以输入:" + leftTextNum + "个字");
}
/**
* 添加控件的事件监听
*/
private void addListeners(){
btnQQWeibo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mTitle = etContent.getText().toString();
if (StringUtils.isEmpty(mTitle)) {
UIHelper.ToastMessage(ScreenShotShare.this, "输入不能为空");
} else {
String content = mTitle + " " + mUrl;
if (content.length() > MAX_CONTENT_SIZE) {
UIHelper.ToastMessage(ScreenShotShare.this,
"总字数不能超过140个字");
} else {
shareToQQWeibo(content, mCutImagePath);
}
}
}
});
btnSinaWeibo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String input = etContent.getText().toString();
if (StringUtils.isEmpty(input)) {
UIHelper.ToastMessage(ScreenShotShare.this, "输入不能为空");
} else {
String content = input + " " + mUrl;
if (content.length() > MAX_CONTENT_SIZE) {
UIHelper.ToastMessage(ScreenShotShare.this,
"总字数不能超过140个字");
} else {
shareToSinaWeibo(content, mCutImagePath);
}
}
}
});
ivShare.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(ScreenShotShare.this, ImageDialog.class);
intent.putExtra("local_img", mCutImagePath);
intent.putExtra("img_url", "no_image_url");
startActivity(intent);
}
});
//监听输入字数
etContent.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
mTitle = etContent.getText().toString();
leftTextNum = getLeftTextNum();
tvLeft.setText("还可以输入:" + leftTextNum + "个字");
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
/**
* 分享到QQ微博
*/
@SuppressLint("NewApi")
private void shareToQQWeibo(String content, String imagePath) {
helper = new QQWeiboHelper2(this, content, imagePath);
helper.send();
}
/**
* 分享到新浪微博
*/
private void shareToSinaWeibo(String content, final String imagePath) {
AppConfig cfgHelper = AppConfig.getAppConfig(this);
final AccessInfo access = cfgHelper.getAccessInfo();
final String shareMsg = content;
// 初始化微博
if (SinaWeiboHelper.isWeiboNull()) {
SinaWeiboHelper.initWeibo();
}
// 判断之前是否登陆过
if (access != null) {
SinaWeiboHelper.progressDialog = new ProgressDialog(this);
SinaWeiboHelper.progressDialog
.setProgressStyle(ProgressDialog.STYLE_SPINNER);
SinaWeiboHelper.progressDialog.setMessage(this
.getString(R.string.sharing));
SinaWeiboHelper.progressDialog.setCancelable(true);
SinaWeiboHelper.progressDialog.show();
new Thread() {
public void run() {
SinaWeiboHelper.setAccessToken(access.getAccessToken(),
access.getAccessSecret(), access.getExpiresIn());
SinaWeiboHelper.shareMessage(ScreenShotShare.this,
shareMsg, imagePath);
}
}.start();
} else {
SinaWeiboHelper
.authorize(ScreenShotShare.this, shareMsg, imagePath);
}
}
/**
* 认证页回调
*/
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (helper != null) {
helper.onAuthorizeWebViewReturn(requestCode, resultCode, data);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
// 删除临时图片
FileUtils.deleteFileWithPath(mCutImagePath);
}
/**
* 返回还能输入的字数
*
* @return
*/
private int getLeftTextNum() {
return MAX_CONTENT_SIZE - (mTitle + " " + mUrl).length();
}
}