6
votes

Changer le comportement indéterminé de progression.horizontale

J'essaie d'obtenir une barre de progression indéterminée horizontale, qui va inverser son animation à la fin. Pour clarifier, je veux que la barre de progression anime de 0 à 100, puis revenait ensuite de 100 à 0. Voici une vidéo de l'animation standard , que je veux inverser à la fin.

Selon Documentation de la barre de progression Cela devrait être possible avec XML, mais je ne peux pas y parvenir. Vous pouvez soit régler répéter forte> (standard?) Ou CYCLE STRUT> (c'est ce que je veux) p>

Voici ma mise en œuvre: P>

<ProgressBar
    android:id="@+id/progressBar"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="fill_parent"
    android:layout_height="8dip"
    android:indeterminate="true"
    android:indeterminateOnly="true"      //tried "false" too
    android:indeterminateBehavior="cycle" // type "reverse" is the one from linked video?
    android:max="100" />


4 commentaires

Quelles valeurs héritées de style = "? Android: ATTR / ProgressBarStyleHorizontal" ?


@Timcastelijns: En fait, je ne sais pas. C'est le parent Android standard. Je n'ai aucune idée, comment jetez un coup d'œil à ces valeurs: - /


Avez-vous regardé cela: Stackoverflow.com/a/6450417/1185737


@Kunalk Oui, a trouvé cela, mais c'est un autre sujet. Je suis simple à la recherche d'un exemple de travail où Android: indétermination de ou android: indéterminébehavior vraiment travaillant dans XML selon la documentation et pour la prochaine fois que je suis confronté à ces problèmes.


5 Réponses :


1
votes

Vous pouvez ajouter un événement où, en fonction des facteurs connus de manière programmée: xxx pré>

ou p> xxx pré>

Considérant quel style il est dépend complètement de votre analyse des données présentées. p>

Si vous savez qu'il va toujours être indéterminé et que vous avez un style de comportement toujours attendu, ajoutez ces propriétés XML: P>

android:indeterminate="true"
android:indeterminateDrawable="@drawable/progress_indeterminate_horizontal"
android:indeterminateOnly="false"


0 commentaires

2
votes

Je n'ai pas pu trouver comment changer l'animateur dans le Code> ProgressBar code>, je vous suggère donc d'aller avec votre propre digue.

Dessinez la progression comme rectangle h1>

Dans un exemple trivial, faisons ressembler à un rectangle: p>

res / drawable / vector_drawable_phorizontal.xml code> (nom inspiré par noyau / res / res / drables / vector_drawable_phorizontal.xml ) P>

<ProgressBar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="8dip"
    android:indeterminate="true"
    android:indeterminateDrawable="@drawable/custom_progress" />


1 commentaires

Donc, fondamentalement, utilisez une animation personnalisée au lieu de Android: indéterminébehavior = "cycle" et android: indéterminationduration = "10000" ? Je me demandais si ces valeurs peuvent être écrasées par les paramètres ou le style de l'appareil, de sorte que c'est la réaction pourquoi je ne peux pas les faire travailler?



0
votes

Une autre approche que vous pouvez suivre est d'utiliser un style déterminé et de définir des valeurs de 0 à 100 et de 100 à 0 retour.:

   setProgress(100);
   // sleep animation duration
   setProgress(0);
   // sleep animation duration
   // repeat

p, pense que cette solution est moins élégante que Avoir une personnalisation inderminedrawble , car elle nécessite de disposer de ces fausses mises à jour de progression. P> P>


0 commentaires

0
votes

Ajoutez ceci à votre mise en page,

       <ProgressBar
        android:id="@+id/pbProcessing"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/frame_getgas"
        android:indeterminateOnly="true"/>


0 commentaires

2
votes
<layer-list>
<item android:id="@android:id/background">
    <shape>
        <corners android:radius="2dip" />
        <gradient android:startColor="#43ffffff" android:centerColor="#43ffffff" android:centerY="0.75" android:endColor="#43ffffff" android:angle="270" />
    </shape>
</item>
<item android:id="@android:id/progress">
    <clip>
        <shape>
            <corners android:radius="2dip" />
            <gradient android:startColor="#fff" android:endColor="#fff" android:angle="270" />
        </shape>
    </clip>
</item>
uses this drawableLook at this picture

0 commentaires