水印相機

拍照是現在年輕人比較熱愛的活動,我也跟隨潮流做了一個水印相機,廢話不多說了,代碼貼上。
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
			}
		}
	}

}
上面就是水印相機的主要實現類,並且我在裏面還添加了濾鏡的功能,濾鏡的類有需要的可以給我點贊留言,我會發給他的哦!!!懂得分享,成就未來!!!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章