package com.jarlen.picturetest;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.jarlen.utils.Constants;
import com.js.photosdk.operate.ImageObject;
import com.js.photosdk.operate.OperateUtils;
import com.js.photosdk.operate.OperateView;
public class AddWatermarkActivity extends Activity implements OnClickListener
{
private LinearLayout content_layout;
private OperateView operateView;
private String camera_path;
private String mPath = null;
OperateUtils operateUtils;
private ImageButton btn_ok, btn_cancel;
private TextView chunvzuo, shenhuifu, qiugouda, guaishushu, haoxingzuo,
wanhuaile, xiangsi, xingzuokong, xinnian, zaoan, zuile, jiuyaozuo,zui;
@Override
protected void onCreate(Bundle savedInstanceState)
{
// requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.addwatermark);
Intent intent = getIntent();
camera_path = intent.getStringExtra("camera_path");
operateUtils = new OperateUtils(this);
initView();
// 延迟每次延迟10 毫秒 隔1秒执行一次
timer.schedule(task, 10, 1000);
}
final Handler myHandler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
if (msg.what == 1)
{
if (content_layout.getWidth() != 0)
{
Log.i("LinearLayoutW", content_layout.getWidth() + "");
Log.i("LinearLayoutH", content_layout.getHeight() + "");
// 取消定时器
timer.cancel();
fillContent();
}
}
}
};
Timer timer = new Timer();
TimerTask task = new TimerTask()
{
public void run()
{
Message message = new Message();
message.what = 1;
myHandler.sendMessage(message);
}
};
private void initView()
{
content_layout = (LinearLayout) findViewById(R.id.mainLayout);
btn_ok = (ImageButton) findViewById(R.id.btn_ok);
btn_cancel = (ImageButton) findViewById(R.id.btn_cancel);
btn_ok.setOnClickListener(this);
btn_cancel.setOnClickListener(this);
chunvzuo = (TextView) findViewById(R.id.chunvzuo);
shenhuifu = (TextView) findViewById(R.id.shenhuifu);
qiugouda = (TextView) findViewById(R.id.qiugouda);
guaishushu = (TextView) findViewById(R.id.guaishushu);
haoxingzuo = (TextView) findViewById(R.id.haoxingzuo);
wanhuaile = (TextView) findViewById(R.id.wanhuaile);
xiangsi = (TextView) findViewById(R.id.xiangsi);
xingzuokong = (TextView) findViewById(R.id.xingzuokong);
xinnian = (TextView) findViewById(R.id.xinnian);
zaoan = (TextView) findViewById(R.id.zaoan);
zuile = (TextView) findViewById(R.id.zuile);
jiuyaozuo = (TextView) findViewById(R.id.jiuyaozuo);
zui = (TextView) findViewById(R.id.zui);
chunvzuo.setOnClickListener(this);
shenhuifu.setOnClickListener(this);
qiugouda.setOnClickListener(this);
guaishushu.setOnClickListener(this);
haoxingzuo.setOnClickListener(this);
wanhuaile.setOnClickListener(this);
xiangsi.setOnClickListener(this);
xingzuokong.setOnClickListener(this);
xinnian.setOnClickListener(this);
zaoan.setOnClickListener(this);
zuile.setOnClickListener(this);
jiuyaozuo.setOnClickListener(this);
zui.setOnClickListener(this);
}
private void fillContent()
{
Bitmap resizeBmp = BitmapFactory.decodeFile(camera_path);
operateView = new OperateView(AddWatermarkActivity.this, resizeBmp);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
resizeBmp.getWidth(), resizeBmp.getHeight());
operateView.setLayoutParams(layoutParams);
content_layout.addView(operateView);
operateView.setMultiAdd(true); // 设置此参数,可以添加多个图片
}
private void btnSave()
{
operateView.save();
Bitmap bmp = getBitmapByView(operateView);
if (bmp != null)
{
mPath = saveBitmap(bmp, "saveTemp");
Intent okData = new Intent();
okData.putExtra("camera_path", mPath);
setResult(RESULT_OK, okData);
this.finish();
}
}
// 将模板View的图片转化为Bitmap
public Bitmap getBitmapByView(View v)
{
Bitmap bitmap = Bitmap.createBitmap(v.getWidth(), v.getHeight(),
Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
v.draw(canvas);
return bitmap;
}
// 将生成的图片保存到内存中
public String saveBitmap(Bitmap bitmap, String name)
{
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED))
{
File dir = new File(Constants.filePath);
if (!dir.exists())
dir.mkdir();
File file = new File(Constants.filePath + name + ".jpg");
FileOutputStream out;
try
{
out = new FileOutputStream(file);
if (bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out))
{
out.flush();
out.close();
}
return file.getAbsolutePath();
} catch (IOException e)
{
e.printStackTrace();
}
}
return null;
}
private void addpic(int position)
{
Bitmap bmp = BitmapFactory.decodeResource(getResources(), position);
// ImageObject imgObject = operateUtils.getImageObject(bmp);
ImageObject imgObject = operateUtils.getImageObject(bmp, operateView,
5, 150, 100);
operateView.addItem(imgObject);
}
int watermark[] = {R.drawable.watermark_chunvzuo, R.drawable.comment,
R.drawable.gouda, R.drawable.guaishushu, R.drawable.haoxingzuop,
R.drawable.wanhuaile, R.drawable.xiangsi, R.drawable.xingzuokong,
R.drawable.xinnian, R.drawable.zaoan, R.drawable.zuile,
R.drawable.zuo,R.drawable.zui};
@Override
public void onClick(View v)
{
switch (v.getId())
{
case R.id.chunvzuo :
addpic(watermark[0]);
break;
case R.id.shenhuifu :
addpic(watermark[1]);
break;
case R.id.qiugouda :
addpic(watermark[2]);
break;
case R.id.guaishushu :
addpic(watermark[3]);
break;
case R.id.haoxingzuo :
addpic(watermark[4]);
break;
case R.id.wanhuaile :
addpic(watermark[5]);
break;
case R.id.xiangsi :
addpic(watermark[6]);
break;
case R.id.xingzuokong :
addpic(watermark[7]);
break;
case R.id.xinnian :
addpic(watermark[8]);
break;
case R.id.zaoan :
addpic(watermark[9]);
break;
case R.id.zuile :
addpic(watermark[10]);
break;
case R.id.jiuyaozuo :
addpic(watermark[11]);
break;
case R.id.zui :
addpic(watermark[12]);
break;
case R.id.btn_ok :
btnSave();
break;
case R.id.btn_cancel :
finish();
break;
default :
break;
}
}
}