拍照是現在年輕人比較熱愛的活動,我也跟隨潮流做了一個水印相機,廢話不多說了,代碼貼上。
package com.jxufe.watermarkercamera;
import java.io.File;
import org.winplus.gathum.R;
import com.jxufe.watermarkercamera.filters.BlockFilter;
import com.jxufe.watermarkercamera.filters.BlurFilter;
import com.jxufe.watermarkercamera.filters.EclosionFilter;
import com.jxufe.watermarkercamera.filters.IceFilter;
import com.jxufe.watermarkercamera.filters.LightFilter;
import com.jxufe.watermarkercamera.filters.OilFilter;
import com.jxufe.watermarkercamera.filters.SketchFilter;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.graphics.Bitmap.Config;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.provider.Settings.System;
import android.text.format.Time;
import android.util.Log;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class GetAppThumbnailActivity extends Activity {
private Button btnThum;
private ImageView imgThum;
private EditText textView;
private double x;// 文集居於畫布的座標
private double y;// 文字居於畫布的座標
private String imgPath = "/sdcard/img.jpg";
private Bitmap bitmap;
private WindowManager txt = null;
private WindowManager.LayoutParams params = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
File vFile = new File(imgPath);
Uri uri = Uri.fromFile(vFile);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);//
startActivityForResult(intent, 100);
setupViews();
}
private void setupViews() {
btnThum = (Button) findViewById(R.id.getThum);
imgThum = (ImageView) findViewById(R.id.setThum);
textView = (EditText) findViewById(R.id.txt);
bitmap = BitmapFactory.decodeFile(imgPath);
// bitmap = LightFilter.changeToLight(bitmap);// 設置濾鏡效果
imgThum.setImageBitmap(bitmap);
txt = (WindowManager) getApplicationContext()
.getSystemService(Context.WINDOW_SERVICE);
params = new WindowManager.LayoutParams();
params.type = WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;
params.flags = WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
params.alpha = 1f;
params.type = 2003;
params.format = 1;
params.x = (int) textView.getX();
params.y = (int) textView.getY() + btnThum.getHeight();
params.gravity = Gravity.LEFT|Gravity.TOP;
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.width = WindowManager.LayoutParams.WRAP_CONTENT;
btnThum.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Bitmap bitmap1 = createBitmap(bitmap);
if (bitmap1 != null) {
imgThum.setImageBitmap(bitmap1);
}
}
});
textView.setOnLongClickListener(new OnLongClickListener() {
public boolean onLongClick(View v) {
textView.setVisibility(View.INVISIBLE);
final TextView t = new TextView(getApplicationContext());
t.setText(textView.getText());
txt.addView(t, params);
t.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
float x = 0, y = 0;
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
params.flags = WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;
params.x = (int) (event.getRawX() - x);
params.y = (int) (event.getRawY() - y);
txt.updateViewLayout(t, params);
break;
case MotionEvent.ACTION_DOWN:
x = event.getX();
y = event.getY();
break;
case MotionEvent.ACTION_UP:
params.flags = WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM
& WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
txt.removeView(t);
textView.setX(params.x);
textView.setY(params.y);
textView.setVisibility(View.VISIBLE);
x = y = 0;
}
return true;
}
});
return false;
}
});
}
// 給圖片添加水印
private Bitmap createBitmap(Bitmap src) {
int w = src.getWidth();
int h = src.getHeight();
String mstrTitle = textView.getText().toString();
Bitmap bmpTemp = Bitmap.createBitmap(w, h, Config.ARGB_8888);
Canvas canvas = new Canvas(bmpTemp);
Paint p = new Paint();
p.setTypeface(textView.getTypeface());
p.setTextSize(35);
canvas.drawBitmap(src, 0, 0, p);
canvas.drawText(mstrTitle, textView.getX(), textView.getY(), p);
canvas.save(Canvas.ALL_SAVE_FLAG);
canvas.restore();
return bmpTemp;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 100) {
if (resultCode == RESULT_OK) {
// Image captured and saved to fileUri specified in the Intent
Toast.makeText(this, "Image saved", Toast.LENGTH_LONG).show();
} else if (resultCode == RESULT_CANCELED) {
// User cancelled the image capture
} else {
// Image capture failed, advise user
}
}
}
}
上面就是水印相機的主要實現類,並且我在裏面還添加了濾鏡的功能,濾鏡的類有需要的可以給我點贊留言,我會發給他的哦!!!懂得分享,成就未來!!!