android分享截屏到微信,android分享当前activity屏幕截图到微博客和微信

该博客详细介绍了如何在Android平台上实现屏幕截图并保存至本地,以及如何将截图分享出去。通过利用Activity的Window对象获取DecorView,创建Bitmap并裁剪掉状态栏,最后将截图保存为JPEG格式并使用Intent分享至其他应用。
摘要由CSDN通过智能技术生成

package dy.android.xiaochu;

import android.app.Activity;

import android.content.Context;

import android.content.Intent;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Rect;

import android.net.Uri;

import android.provider.MediaStore;

import android.view.View;

import df.util.Util;

import df.util.android.LogUtil;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

/**

* Created with IntelliJ IDEA.

* User: wulong

* Date: 13-10-10

* Time: 上午11:37

* To change this template use File | Settings | File Templates.

*/

public class ScreenShot {

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

private static final int SAVE_AUTHORITY = Context.MODE_PRIVATE;

// 获取指定Activity的截屏,保存到png文件

private static Bitmap takeScreenShot(Activity activity) {

//View是你需要截图的View

View view = activity.getWindow().getDecorView();

view.setDrawingCacheEnabled(true);

view.buildDrawingCache();

Bitmap b1 = view.getDrawingCache();

//获取状态栏高度

Rect frame = new Rect();

activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);

int statusBarHeight = frame.top;

System.out.println(statusBarHeight);

//获取屏幕长和高

int width = activity.getWindowManager().getDefaultDisplay().getWidth();

int height = activity.getWindowManager().getDefaultDisplay().getHeight();

//去掉标题栏

//Bitmap b = Bitmap.createBitmap(b1, 0, 25, 320, 455);

Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height - statusBarHeight);

view.destroyDrawingCache();

return b;

}

//保存到sdcard

private static void savePic(Activity act, Bitmap b, String strFileName) {

FileOutputStream fos = null;

try {

// fos = new FileOutputStream(strFileName);

fos = act.openFileOutput(strFileName, SAVE_AUTHORITY);

if (null != fos) {

b.compress(Bitmap.CompressFormat.JPEG, 90, fos);

fos.flush();

fos.close();

}

} catch (IOException e) {

LogUtil.e(TAG, "savePic e = ", e);

}

}

private static void shareAct(Activity act, String fileName, String text) {

Uri uri = null;

try{

FileInputStream input = act.openFileInput(fileName);

Bitmap bitmap = BitmapFactory.decodeStream(input);

uri = Uri.parse(MediaStore.Images.Media.insertImage(act.getContentResolver(), bitmap, null, null));

input.close();

} catch(Exception e){

LogUtil.v(TAG,"shareAct e = ",e);

}

Intent shareIntent = new Intent(Intent.ACTION_SEND);

shareIntent.putExtra(Intent.EXTRA_STREAM, uri);

shareIntent.setType("image/jpeg");

shareIntent.putExtra(Intent.EXTRA_SUBJECT, "好友推荐");

shareIntent.putExtra(Intent.EXTRA_TEXT, text);

shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

act.startActivity(Intent.createChooser(shareIntent, act.getTitle()));

// Intent shareIntent = new Intent(Intent.ACTION_SEND);

// File file = new File(absolutePath);

// shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));

// shareIntent.setType("image/jpeg");

// act.startActivity(Intent.createChooser(shareIntent, act.getTitle()));

//

//

// Intent intent = new Intent(Intent.ACTION_SEND);

// intent.setType("image/*");//intent.setType("text/plain");

// intent.putExtra(Intent.EXTRA_SUBJECT, "好友推荐");

// intent.putExtra(Intent.EXTRA_TEXT, text);

// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

// startActivity(Intent.createChooser(intent, getTitle()));

}

public static void share(Activity act, String text) {

String saveFileName = "share_pic.jpg";

savePic(act, ScreenShot.takeScreenShot(act), saveFileName);

shareAct(act,saveFileName,text);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值