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

android——自定义截图(加水印、logo等)

2017-12-12 10:29 549 查看
/**
* 获取指定Activity的截屏,保存到png文件
*/
public 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;
int statusBarHeight = getStatusHeight(activity);

// 获取屏幕长和高
int width = activity.getWindowManager().getDefaultDisplay().getWidth();
int height = activity.getWindowManager().getDefaultDisplay()
.getHeight();

//二维码图片
Bitmap erweima = BitmapFactory.decodeResource(activity.getResources(), R.drawable.icon_erweima);
erweima = Bitmap.createScaledBitmap(erweima, width, width / 5, true);

// 去掉标题栏
// Bitmap b = Bitmap.createBitmap(b1, 0, 25, 320, 455);
Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height
- statusBarHeight);
view.destroyDrawingCache();

Bitmap bitmap = Bitmap.createBitmap(width, height - statusBarHeight + width / 5, Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
Paint bgPaint = new Paint();
bgPaint.setColor(Color.parseColor("#1e4873"));
Rect rect = new Rect(0, 0, width, height - statusBarHeight + width / 5);
canvas.drawRect(rect, bgPaint);

int h = 0;
canvas.drawBitmap(b, 0, h, paint);
h += height - statusBarHeight;
canvas.drawBitmap(erweima, 0, h, paint);

//        savePic(bitmap, "/sdcard/screen_test.png");

return bitmap;
}


获取状态栏高度:

http://www.cnblogs.com/shoneworn/p/8026587.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: