/Graffiti

android图片涂鸦,具有设置画笔,撤销,缩放移动等功能。Graffiti for android.

Primary LanguageJava

主要功能

  • 设置画笔及形状

    画笔可以选择手绘、仿制、橡皮擦、文字,其中仿制功能跟PS中的类似,复制图片中的某处地方。形状可以选择手绘、箭头、直线、圆、矩形等。画笔的底色可以选择颜色,或者选择一张画布。

  • 撤销及清屏

    可每一步的操作都可以撤销,清屏时将清除所有的操作。

  • 放缩、移动及旋转

    在涂鸦的过程中,可以自由地通过手势缩放和移动图片,同时在多次缩放后,可快速居中图片;支持旋转图片。

  • 放大器

    为了更细微地涂鸦,涂鸦过程中可以设置出现放大器.

界面

IMG IMG IMG

使用

compile 'com.hzw.graffiti:graffiti:4.3.1'
// 涂鸦参数
GraffitiParams params = new GraffitiParams();
// 图片路径
params.mImagePath = list.get(0);
// 初始画笔大小
params.mPaintSize = 20;
// 启动涂鸦页面
GraffitiActivity.startActivityForResult(MainActivity.this, params, REQ_CODE_GRAFFITI);

依赖

dependencies {
    compile 'com.forward.androids:androids:1.1.7'
}

接口说明

/**
 * 涂鸦界面,根据GraffitiView的接口,提供页面交互
 *
 */
public class GraffitiActivity extends Activity {
/**
     * 启动涂鸦界面
     *
     * @param activity
     * @param params      涂鸦参数
     * @param requestCode startActivityForResult的请求码
     */
    public static void startActivityForResult(Activity activity, GraffitiParams params, int requestCode) {
        Intent intent = new Intent(activity, GraffitiActivity.class);
        intent.putExtra(GraffitiActivity.KEY_PARAMS, params);
        activity.startActivityForResult(intent, requestCode);
    }
 }
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   if (requestCode == REQ_CODE_GRAFFITI) {
        if (resultCode == GraffitiActivity.RESULT_OK) {
        // 获取涂鸦后的图片
            String path = data.getStringExtra(GraffitiActivity.KEY_IMAGE_PATH);
            ...
        } else if (resultCode == GraffitiActivity.RESULT_ERROR) {
           ...
        }
    }
}
 /**
 * 涂鸦参数
 */
public static class GraffitiParams implements Parcelable {
    /**
     * 图片路径
     */
    public String mImagePath;
    /**
     *  保存路径,如果为null,则图片保存在根目录下/DCIM/Graffiti/
     */
    public String mSavePath;
    /**
     *  保存路径是否为目录,如果为目录,则在该目录生成由时间戳组成的图片名称
     */
    public boolean mSavePathIsDir;
    /**
     *  橡皮擦底图,如果为null,则底图为当前图片路径
     */
    public String mEraserPath;
    /**
     * 橡皮擦底图是否调整大小,如果为true则调整到跟当前涂鸦图片一样的大小.
     * 默认为true
     */
    public boolean mEraserImageIsResizeable = true;
    /**
     * 触摸时,图片区域外是否绘制涂鸦轨迹
     */
    public boolean mIsDrawableOutside;
    /**
     * 涂鸦时(手指按下)隐藏设置面板的延长时间(ms),当小于等于0时则为不尝试隐藏面板(即保持面板当前状态不变);当大于0时表示需要触摸屏幕超过一定时间后才隐藏
     * 或者手指抬起时展示面板的延长时间(ms),或者表示需要离开屏幕超过一定时间后才展示
     * 默认为800ms
     */
    public long mChangePanelVisibilityDelay = 800; //ms
    /**
     * 设置放大镜的倍数,当小于等于0时表示不使用放大器功能
     * 放大器只有在设置面板被隐藏的时候才会出现
     * 默认为2.5倍
     */
    public float mAmplifierScale = 2.5f;
    /**
     * 初始化的画笔大小
     * 默认为30px
     */
    public float mPaintSize = 30;
}

相关文章

  • 功能介绍:

android图片涂鸦,具有设置画笔,撤销,缩放移动等功能(一)

  • 原理介绍:

android图片涂鸦,具有设置画笔,撤销,缩放移动等功能(二)

android图片涂鸦——旋转与文字功能的实现原理

更新日志

  • 2017-07-17 v4.3.1(9)

    (1)修复:切换横竖屏时异常

  • 2017-07-17 v4.3(8)

(1)增加贴图功能.

  • 2017-03-16 v4.2(7)

(1)美化涂鸦界面.

(2)修复:移动模式中按返回键异常.

(3)加入到JCenter仓库.

  • 2017-03-16 v4.1(5)

(1)加入文字功能,支持输入文字并对文字进行编辑、旋转等.

  • 2017-02-18 v4.0(4)

(1)加入旋转图片的功能,并且支持撤销旋转前的涂鸦操作.

  • 2017-01-24 v3.0(3)

(1)合并图片坐标系和画布坐标系,简化原理.

(2)更新原理介绍的文章.

  • 2016-12-23 v2.0(2)

(1)增加放大器功能.

(2)新增接口:涂鸦时面板自动隐藏.

(3)修复:使用长图,缩放移动时不能自由移动.