package com.eyingsoft.image;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import android.widget.Toast;
import com.eyingsoft.image.util.EditImage;
import com.eyingsoft.image.util.ImageFrameAdder;
import com.eyingsoft.image.util.ReverseAnimation;
import com.eyingsoft.image.view.CropImageView;
import com.eyingsoft.image.view.ToneView;
import com.eyingsoft.image.view.menu.MenuView;
import com.eyingsoft.image.view.menu.OnMenuClickListener;
import com.eyingsoft.image.view.menu.SecondaryListMenuView;
import com.eyingsoft.image.view.menu.ToneMenuView;
public class MainActivity extends Activity implements OnSeekBarChangeListener {
public boolean mWaitingToPick;
public boolean mSaving;
private Handler mHandler = null;
private ProgressDialog mProgress;
private Bitmap mBitmap;
private Bitmap mTmpBmp;
private CropImageView mImageView;
private EditImage mEditImage;
private ImageFrameAdder mImageFrame;
private MenuView mMenuView;
//设置一级菜单下每个item的图片显示
private final int[] EDIT_IMAGES = new int[] {
R.drawable.ic_menu_crop,//裁剪按钮
R.drawable.ic_menu_rotate_left, //旋转按钮
R.drawable.ic_menu_mapmode,//缩放按钮
R.drawable.btn_rotate_horizontalrotate, //反转按钮
R.drawable.btn_mainmenu_frame_normal
};
//设置一级菜单下每个item的文字显示
private final int[] EDIT_TEXTS = new int[] {
R.string.crop,
R.string.rotate,
R.string.resize,
R.string.reverse_transform,
R.string.frame
};
//二级菜单
private SecondaryListMenuView mSecondaryListMenu;
//旋转图片设置
private final int[] ROTATE_IMGRES = new int[] {
R.drawable.ic_menu_rotate_left, //左旋转按钮
R.drawable.ic_menu_rotate_right //右旋转按钮
};
//旋转文字设置
private final int[] ROTATE_TEXTS = new int[] {
R.string.rotate_left,
R.string.rotate_right
};
//缩放文字设置
private final int[] RESIZE_TEXTS = new int[] {
R.string.resize_two_to_one ,
R.string.resize_four_to_one ,
R.string.resize_one_to_two,
R.string.resize_one_to_four
};
//缩放图片设置
private final int[] RESIZE_IMGRES = new int[] {
R.drawable.resize_one_to_two,
R.drawable.resize_one_to_four,
R.drawable.resize_one_to_four,
R.drawable.resize_one_to_four
};
//边框图片设置
private final int[] FRAME_ADD_IMAGES = new int[] {
R.drawable.frame_around1,
R.drawable.frame_around2,
R.drawable.frame_small1
};
//反转图片设置
private final int[] FANZHUAN_TEXTS = new int[]{
R.string.fanzhuan_left_right,
R.string.fanzhuan_top_bottom
};
//反转文字设置
private final int[] FANZHUAN_IMAGES = new int[]{
R.drawable.btn_rotate_horizontalrotate,
R.drawable.btn_rotate_verticalrotate
};
// 调色菜单
private ToneMenuView mToneMenu;
private ToneView mToneView;
/** 调色 */
private final int FLAG_TONE = 0x1;
/** 添加边框 */
private final int FLAG_FRAME_ADD = FLAG_TONE + 6;
/** 编辑 */
private final int FLAG_EDIT = FLAG_TONE + 2;
/** 旋转 */
private final int FLAG_EDIT_ROTATE = FLAG_TONE + 4;
/** 缩放 */
private final int FLAG_EDIT_RESIZE = FLAG_TONE + 5;
/** 反转 */
private final int FLAG_EDIT_REVERSE = FLAG_TONE + 8;
private View mSaveAll;//保存全部视图
private View mSaveStep;//记录各个步骤的视图
private final int STATE_CROP = 0x1;
private final int STATE_NONE = STATE_CROP << 2;
private final int STATE_TONE = STATE_CROP << 3;
private final int STATE_REVERSE = STATE_CROP << 4;
private int mState;
//反转动画
private ReverseAnimation mReverseAnim;
private int mImageViewWidth;
private int mImageViewHeight;
private ProgressDialog mProgressDialog;
private TextView mShowHandleName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mHandler = new Handler() {
public void handleMessage(Message msg) {
closeProgress();
reset();
}
};
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.image_main);
mSaveAll = findViewById(R.id.save_all);
mSaveStep = findViewById(R.id.save_step);
mShowHandleName = (TextView) findViewById(R.id.handle_name);
Intent intent = getIntent();
String path = intent.getStringExtra("path");
Log.d("MainActivity", "path=" + path);
if (null == path) {
Toast.makeText(this, R.string.load_failure, Toast.LENGTH_SHORT)
.show();
finish();
}
mBitmap = BitmapFactory.decodeFile(path);
mTmpBmp = mBitmap.copy(Bitmap.Config.ARGB_8888, true);
mImageView = (CropImageView) findViewById(R.id.crop_image);
mImageView.setImageBitmap(mBitmap);
mImageView.setImageBitmapResetBase(mBitmap, true);//递归调用将图片的具体视图进行重置
mEditImage = new EditImage(this, mImageView, mBitmap);//编辑图片
mImageFrame = new ImageFrameAdder(this, mImageView, mBitmap);//图片边框设置 mBitmap原来的图片,mImageView渲染的图片
mImageView.setEditImage(mEditImage);//当编辑渲染操作完成时,还能继续进行其他的功能渲染通过这个方法
}
//-----------------菜单事件----------------
public void onClick(View v) {
int flag = -1;
switch (v.getId()) {
case R.id.save:
String path = saveBitmap(mBitmap);//invoke saveBitmap();
Log.v("savePath", path);
if (mProgressDialog != null) {
mProgressDialog.dismiss();
mProgressDialog = null;
}
Intent data = new Intent();
data.putExtra("path", path);
setResult(RESULT_OK, data);
finish();
return;
case R.id.cancel://取消
setResult(RESULT_CANCELED);
finish();
return;
case R.id.save_step://步骤保存
if (mState == STATE_CROP) {
mTmpBmp = mEditImage.cropAndSave(mTmpBmp);
} else if (mState == STATE_TONE) {
mTmpBmp = mToneView.getBitmap();
}else if (mState == STATE_REVERSE) {
mReverseAnim.cancel();
mReverseAnim = null;
}
mBitmap = mTmpBmp;
showSaveAll();
reset();
mEditImage.mSaving = true;
mImageViewWidth = mImageView.getWidth();
mImageViewHeight = mImageView.getHeight();
return;
case R.id.cancel_step://步骤取消
if (mState == STATE_CROP) {
mEditImage.cropCancel();
} else if (mState == STATE_REVERSE) {
mReverseAnim.cancel();
}
showSaveAll();
resetToOriginal();
return;
case R.id.edit://编辑
flag = FLAG_EDIT;
break;
case R.id.tone://色调
initTone();
showSaveStep();
return;
}
initMenu(flag);
}
// 调色功能初始化
private void initTone() {
if (null == mToneMenu) {
mToneMenu = new ToneMenuView(this);
}
mToneMenu.show();
mState = STATE_TONE;
mToneView = mToneMenu.getToneView();
mToneMenu.setHueBarListener(this);
mToneMenu.setLumBarListener(this);
mToneMenu.setSaturationBarListener(this);
}
//编辑按钮的一级菜单初始化
private void initMenu(int flag) {
if (null == mMenuView) {
mMenuView = new MenuView(this);
mMenuView.setBackgroundResource(R.drawable.popup);
mMenuView.setTextSize(16);
switch (flag) {
case FLAG_EDIT:
mMenuView.setImageRes(EDIT_IMAGES);
mMenuView.setText(EDIT_TEXTS);
mMenuView.set
没有合适的资源?快使用搜索试试~ 我知道了~
类似美图秀秀的Android源码
共195个文件
png:98个
class:48个
java:18个
5星 · 超过95%的资源 需积分: 10 839 下载量 197 浏览量
2013-10-19
15:36:16
上传
评论 29
收藏 3.25MB RAR 举报
温馨提示
说明:这不是美图秀秀的Android源码,只是类似美图秀秀的Android应用源码。 类似美图秀秀的图片处理应用Android源码,图片,图形处理工具比较全面,界面不是很友好,但是从技术开发的角度来看,还是很不错的,对做图形处理的同学还是很有价值的;如果有意开发图形处理工具的同学,将这个软件包继续开发完善,会是一个不错的选择。
资源推荐
资源详情
资源评论
收起资源包目录
类似美图秀秀的Android源码 (195个子文件)
.amateras 239B
resources.ap_ 843KB
XiuXiu2.2.apk 883KB
jarlist.cache 119B
MainActivity.class 14KB
SecondaryListMenuView.class 11KB
MenuView.class 11KB
HighlightView.class 9KB
ImageViewTouchBase.class 9KB
EditImage.class 7KB
CropImageView.class 7KB
ImageFrameAdder.class 6KB
ToneView.class 6KB
MenuItem.class 5KB
EditImage$1.class 5KB
ChooseImageActivity.class 3KB
ToneMenuView.class 3KB
R$drawable.class 3KB
ReverseAnimation.class 2KB
EditImage$1$1.class 2KB
RotateBitmap.class 2KB
EditImage$2.class 2KB
MainActivity$1.class 2KB
EditImage$2$1.class 2KB
SecondaryListMenuView$2.class 2KB
MainActivity$6.class 2KB
MainActivity$4.class 2KB
EditImage$BackgroundJob.class 2KB
MainActivity$5.class 2KB
MenuView$2.class 1KB
MainActivity$3.class 1KB
MenuAdapter.class 1KB
R$string.class 1KB
ImageViewTouchBase$2.class 1KB
HighlightView$ModifyMode.class 1KB
SecondaryListMenuView$3.class 1KB
SecondaryListMenuView$1.class 1KB
EditImage$BackgroundJob$1.class 1KB
MenuView$3.class 1KB
MenuView$1.class 1KB
ToneMenuView$1.class 998B
ImageViewTouchBase$1.class 933B
R$id.class 834B
MainActivity$2.class 760B
R.class 634B
R$anim.class 509B
R$layout.class 494B
R$style.class 440B
BuildConfig.class 347B
R$attr.class 343B
OnMenuClickListener.class 331B
ImageViewTouchBase$Recycler.class 291B
.classpath 364B
Thumbs.db 86KB
Thumbs.db 4KB
Thumbs.db 4KB
classes.dex 75KB
MainActivity.java 18KB
HighlightView.java 14KB
SecondaryListMenuView.java 14KB
MenuView.java 13KB
ImageViewTouchBase.java 11KB
EditImage.java 11KB
CropImageView.java 9KB
ToneView.java 8KB
R.java 7KB
ImageFrameAdder.java 7KB
MenuItem.java 6KB
ChooseImageActivity.java 3KB
ToneMenuView.java 2KB
RotateBitmap.java 2KB
ReverseAnimation.java 2KB
MenuAdapter.java 802B
OnMenuClickListener.java 406B
BuildConfig.java 161B
black.jpg 111KB
a2.jpg 49KB
a0.png 336KB
a0.png 329KB
a1.png 134KB
frame_big1.png 123KB
frame_big1.png 117KB
a1.png 112KB
icon.png 20KB
icon.png 17KB
frame_small1.png 8KB
frame_small1.png 7KB
btn_rotate_verticalrotate.png 6KB
btn_rotate_horizontalrotate.png 6KB
resize_one_to_four.png 5KB
ic_menu_rotate_left.png 5KB
resize_one_to_three.png 5KB
resize_one_to_two.png 5KB
ic_menu_rotate_right.png 5KB
frame_around1.png 4KB
btn_rotate_verticalrotate.png 4KB
btn_view_back_press.png 4KB
btn_view_back_press.png 4KB
popup_bottom_tip.9.png 4KB
btn_rotate_horizontalrotate.png 4KB
共 195 条
- 1
- 2
JerryHe
- 粉丝: 164
- 资源: 37
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页