Nano Hash - криптовалюты, майнинг, программирование

Как создать собственный ProgressBar с чертежами без программирования?

Это мой кастомный бело-прозрачный руль ProgressBar

progressbar_circle.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="ring"
    android:innerRadiusRatio="2.5"
    android:thickness="4dp"
    android:useLevel="false">
    <gradient
        android:type="sweep"
        android:startColor="@android:color/white"
        android:centerColor="@android:color/white"
        android:endColor="@android:color/transparent"
    />
</shape>


В окне предварительного просмотра Android Studio этот элемент отображается правильно.
Но после отладочного тестирования как в эмуляторе (Android 9), так и в устройстве (Android 6) ProgressBar отображался как колесо @color/colorAccent Progressbar.

Я пытался изменить android:shape, android:innerRadiusRatio, android:thickness, даже изменить градиент на сплошной цвет. Ничего не изменилось.


Вот мой файл progress_task_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

<ImageView
    android:id="@+id/correct_icon"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:contentDescription="@string/correct_icon"
    android:padding="@dimen/padding_large"
    android:visibility="gone" />

<ProgressBar
    android:id="@+id/progress_bar"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginBottom="8dp"
    android:padding="@dimen/padding_large"
    android:progressDrawable="@drawable/progressbar_circle"
    android:visibility="gone" />

</RelativeLayout>


Как выполнить пользовательский ProgressBar для Android в XML без динамического программирования в Java?


  • Если ваш минимальный API › = 21, вы можете использовать android:indeterminateTint="@android:color/white" 16.02.2019
  • @NongthonbamTonthoi Я установил min api = 14 android:indeterminateTint="@android:color/white" работал для сплошного цвета, как насчет градиента. (Я разберусь со старой версией API позже.) 16.02.2019

Ответы:


1

Создайте файл progress.xml в папке drawable:

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="360">

    <shape
        android:innerRadiusRatio="3"
        android:shape="ring"
        android:thicknessRatio="8"
        android:useLevel="false">

        <size
            android:width="76dip"
            android:height="76dip" />

        <gradient
            android:angle="0"
            android:endColor="#1672B6"
            android:startColor="@android:color/transparent"
            android:type="sweep"
            android:useLevel="false" />
    </shape>
</rotate>

Затем используйте его следующим образом:

<ProgressBar
                android:id="@+id/pbarLoading"
                android:layout_width="36dp"
                android:layout_height="36dp"
                android:indeterminateDrawable="@drawable/progress"/>
16.02.2019
  • android:indeterminateDrawable="@drawable/progress" — волшебное решение для этого случая. Я могу изменить @drawable/progress на свой @drawable/progressbar_circle. Кроме того, тег ‹rotate› xml делает мой @drawable/progressbar_circle анимированным. Все проблема решена. Спасибо большое. Однако у меня меньше 15 репутации, так как это мой первый вопрос здесь. Я пока не могу голосовать. :) 16.02.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..