#android #xml #android-layout #android-drawable #vector-graphics
#Android #xml #android-макет #android-drawable #векторная графика
Вопрос:
Привет, я пытаюсь использовать вектор, который можно рисовать в моем приложении для Android.
Вот xml для того же
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="1024dp"
android:height="1024dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M 0,0 L 50,0 L 50,50 z"
android:strokeColor="#000000" />
</vector>
и вот как это выглядит без какой-либо ширины обводки
Если я добавлю android:strokeWidth=»10″, вот как это выглядит
Ширина стока не согласована (одинаковая ширина) по всем строкам, и крайняя левая точка, похоже, не обрезана
Есть ли какой-либо способ, с помощью которого все 3 нарисованные линии будут согласованными (одинаковой ширины), а не нерегулярными?
Комментарии:
1. Из того, что я вижу, проблема в том, что вы рисуете в верхнем левом углу (0,0), из-за чего одна сторона обводки обрезается до края области просмотра.
2. Как установить обводку для <clip-path> ?
Ответ №1:
Представьте, что рисуемый объект представляет собой систему координат с точкой p (0,0), находящейся в верхнем левом углу. Ваша ось x проходит от верхнего левого угла к верхнему правому, а ваша ось y проходит от верхнего левого угла к нижнему левому.
Когда вы создаете путь, он переходит из одной точки в другую точку в системе координат. Когда вы обводите этот путь, нарисованная линия имеет strokeWidth
значение, равное 1 по умолчанию. Но когда вы устанавливаете ширину, скажем, 10, тогда линия в вашей системе координат намного толще, но куда должна идти эта «Толщина», если ваш путь, например, уже равен y = 0? В drawable не будут отображаться отрицательные координаты. Вот почему ваш чертеж был обрезан.
Решение: добавьте strokeWidth
к координатам, которые меньше strokeWidth
вычтите strokeWidth
из координат, которые больше ваших viewportWidth-strokeWidth
, и / или viewportHeight-strokeWidth
укажите интервал для краев, которые находятся на границах вашего окна просмотра (в этом примере дополнительный интервал в 3 подойдет)
Итак, ваш код должен выглядеть следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="1024dp"
android:height="1024dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M 13,13 L 50,13 L 50,50 z"
android:strokeColor="#000000"
android:strokeWidth="10"/>
</vector>
Комментарии:
1. Спасибо за решение, это работает, было интересно, есть ли какое-либо общее решение, которое работает для сложного объекта, поскольку я имел в виду, что был предоставлен векторный ресурс в xml, можем ли мы использовать один и тот же xml с разной шириной обводки без изменения базового объекта
2. Как установить обводку для <clip-path> ?