Компонент представления палитры, поддерживающий рисование произвольных отрезков линий.
Наследуется от конкретного представления и использует его основные функции. Поддерживает экспорт представления в виде растрового изображения 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" />
/**
* Устанавливает пользовательский метод рисования, рисует все точки самостоятельно
* <p>
* По умолчанию: рисование отрезками линии
*/
public void setDraw(IDraw draw);
/**
* Устанавливает цвет кисти, в формате HTML
* <p>
* После установки вступает в силу при следующем касании кистью, ранее нарисованные отрезки линии не изменятся
``` За исключением случаев, предусмотренных Лицензией.
Вы можете получить копию Лицензии по адресу:
http://www.apache.org/licenses/LICENSE-2.0
Если иное не требуется применимым законодательством или не согласовано в письменной форме, программное обеспечение, распространяемое по Лицензии, распространяется на условиях «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ ЛЮБОГО РОДА, явных или подразумеваемых.
См. Лицензию для ознакомления с конкретными положениями, регулирующими разрешения и ограничения в соответствии с Лицензией.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )