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

Android截图以及加水印Demo

2011-10-29 01:14 656 查看

实现一个简单的截图功能以及给图片添加水印的功能,直接上代码!

一、代码实现

view plaincopy
to clipboardprint?

<span style="font-size:18px;">import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.graphics.Bitmap.Config;
import android.os.Bundle;
import android.text.format.Time;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class GetAppThumbnailActivity extends Activity {
private Button btnThum;
private ImageView imgThum;
private ImageView imgSource;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setupViews();
}

private void setupViews() {
btnThum = (Button) findViewById(R.id.getThum);
imgThum = (ImageView) findViewById(R.id.setThum);
imgSource = (ImageView) findViewById(R.id.source);

btnThum.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
Bitmap bitmap = getViewBitmap(imgSource);
Bitmap bitmap1 = createBitmap(bitmap, "haha哈哈");
if (bitmap1 != null) {
imgThum.setImageBitmap(bitmap1);
}
}
});
}

/**
* Draw the view into a bitmap.
*/
private Bitmap getViewBitmap(View v) {
v.clearFocus();
v.setPressed(false);

boolean willNotCache = v.willNotCacheDrawing();
v.setWillNotCacheDrawing(false);

// Reset the drawing cache background color to fully transparent

// for the duration of this operation

int color = v.getDrawingCacheBackgroundColor();
v.setDrawingCacheBackgroundColor(0);

if (color != 0) {
v.destroyDrawingCache();
}
v.buildDrawingCache();
Bitmap cacheBitmap = v.getDrawingCache();
if (cacheBitmap == null) {
return null;
}

Bitmap bitmap = Bitmap.createBitmap(cacheBitmap);

// Restore the view

v.destroyDrawingCache();
v.setWillNotCacheDrawing(willNotCache);
v.setDrawingCacheBackgroundColor(color);

return bitmap;
}

// 给图片添加水印
private Bitmap createBitmap(Bitmap src, String str) {
Time t = new Time();
t.setToNow();
int w = src.getWidth();
int h = src.getHeight();
String mstrTitle = "截图时间:"+t.hour + ":" + t.minute + ":" + t.second;
Bitmap bmpTemp = Bitmap.createBitmap(w, h, Config.ARGB_8888);
Canvas canvas = new Canvas(bmpTemp);
Paint p = new Paint();
String familyName = "宋体";
Typeface font = Typeface.create(familyName, Typeface.BOLD);
p.setColor(Color.BLUE);
p.setTypeface(font);
p.setTextSize(22);
canvas.drawBitmap(src, 0, 0, p);
canvas.drawText(mstrTitle, 0, 20, p);
canvas.save(Canvas.ALL_SAVE_FLAG);
canvas.restore();
return bmpTemp;
}

}</span>

view plaincopy
to clipboardprint?

<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical" android:layout_width="fill_parent"

android:layout_height="fill_parent">

<Button

android:id="@+id/getThum"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/str_getthum"/>

<ImageView

android:id="@+id/setThum"

android:background="@drawable/no_image"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

<ImageView

android:id="@+id/source"

android:background="@drawable/v"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

</LinearLayout>

</span>

<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:id="@+id/getThum"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/str_getthum"/>
<ImageView
android:id="@+id/setThum"
android:background="@drawable/no_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<ImageView
android:id="@+id/source"
android:background="@drawable/v"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</span>


3、源码下载地址:http://download.csdn.net/detail/tangcheng_ok/3670937

4、效果演示

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