Я использую круговой индикатор на Android. Я хочу изменить цвет этого. я использую
"?android:attr/progressBarStyleLargeInverse"
стиль. Так как поменять цвет индикатора выполнения.
Как настроить стиль? Кроме того, каково определение стиля?
Я использую круговой индикатор на Android. Я хочу изменить цвет этого. я использую
"?android:attr/progressBarStyleLargeInverse"
стиль. Так как поменять цвет индикатора выполнения.
Как настроить стиль? Кроме того, каково определение стиля?
В папке res/drawable поместите это:
progress.xml
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:pivotX="50%"
android:pivotY="50%"
android:fromDegrees="0"
android:toDegrees="360">
<shape
android:shape="ring"
android:innerRadiusRatio="3"
android:thicknessRatio="8"
android:useLevel="false">
<size
android:width="76dip"
android:height="76dip" />
<gradient
android:type="sweep"
android:useLevel="false"
android:startColor="#447a29"
android:endColor="#00ffffff"
android:angle="0"/>
</shape>
</rotate>
Установите startColor
и endColor
согласно вашему выбору.
Теперь установите этот файл progress.xml
в фоновом режиме ProgressBar
.
<ProgressBar
android:id="@+id/ProgressBar01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminateDrawable="@drawable/progress"
/>
1. Сначала создайте xml файл в папке с возможностью переноса в ресурсе
с именем "progress.xml"
<?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:height="76dip"
android:width="76dip" />
<gradient
android:angle="0"
android:endColor="color/pink"
android:startColor="@android:color/transparent"
android:type="sweep"
android:useLevel="false" />
</shape>
</rotate>
2. Затем создайте панель выполнения, используя следующий фрагмент
<ProgressBar
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/relativeLayout1"
android:layout_centerHorizontal="true"
android:layout_marginBottom="20dp"
android:indeterminate="true"
android:indeterminateDrawable="@drawable/progress" />
Для API 21 и выше. Просто установите свойство indeterminateTint. Как:
android:indeterminateTint="@android:color/holo_orange_dark"
Для поддержки устройств pre-API 21:
mProgressSpin.getIndeterminateDrawable()
.setColorFilter(ContextCompat.getColor(this, R.color.colorPrimary), PorterDuff.Mode.SRC_IN );
Вы можете изменить цвет программно, используя этот код:
ProgressBar v = (ProgressBar) findViewById(R.id.progress);
v.getIndeterminateDrawable().setColorFilter(0xFFcc0000,
android.graphics.PorterDuff.Mode.MULTIPLY);
Если вы хотите изменить цвет прогрессивной прогрессии ProgressDialog, вы можете использовать это:
mDilog.setOnShowListener(new OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
ProgressBar v = (ProgressBar)mDilog.findViewById(android.R.id.progress);
v.getIndeterminateDrawable().setColorFilter(0xFFcc0000,
android.graphics.PorterDuff.Mode.MULTIPLY);
}
});
Чтобы добавить к ответу Dato, я считаю SRC_ATOP предпочтительным фильтром для умножения, поскольку он лучше поддерживает альфа-канал.
ProgressBar v = (ProgressBar) findViewById(R.id.progress);
v.getIndeterminateDrawable().setColorFilter(0xFFcc0000, android.graphics.PorterDuff.Mode.SRC_ATOP);
Android: indeterminateTint = "@цвет/прогрессбар"
Чтобы настроить круговой ProgressBar, нам нужно создать IndeterminateDrawable, чтобы показать пользовательский индикатор выполнения
<?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:duration="1">
<shape
android:innerRadiusRatio="3"
android:shape="ring"
android:thicknessRatio="8"
android:useLevel="false">
<size
android:height="48dip"
android:width="48dip" />
<gradient
android:centerColor="#f96047"
android:centerY="0.50"
android:endColor="#fb9c8d"
android:startColor="#f72d0c"
android:type="sweep"
android:useLevel="false" />
</shape>
</rotate>
Нам нужно включить drawable в ProgressBar, как показано ниже:
<ProgressBar
android:layout_width="wrap_content"
android:layout_centerInParent="true"
style="?android:attr/progressBarStyleLarge"
android:visibility="visible"
android:progressDrawable="@drawable/widget_progressbar"
android:indeterminateDrawable="@drawable/widget_progressbar"
android:layout_height="wrap_content" />
styles.xml
<style name="CircularProgress" parent="Theme.AppCompat.Light">
<item name="colorAccent">@color/yellow</item>
</style>
<ProgressBar
android:layout_width="@dimen/d_40"
android:layout_height="@dimen/d_40"
android:indeterminate="true"
style="@style/Widget.AppCompat.ProgressBar"
android:theme="@style/CircularProgress"/>
Это работает для меня.
<ProgressBar
android:id="@+id/ProgressBar01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminateTint="@color/black"/>
android:indeterminateTint="@color/yellow"
Это работа для меня, просто добавьте эту строку в ваш XML-код progressBar
для меня тема не работала с accentColor. Но он работал с colorControlActivated
<style name="Progressbar.White" parent="AppTheme">
<item name="colorControlActivated">@color/white</item>
</style>
<ProgressBar
android:layout_width="@dimen/d_40"
android:layout_height="@dimen/d_40"
android:indeterminate="true"
android:theme="@style/Progressbar.White"/>
Добавьте в свою тему действия пункт colorControlActivated, например:
<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="colorControlActivated">@color/rocket_black</item>
...
</style>
Примените этот стиль к своей деятельности в манифесте:
<activity
android:name=".packege.YourActivity"
android:theme="@style/AppTheme.NoActionBar"/>
Вы можете сделать это с помощью настраиваемого диалога довольно легко, повторно используя xml из других ответов:
<?xml version="1.0" encoding="utf-8"?>
<shape
android:innerRadiusRatio="3"
android:shape="ring"
android:thicknessRatio="8"
android:useLevel="false" >
<size
android:height="76dip"
android:width="76dip" />
<gradient
android:angle="0"
android:endColor="@color/oceanBlue"
android:startColor="@android:color/transparent"
android:type="sweep"
android:useLevel="false" />
</shape>
Просто сделайте следующее:
public static class ModifiedProgressDialog extends ProgressDialog {
public ModifiedProgressDialog(Context context) {
super(context);
}
@Override
public void show() {
super.show();
setIndeterminateDrawable(getContext().getResources().getDrawable(R.drawable.blue_progress));
}
}
Вы можете использовать стиль для изменения цвета прогресса, как показано ниже
<style name="AppTheme.anyName">
<item name="colorAccent">YOUR_COLOR</item>
</style>
и использовать его в ProgressBar, как показано ниже
<ProgressBar
style="?android:attr/progressBarStyle"
android:theme="@style/AppTheme.WhiteAccent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dimen_30"
/>
Надеюсь, поможет.
В дополнение к главному ответу Мухаммеда Рияса М:
Более быстрое вращение
android:toDegrees="1080"
Более тонкое кольцо
android:thicknessRatio="16"
Светло-белый
android:endColor="#80ffffff"
Для всех тех, кто интересуется, как увеличить скорость пользовательского прогресса
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0"
android:toDegrees="1080"><!--HERE YOU COULD INCREASE SPEED BY SETTING TODEGRESS(1080 is 3 loops instead of 1 in same amt of time)-->
<shape android:shape="ring" android:innerRadiusRatio="3"
android:thicknessRatio="8" android:useLevel="false">
<size android:width="76dip" android:height="76dip" />
<gradient android:type="sweep" android:useLevel="false"
android:startColor="#447a29"
android:endColor="#447a29"
android:angle="0"
/>
</shape>
проверить этот ответ:
для меня эти две строки должны были быть там, чтобы он работал и менял цвет:
android:indeterminateTint="@color/yourColor"
android:indeterminateTintMode="src_in"
PS: но это доступно только с Android 21
Вы можете изменить цвет прогрессивной панели, используя следующий код:
progressBar.getProgressDrawable().setColorFilter(
getResources().getColor(R.color.your_color), PorterDuff.Mode.SRC_IN);