2014-11-08 15 views
54

ich ein Material Design Kreisfortschrittsbalken, wie die in Posteingang von Google Mail Android App machen wollen implementieren. Wie erreiche ich das (in Pre-Lollipop-Geräten)?Wie ein Material Design Kreisfortschrittsbalken in android

Am einen ähnlichen Effekt wie dies zu erreichen versuchen. Inbox by Gmail material design circular progress bar

+1

https://github.com/passsy/android-HoloCircularProgressBar –

+1

für u Hilfe vollständigen Link https://github.com/Sefford/CircularProgressDrawable –

+1

Sicher gibt es Möglichkeiten, solche Dinge mit den Android-Bibliotheken zu tun? Ich meine, sie haben Beispiele in ihrer Designspezifikation: http://www.google.com/design/spec/components/progress-activity.html#progress-activity-types-of-indicators – Zapnologica

Antwort

8

Neben cozeJ4 der Antwort, hier updated version of that gist

Vorlage eine Einfuhren fehlte und einige Fehler enthalten. Dieser ist gebrauchsfertig.

+0

würden Sie erklären, wie können wir das verwenden? –

+0

kopieren Sie diese Klassen, ändern Sie die Pakete in Ihr Projekt-Paket und verwenden Sie MaterialProgressBar als eine Ansicht in Ihrem Layout, das ist alles – Dmide

+0

aber ich wollte dies zeigen, wenn eine asynchrone Aufgabe endete pro.bar aiso muss beendet werden. –

24

Nizza Implementierung für Materialdesign Kreisfortschrittsbalken (von rahatarmanahmed/CircularProgressView),

<com.github.rahatarmanahmed.cpv.CircularProgressView 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/progress_view" 
    android:layout_width="40dp" 
    android:layout_height="40dp" 
    app:cpv_indeterminate="true"/> 

enter image description here

+0

Hallo Fahim, was meinst du mit Native progressBar? Ist das von der Android Plattform? Ich möchte die gleiche Art von Dialog und besser implementieren, wenn es von Android selbst oder von jeder Support-Bibliothek verfügbar ist. – cgr

+0

@cgr Native ProgressBar ist eine mit Android SDK implementierte Fortschrittsleiste. Wenn Sie diese App auf zwei Geräten mit unterschiedlichen Android-Varianten (z. B. Jelly Beans und Lollipop) ausführen, sehen Sie eine andere Fortschrittsanzeige. Versuch es selber. –

+0

Super einfach, danke. Was ist der beste Weg, eine undurchsichtige Hintergrundfarbe hinzuzufügen? Wie wenn ich einen Gmail-Indikator mit schwarzem Lichtbogenkreis auf einem größeren, weißen Hintergrundkreis machen möchte? –

6

Die Plattform verwendet einen Vektor ziehbar, so dass Sie es nicht wie in älteren Versionen wiederverwenden können.
Allerdings enthält die Unterstützung lib v4 eine Rückportierung dieses ziehbar: http://androidxref.com/5.1.0_r1/xref/frameworks/support/v4/java/android/support/v4/widget/MaterialProgressDrawable.java Es hat eine @hide Anmerkung (es hier für die SwipeRefreshLayout ist), aber nichts hindert Sie daran, Kopieren dieser Klasse in Ihrem Code-Basis.

+0

gut, jetzt, da wir VectorDrawableCompat haben, können Sie einfach die gleichen Zeichen wiederverwenden – Teovald

26
<ProgressBar 
android:id="@+id/loading_spinner" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:indeterminateTintMode="src_atop" 
android:indeterminateTint="@color/your_customized_color" 
android:layout_gravity="center" /> 

Der Effekt sieht wie folgt aus:

img

+9

Dies funktioniert nicht auf Pre-Lollipop-Geräten. Pre Lollipop Geräte verwenden eine andere spinnbare Drawable – cozeJ4

+0

Arbeit für 5.0+ danke Mann :) –

19

ich die drei Material Design Drawables auf Android 4.0, Fortschritt zurückportiert haben, die als Drop-in-Ersatz für regelmäßige ProgressBar verwendet werden kann, mit genau der gleichen Erscheinung.

Diese Zeichenelemente haben auch die Tönungs-APIs (und die RTL-Unterstützung) rückportiert und verwenden ?colorControlActivated als Standardtönung. A MaterialProgressBar Widget, das ProgressBar erstreckt sich auch der Einfachheit halber eingeführt worden.

DreaminginCodeZH/MaterialProgressBar

Dieses Projekt wird auch von afollestad/material-dialogs für Fortschrittsdialog angenommen.

auf Android 4.4.4:

Android 4.4.4

auf Android 5.1.1:

Android 5.1.1

+1

Vielen Dank für Ihre Bemühungen! Große Bibliothek! Lass es laufen! –

+0

hmmm, für einen Fortschrittsbalken, der eine extra Bibliothek enthält .... – Choletski

+0

Sehr elegante Lösung, meiner Meinung nach die beste –

2

nach einem Weg suchen, um diese mit einfachen xml zu tun, konnte aber nicht finden Sie irgendwelche hilfreiche Antworten, so kam mit diesem.

Dies funktioniert auf Pre-Lutscher Versionen auch, und ist ziemlich nah an dem Material Design Fortschrittsbalken.Sie müssen nur diese drawable als indeterminate drawable in der ProgressBar Layout verwenden.

<?xml version="1.0" encoding="utf-8"?><!--<layer-list>--> 
<rotate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromDegrees="0" 
    android:toDegrees="360"> 
    <layer-list> 
     <item> 
      <rotate xmlns:android="http://schemas.android.com/apk/res/android" 
       android:fromDegrees="-90" 
       android:toDegrees="-90"> 
       <shape 
        android:innerRadiusRatio="2.5" 
        android:shape="ring" 
        android:thickness="2dp" 
        android:useLevel="true"><!-- this line fixes the issue for lollipop api 21 --> 

        <gradient 
         android:angle="0" 
         android:endColor="#007DD6" 
         android:startColor="#007DD6" 
         android:type="sweep" 
         android:useLevel="false" /> 
       </shape> 
      </rotate> 
     </item> 
     <item> 
      <rotate xmlns:android="http://schemas.android.com/apk/res/android" 
       android:fromDegrees="0" 
       android:toDegrees="270"> 
       <shape 
        android:innerRadiusRatio="2.6" 
        android:shape="ring" 
        android:thickness="4dp" 
        android:useLevel="true"><!-- this line fixes the issue for lollipop api 21 --> 
        <gradient 
         android:angle="0" 
         android:centerColor="#FFF" 
         android:endColor="#FFF" 
         android:startColor="#FFF" 
         android:useLevel="false" /> 
       </shape> 
      </rotate> 
     </item> 
    </layer-list> 
</rotate> 

die oben ziehbar in ProgressBar wie folgt festgelegt:

android:indeterminatedrawable="@drawable/above_drawable" 
Verwandte Themen