Наткнулся на довольно необычную библиотеку, объединяющую кнопку и прогрессбар в одном View. На выбор нам дается три вида кнопки:
- ActionProcessButton
- GenerateProcessButton
- SubmitProcessButton
Все View-компоненты описанные выше наследуются от класса ProcessButton.
ActionProcessButton
main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<com.dd.processbutton.iml.ActionProcessButton
android:id="@+id/btnSignInAPB"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_marginBottom="16dp"
android:text="Войти"
android:textColor="#fffffe"
android:textSize="18sp"
custom:pb_colorComplete="@color/green_complete"
custom:pb_colorNormal="@color/blue_normal"
custom:pb_colorPressed="@color/blue_pressed"
custom:pb_colorProgress="@color/purple_progress"
custom:pb_textComplete="Авторизован"
custom:pb_textProgress="Авторизуемся…">
</LinearLayout>
Разберем атрибуты с префиксом custom:
pb_colorNormal — цвет кнопки в обычном состоянии
pb_colorPressed — цвет кнопки в обычно состоянии
pb_colorProgress — цвет прогрессбара
pb_textProgress — текст, отображающийся при загрузке
pb_colorComplete — текст, отображающийся после завершения загрузки
MainActivity.java:
ActionProcessButton btnSignIn = (ActionProcessButton) findViewById(R.id.btnSignInAPB); btnSignIn.setMode(ActionProcessButton.Mode.PROGRESS);
В методе setMode мы указываем тип загрузки. Всего доступно два типа: PROGRESS и ENDLESS. По умолчанию установлен ENDLESS.
GenerateProcessButton
main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<com.dd.processbutton.iml.GenerateProcessButton
android:id="@+id/btnUpload"
android:layout_width="match_parent"
android:layout_height="48dp"
android:text="Загрузить"
android:textColor="@android:color/white"
android:textSize="18sp"
custom:pb_textComplete="Загружено"
custom:pb_textProgress="Загрузка…">
</LinearLayout>
MainActivity.java:
GenerateProcessButton btnUpload = (GenerateProcessButton) findViewById(R.id.btnUpload);
SubmitProcessButton
main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<com.dd.processbutton.iml.SubmitProcessButton
android:id="@+id/btnSend"
android:layout_width="match_parent"
android:layout_height="48dp"
android:minWidth="100dp"
android:text="Отправить"
android:textColor="@android:color/white"
android:textSize="18sp"
custom:pb_textComplete="Готово"
custom:pb_textProgress="Загрузка…">
</LinearLayout>
MainActivity.java:
SubmitProcessButton btnSend = (SubmitProcessButton) findViewById(R.id.btnSend);
Библиотека на GitHub: ProcessButton.
Исходники примера: ProcessButton.
