80

GitHub - 1993hzw/Graffiti: android图片涂鸦,具有设置画笔,撤销,缩放移动等功能。...

 5 years ago
source link: https://github.com/1993hzw/Graffiti
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

README.md

Android图片涂鸦

主要功能

  • 设置画笔及形状

    画笔可以选择手绘、仿制、橡皮擦、文字,其中仿制功能跟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.8'
}

接口说明

/**
 * 涂鸦界面,根据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)修复:使用长图,缩放移动时不能自由移动.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK