Autore Topic: Personalizzare la ProgressBar  (Letto 5679 volte)

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Personalizzare la ProgressBar
« il: 17 Marzo 2011, 11:24:07 CET »
+4
Sarò io che l'ho affrontata nel modo sbagliato, ma la prima volta che ho cercato di usare una ProgressBar non sono riuscito ad ottenere la classica barra orizzonale, ma solo quella circolare indefinita. Adesso ho molto più chiaro come personalizzarla.

Il layout XML
Codice (XML): [Seleziona]
<ProgressBar
  android:id="@+id/theprogressbar"
  style="@style/MyProgressBar"
  android:layout_width="0dip"
  android:layout_height="wrap_content"
  android:layout_weight="1"
  android:max="100"
  android:progress="50"
  android:secondaryProgress="80" />

Lo stile personalizzato presente in /values/styles.xml
Codice (XML): [Seleziona]
<style name="MyProgressBar" parent="android:Widget.ProgressBar.Horizontal">
   <item name="android:indeterminateOnly">false</item>
   <item name="android:progressDrawable">@drawable/horizbar</item>
   <item name="android:minHeight">20dip</item>
   <item name="android:maxHeight">20dip</item>
</style>

Il drawable /drawable/horizbar.xml per la barra
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="UTF-8"?>
<layer-list
  xmlns:android="http://schemas.android.com/apk/res/android">
   <item
     android:id="@android:id/background">
      <shape>
         <corners
           android:radius="2dip" />
         <gradient
           android:startColor="#ffffffff"
           android:centerColor="#ffdddddd"
           android:centerY="0.50"
           android:endColor="#ffffffff"
           android:angle="270" />
      </shape>
   </item>
   <item
     android:id="@android:id/secondaryProgress">
      <clip>
         <shape>
            <corners
              android:radius="2dip" />
            <gradient
              android:startColor="#33ffaa11"
              android:endColor="#33ffdd33"
              android:angle="90" />
         </shape>
      </clip>
   </item>
   <item
     android:id="@android:id/progress">
      <clip>
         <shape>
            <corners
              android:radius="2dip" />
            <gradient
              android:startColor="#ffffaa11"
              android:endColor="#ffffdd33"
              android:angle="90" />
         </shape>
      </clip>
   </item>
</layer-list>
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Personalizzare la ProgressBar
« Risposta #1 il: 17 Marzo 2011, 23:02:25 CET »
0
verde sarebbe ancora piu bella e ancora piu "gingerbread" gran snippet!
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline ciopper90

  • Utente junior
  • **
  • Post: 106
  • Respect: +4
    • Mostra profilo
Re:Personalizzare la ProgressBar
« Risposta #2 il: 20 Aprile 2011, 12:18:22 CEST »
0
e se uno volesse aggiungere anche la percentuale al centro della barra puo??

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Personalizzare la ProgressBar
« Risposta #3 il: 28 Aprile 2011, 10:28:45 CEST »
+1
e se uno volesse aggiungere anche la percentuale al centro della barra puo??

So che è una cosa assurda (almeno per me), ma la ProgressBar standard non supporta questa feature.

Per aggiungere del testo sulla ProgressBar occorre fare un subclass della classe ProgressBar in cui fai un Override del metodo OnDraw dove includi anche il "disegno" del testo.

Qua trovi un ottimo esempio: How to Add Text Over a Progress Bar on Android &laquo;  Aspirations of a Software Developer
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store