您的位置:首页 > 移动开发 > Android开发

android 测试分享图片+文字到微博

2013-11-11 18:54 417 查看
package com.example;

import android.app.Activity;
import android.content.Intent;
import android.graphics.*;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import df.util.Util;
import df.util.android.LogUtil;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

public class MyActivity extends Activity implements View.OnClickListener {

private static final String TAG = Util.toTAG(MyActivity.class);

/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

findViewById(R.id.share_btn).setOnClickListener(this);

}

@Override
public void onClick(View view) {
//To change body of implemented methods use File | Settings | File Templates.

switch (view.getId()) {
case R.id.share_btn: {
share();
break;
}
default: {
break;
}
}
}

void share() {

File file = new File("/sdcard/fk.jpg");

try {
Bitmap bmp = getBitmap("/sdcard/fk.jpg", "womencishfiewhfuewjfkwej");
OutputStream stream = null;
LogUtil.v(TAG,"haitag ",bmp.getWidth(),", ",bmp.getHeight());
stream = new FileOutputStream(new File("/sdcard/tmp.jpg"));
bmp.compress(Bitmap.CompressFormat.JPEG, 40, stream);
} catch (IOException e) {
e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
}

Intent shareIntent = new Intent(Intent.ACTION_SEND);
Uri uri = Uri.fromFile(new File("/sdcard/fk.jpg"));
if (uri != null) {
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
shareIntent.setType("image/*");
//当用户选择短信时使用sms_body取得文字
shareIntent.putExtra("sms_body", "hehehhehehe ");
} else {
shareIntent.setType("text/plain");
}

shareIntent.putExtra(Intent.EXTRA_TEXT, "hahahah");
//自定义选择框的标题
//startActivity(Intent.createChooser(shareIntent, "邀请好友"));
//系统默认标题
startActivity(shareIntent);
}

public Bitmap getBitmap(final String picPath, final String msg) {
//返回具有指定宽度和高度可变的位图,它的初始密度可以调用getDensity()

final int TXT_SIZE = 24;
final Activity act = this;
Bitmap bmp = BitmapFactory.decodeFile(picPath);
int width = bmp.getWidth();
int heigth = bmp.getHeight();
List<String> buf = new ArrayList<String>();
String lineStr = "";
int lineCharCount = 0;

for (int i = 0; i < msg.length(); ) {

if (Character.getType(msg.charAt(i)) == Character.OTHER_LETTER) {
// 如果这个字符是一个汉字
if ((i + 1) < msg.length()) {
lineStr += msg.substring(i, i + 2);
lineCharCount++;
}

heigth += TXT_SIZE;
i = i + 2;
} else {
heigth += TXT_SIZE;
lineStr += msg.substring(i, i + 1);
lineCharCount++;
i++;
}

if ((lineCharCount + 1) * TXT_SIZE > width) {
buf.add(lineStr);
lineStr = "";
lineCharCount = 0;
}

if (i >= msg.length()) {
break;
}
}

Bitmap canvasBmp = Bitmap.createBitmap(width + 20, heigth + 20, Bitmap.Config.ARGB_8888);
//把一个具有指定的位图绘制到画布上。位图必须是可变的。
//在画布最初的目标密度是与给定的位图的密度相同,返回一个具有指定位图的画布
Canvas canvas = new Canvas(canvasBmp);
//设置画布的颜色
canvas.drawColor(Color.WHITE);
Paint p = new Paint();
Typeface font = Typeface.create("宋体", Typeface.BOLD);
p.setColor(Color.RED);
p.setTypeface(font);
p.setTextSize(TXT_SIZE);

float y = 0;
for (String str : buf) {
canvas.drawText(str, 0, y, p);
y += TXT_SIZE;
}

canvas.drawBitmap(bmp, 0, y, p);
return bmp;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: