Je suis en train d'étudier le nouveau design des matériaux et j'ai quelques problèmes.
J'aimerais savoir si certains d'entre vous savent comment faire une barre de progression avec le bouton d'action flottante comme ceci https://dribbble.com/shots/1644982-Animated-circle-loader-FAB-with-integration- gif
Existe-t-il une api sur Android L pour cela?
Merci
J'ai trouvé une lib qui fait ça, ça semble assez simple
Cela a fonctionné pour moi, j'ai utilisé une mise en page relative et les ai placés au centre de la mise en page relative.
...
<RelativeLayout
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="bottom|right"
Android:layout_margin="16dp"
app:layout_anchor="@id/my_recycler_view"
app:layout_anchorGravity="bottom|right|end"
>
<ProgressBar
Android:id="@+id/fabProgress"
style="?android:attr/progressBarStyleLarge"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerHorizontal="true"
Android:layout_centerInParent="true"
Android:indeterminateTint="@color/colorPrimary"
/>
<Android.support.design.widget.FloatingActionButton
Android:id="@+id/newReportButton"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="@Android:drawable/ic_dialog_email"
app:fabSize="normal"
Android:layout_centerInParent="true"
/>
</RelativeLayout>
...
Vous pouvez l'utiliser:https://github.com/DmitryMalkovich/circular-with-floating-action-button Pour intégrer la progression circulaire au bouton d'action flottante . La solution n'est pas une fabrique sur mesure, c'est seulement un simple conteneur pour votre notre fab, vous pouvez donc styler comme avant!
<com.dmitrymalkovich.Android.ProgressFloatingActionButton
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_margin="@dimen/fab_margin"
Android:clickable="true">
<Android.support.design.widget.FloatingActionButton
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="@drawable/ic_backup_black_24dp" />
<ProgressBar
style="@style/Widget.AppCompat.ProgressBar"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content" />
</com.dmitrymalkovich.Android.ProgressFloatingActionButton>
Je suggérerais Floating Action Button de Jorge Costillo . Il vaut mieux que celui de Kurt parmi les réponses acceptées que j'ai également essayées.
Celui de Kurt ne prend pas en charge les dessins vectoriels (attribut srcCompat), les problèmes de dimensionnement des images, pas de support fab-mini, les incohérences des directives relatives aux icônes des matériaux.
Le FAB de Costillo est également plus comme une enveloppe autour du FAB standard Android.
J'ai résolu le problème en ajoutant une barre de progression à la présentation, puis en utilisant un comportement personnalisé pour la barre de progression .
<?xml version="1.0" encoding="utf-8"?>
<Android.support.design.widget.CoordinatorLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools" Android:layout_width="match_parent"
Android:layout_height="match_parent"
tools:context="es.mediaserver.newinterfacedlna.MainActivity">
<Android.support.design.widget.AppBarLayout Android:layout_width="match_parent"
Android:layout_height="wrap_content" Android:theme="@style/AppTheme.AppBarOverlay">
<Android.support.v7.widget.Toolbar Android:id="@+id/toolbar"
Android:layout_width="match_parent" Android:layout_height="?attr/actionBarSize"
Android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" />
</Android.support.design.widget.AppBarLayout>
<include layout="@layout/content_main"
Android:id="@+id/include" />
<Android.support.design.widget.FloatingActionButton Android:id="@+id/fab"
Android:layout_width="56dp"
Android:layout_height="56dp"
Android:layout_margin="28dp"
Android:layout_gravity="bottom|center"
app:srcCompat="@Android:drawable/ic_media_play" />
<ProgressBar
Android:id="@+id/progressBar2"
style="?android:attr/progressBarStyle"
Android:layout_width="80dp"
Android:layout_height="80dp"
Android:layout_gravity="bottom|center"
Android:indeterminate="true"
Android:layout_margin="@dimen/fab_margin"
/>
</Android.support.design.widget.CoordinatorLayout>
Composant Comportement personnalisé
public static class SnackBarBehavior extends CoordinatorLayout.Behavior<View> {
private static final boolean SNACKBAR_BEHAVIOR_ENABLED;
public SnackBarBehavior() {
super();
}
public SnackBarBehavior(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean layoutDependsOn(CoordinatorLayout parent, View child, View dependency) {
return SNACKBAR_BEHAVIOR_ENABLED && dependency instanceof Snackbar.SnackbarLayout;
}
@Override
public boolean onDependentViewChanged(CoordinatorLayout parent, View child, View dependency) {
float translationY = Math.min(0, dependency.getTranslationY() - dependency.getHeight());
child.setTranslationY(translationY);
return true;
}
@Override
public void onDependentViewRemoved(CoordinatorLayout parent, View child, View dependency) {
child.setTranslationY(0);
}
static {
SNACKBAR_BEHAVIOR_ENABLED = Build.VERSION.SDK_INT >= 11;
}
}
Et enfin dans onCreate (ou dans la mise en page avec app: layout_behavior = "xxx.xxx.SnackBarBehavior")
ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar2);
SnackBarBehavior snackBarBehavior = new SnackBarBehavior();
CoordinatorLayout.LayoutParams coordinatorParams = (CoordinatorLayout.LayoutParams) progressBar.getLayoutParams();
coordinatorParams.setBehavior(snackBarBehavior);
Remarque: j'ai basé mon composant comportemental sur celui posté ici Comment déplacer une vue au-dessus de Snackbar exactement comme FloatingButton
Vous pouvez utiliser la bibliothèque suivante pour créer le bouton de style de matériau> https://github.com/makovkastar/FloatingActionButton (ou celui-ci> https://github.com/futuresimple/Android-floating-action -bouton )
Pour le spinner, vous pouvez aussi utiliser cette bibliothèque> https://github.com/oguzbilgener/CircularFloatingActionMenu
Vous pouvez ensuite combiner ces deux composants en les ajoutant à un RelativeLayout (l'un au-dessus de l'autre) et également ajouter des animations, par exemple un bouton Développer avec zoom, élargir la progression derrière avec zoom. Tout ce que vous devez faire ensuite est d’accrocher le code à barres de progression pour le contracter une fois le chargement terminé, c’est-à-dire le réduire sous le bouton.
Pour une animation rétro-compatible, jetez un coup d'œil à 9 anciens Androids ici> http://nineoldandroids.com/
J'espère que cela t'aides.