1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/osard-palettelib

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

PaletteLib

Введение

Компонент представления палитры, поддерживающий рисование произвольных отрезков линий.

Наследуется от конкретного представления и использует его основные функции. Поддерживает экспорт представления в виде растрового изображения bitmap и экспорт в файл.

Зависимости

Файл build.gradle проекта:

allprojects {
    repositories {
        google()
        mavenCentral()

        //jitpack 仓库
        maven { url 'https://jitpack.io' }
    }
}

Файл build.gradle приложения:

dependencies {
    ...
    implementation 'com.gitee.osard:palettelib:1.3.0'
    implementation 'androidx.appcompat:appcompat:1.2.0'
}

Использование

  • Базовое представление палитры:
/**
 * Назначение: представление палитры для рисования, пользователь может легко интегрировать палитру, наследуя этот класс
 * <p>
 * Примечание: необходимо установить фон для макета и некоторых элементов управления перед рисованием отрезков линии
 *
 * <p>
 * Автор: MJSoftKing
 */
public class BasePalette {}
  • Пользовательское представление с добавленной возможностью палитры:
/*
 Если это элемент макета, то необходимо установить фон перед рисованием отрезка линии
*/
public class TestView extends androidx.appcompat.widget.AppCompatImageView implements BasePalette.IDraw {

    public BasePalette palette;

    public TestView(@NonNull Context context) {
        super(context);
        init();
    }

    public TestView(@NonNull Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public TestView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init() {
        palette = BasePalette.create(this);
//        palette.setEnableEndToEnd(true);
//        palette.setEnableOnce(true);

//        //Переписываем для рисования многоугольника, в этом случае метод рисования полностью реализуется этим методом (todo метод два)
//        palette.setDraw((canvas, lines) -> {
//            for (PaletteDrawConfig config : lines) {
//                if(config.points.size() <= 1) continue;
//
//                Path path1 = new Path();
//                path1.moveTo(config.points.get(0).x, config.points.get(0).y);
//                for (int i = 1; i < config.points.size(); ++i) {
//                    path1.lineTo(config.points.get(i).x, config.points.get(i).y);
//                }
//                path1.close();//закрытие
//                config.paint.setStyle(Paint.Style.STROKE);
//                canvas.drawPath(path1, config.paint);
//            }
//        });
    }

    /**
     * todo Метод один: реализация интерфейса {@link BasePalette.IDraw}, тогда нет необходимости вручную устанавливать метод рисования, по умолчанию происходит перерисовка
     * <p>
     * Переписываем для рисования многоугольника, в этом случае метод рисования полностью реализуется этим методом
     */
    public void onDraw(Canvas canvas, List<PaletteDrawConfig> lines) {
        for (PaletteDrawConfig config : lines) {
            if (config.points.size() <= 1) continue;

            Path path1 = new Path();
            path1.moveTo(config.points.get(0).x, config.points.get(0).y);
            for (int i = 1; i < config.points.size(); ++i) {
                path1.lineTo(config.points.get(i).x, config.points.get(i).y);
            }
            path1.close();//закрытие
            config.paint.setStyle(Paint.Style.STROKE);
            canvas.drawPath(path1, config.paint);
        }
    }

    @Override
    @SuppressLint("ClickableViewAccessibility")
    public boolean onTouchEvent(MotionEvent event) {
        return palette.onTouchEvent(event) || super.onTouchEvent(event);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        palette.onDraw(canvas);
    }
}
  • Предоставленные представления:
PaletteImageView        наследуется от AppCompatImageView
PaletteTextView         наследуется от AppCompatTextView
PaletteView             наследуется от View
PaletteSurfaceView      наследуется от SurfaceView
  • Импорт макета:
<com.mjsoftking.palettelib.PaletteImageView
    android:id="@+id/handView"
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:src="@mipmap/ic_launcher" />
  • Методы, предоставляемые BasePalette:
/**
 * Устанавливает пользовательский метод рисования, рисует все точки самостоятельно
 * <p>
 * По умолчанию: рисование отрезками линии
 */
public void setDraw(IDraw draw);
/**
 * Устанавливает цвет кисти, в формате HTML
 * <p>
 * После установки вступает в силу при следующем касании кистью, ранее нарисованные отрезки линии не изменятся
``` За исключением случаев, предусмотренных Лицензией.

Вы можете получить копию Лицензии по адресу:

    http://www.apache.org/licenses/LICENSE-2.0

Если иное не требуется применимым законодательством или не согласовано в письменной форме, программное обеспечение, распространяемое по Лицензии, распространяется на условиях «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ ЛЮБОГО РОДА, явных или подразумеваемых.

См. Лицензию для ознакомления с конкретными положениями, регулирующими разрешения и ограничения в соответствии с Лицензией.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Панель рисования, компонент представления для рисования произвольных отрезков линий. Можно наследовать от конкретного View и использовать основные характеристики исходного View. Поддерживает экспорт представления в растровое изображение bitmap и экспорт в файл. Развернуть Свернуть
Apache-2.0
Отмена

Обновления (1)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/osard-palettelib.git
git@api.gitlife.ru:oschina-mirror/osard-palettelib.git
oschina-mirror
osard-palettelib
osard-palettelib
master