allprojects {
repositories {
maven {
url 'https://s01.oss.sonatype.org/content/repositories/releases/'
}
}
}
dependencies {
implementation('com.gitee.chinasoft_ohos:contourView:1.0.0')
......
}
После этого проект можно запустить на sdk6 и DevEco Studio 2.2 Beta1. Если проект не запускается, удалите файлы .gradle, .idea, build и build.gradle и создайте новый проект. Скопируйте файлы из нового проекта в корневой каталог.
Использовать библиотеку просто. Для этого достаточно изучить примеры исходного кода. Чтобы создать представление ContourView, используйте следующий код:
<com.ocnyang.contourview.ContourView
ohos:height="match_parent"
ohos:width="match_parent"
app:contour_style="Sand"
app:shader_mode="Radial"
app:shader_startcolor="$color:startcolor"
app:shader_endcolor="$color:endcolor"
app:shader_style="Left_To_Bottom"
/>
В Java-коде:
private void initCustomContourView() {
ContourView contourViewCustom = (ContourView) findComponentById(ResourceTable.Id_contourview_custom);
int width = getWidth();
int hight = 700;
int[] ints = {width / 2, 50, ((int) (width * 0.75)), hight / 2, ((int) (width * 0.35)), 350};
int[] intArr = new int[]{width / 5, hight / 3, width / 4 * 3, hight / 2, width / 2, ((int) (hight * 0.9)), width / 5, ((int) (hight * 0.8))};
contourViewCustom.setPoints(ints, intArr);
try {
contourViewCustom.setShaderStartColor(new Color(getResourceManager().getElement(ResourceTable.Color_startcolor).getColor()));
contourViewCustom.setShaderEndColor(new Color(getResourceManager().getElement(ResourceTable.Color_endcolor).getColor()));
} catch (Exception e) {
}
contourViewCustom.setShaderMode(ContourView.SHADER_MODE_RADIAL);
}
(xml) атрибут | Описание | Тип значения |
---|---|---|
contour_style | Встроенный стиль контура | Beach, Ripples, Clouds, Sand, Shell |
smoothness | Коэффициент кривизны контура (не рекомендуется устанавливать без необходимости) | Float, диапазон: 0–1, рекомендуемый диапазон: 0,15–0,3, по умолчанию: 0,25 |
shader_mode | Способ заполнения цвета внутри контура | Radial, Sweep, Linear, по умолчанию — сплошное заполнение |
shader_startcolor | Цвет начала заливки | color, полупрозрачный эффект, значение, подобное #90FF0000 (по умолчанию белый, необходимо установить shader_mode для эффекта) |
shader_endcolor | Цвет конца заливки | То же, что и выше |
shader_style | Контроль направления и начальной точки заливки | LeftToBottom (от верхнего левого угла до нижнего правого), RightToBottom (от верхнего правого угла до нижнего левого), TopToBottom (из средней верхней точки в среднюю нижнюю точку), Center (из центральной точки в нижний правый угол) |
shader_color | Цвет сплошной заливки | color, по умолчанию белый, если не установлен shader_mode, можно использовать этот атрибут для установки цвета сплошной заливки |
Динамические атрибуты
Все перечисленные (xml) атрибуты имеют соответствующие методы настройки. Кроме того, есть несколько динамически настраиваемых атрибутов.
Координаты якоря контура
public void setPoints(List<Point[]> pointsList) // List<> указывает количество контуров, Point[] указывает координаты конкретного контура, каждый контур имеет как минимум 4 точки привязки.
Метод параметра | Описание |
---|---|
setPoints(int... pts) | Один контур, int[]{точка привязки 1.x, точка привязки 1.y, точка привязки 2.x, точка привязки 2.y... точка привязки n.x, точка привязки y} |
setPoints(Point[]... pointsArr) | Один контур |
setPoints(Point... points) | Несколько контуров |
setPoints(int[]... ptsArr) | Несколько контуров |
Пользовательский режим заливки контура
public void setShader(Shader... shader) // Shader: передать собственный RadialGradient, SweepGradient, LinearGradient. // При передаче нескольких шейдеров несколько контуров будут иметь разные режимы заливки, Shader[0] заполняет контур 1, Shader[1] заполняет контур 2...
Step2. Используйте в макете или установите соответствующие пользовательские атрибуты.
<com.ocnyang.contourview.ContourView
ohos:layout_width="match_parent"
ohos:layout_height="400dp"
app:contour_style="Ripples"
app:shader_endcolor="@color/endcolor"
app:shader_mode="RadialGradient"
app:shader_startcolor="@color/startcolor"
app:shader_style="Center"
app:smoothness="0.2"/>
Установите атрибуты в соответствии с вашими потребностями.
Step3. Если вам нужно настроить свой уникальный контур, вы можете динамически настроить следующее в коде.
/**
* Настроить координаты якоря для управления областью рисования.
*/
private void initCustomContourView() {
ContourView contourViewCustom = (ContourView) findViewById(R.id.contourview_custom);
int width = getWidth();// Получить ширину экрана
int hight = 400;
int[] ints = {ширина / 2, 0, ширина, высота / 2, ширина / 2, высота, 0, высота / 2}; **int[] intArr = new int[]{width / 2, hight / 4, width / 4 * 3, hight / 2, width / 2, hight / 4 * 3, width / 4, hight / 2};**
contourViewCustom.setPoints(ints, intArr); contourViewCustom.setShaderStartColor(getResources().getColor(R.color.startcolor)); contourViewCustom.setShaderEndColor(getResources().getColor(R.color.endcolor)); contourViewCustom.setShaderMode(ContourView.SHADER_MODE_RADIAL);
/**
RadialGradient radialGradient = new RadialGradient(0, 0,4000, getResources().getColor(R.color.startcolor), getResources().getColor(R.color.endcolor), Shader.TileMode.CLAMP); LinearGradient linearGradient = new LinearGradient(0, 0, getWidth(), 400, Color.argb(30, 255, 255, 255), Color.argb(90, 255, 255, 255), Shader.TileMode.REPEAT); contourViewBeach.setShader(radialGradient, linearGradient); }
CodeCheck代码测试无异常 CloudTest代码测试无异常 病毒安全检测通过 当前版本demo功能与原组件基本无差异
Apache 2.0 License
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )