2016-03-04 9 views
14

Was ist der Zweck von Android Form Xml-Tag UseLevel-Attribut? Dies ist in Bezug auf eine Layer-Liste, sollte aber keine Rolle spielen. Vom docs fand ich die meanging des useLevel tag:Android-VerwendungszweckLevel in Shape-Tag

Gibt an, ob das Niveau des ziehbar die Art und Weise beeinflusst, ist die Steigung gezogen.

Also, wenn ich die folgenden xml habe Snippet:

<?xml version="1.0" encoding="utf-8"?> 
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="ring" 
    android:innerRadius="15dp" 
    android:thickness="10dp" 
    android:useLevel="false"> 

    <solid android:color="#ababf2" /> 

    <size 
     android:height="50dp" 
     android:width="50dp" /> 
</shape> 

dann mit der useLevel = true, der Ring ist deaktiviert. Es muss falsch sein, damit der Ring angezeigt wird. Aber was ist der Zweck dieses Attributs? Die Dokumente sind nicht klar.

+0

'Die Dokumente sind nicht klar '- so ist das noch nie zuvor bei Android passiert, oder? :) –

+0

[Dieser Teil der Dokumentation] (http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape) hat 'android: useLevel' auf dem' 'Element, mit a Beschreibung von "true, wenn dies als LevelListDrawable verwendet wird." 'LevelListDrawable' hat definitiv die Idee eines Levels. Davon abgesehen verstehe ich die Beziehung hier nicht. – CommonsWare

Antwort

1

Es ist für ProgressBars. Beispiel: this gist verwendet eine Ringform als Fortschrittszeichen.

res/ziehbar/github_232_circular.xml:

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:innerRadiusRatio="2.3" 
     android:shape="ring" 
     android:thickness="3.8sp" 
     android:useLevel="true"> 
    <solid android:color="#ff0000" /> 
</shape> 

In Ihrem Layout:

<ProgressBar 
    android:id="@+id/progress" 
    style="?android:attr/progressBarStyleHorizontal" 
    android:layout_width="64dp" 
    android:layout_height="64dp" 
    android:layout_gravity="top|end" 
    android:max="100" 
    android:progress="0" 
    android:progressDrawable="@drawable/github_232_circular" 
/> 

Grundsätzlich useLevel macht es so kann die ziehbar teilweise gezogen werden. Zum Beispiel gibt es eine Methode ImageView.setImageLevel(), mit der Sie eine "Ebene", z. 25% Fortschritt, so dass der ringziehbare Ring als Viertelkreis gezeichnet wäre. Und ProgressBar.setProgress() macht dasselbe, indem es die "Ebene" des Zeichensatzes aktualisiert, den Sie in der ProgressBar gesetzt haben.

+0

also Sie sagen, dass die UseLevel den Fortschrittsbalken zirkulär macht? Ich folge dir immer noch nicht, da die Form, die du zur Verfügung gestellt hast, ein Ring ist. – j2emanue

+0

'useLevel' macht es so, dass das Zeichen teilweise gezeichnet werden kann. Zum Beispiel gibt es eine Methode 'ImageView.setImageLevel()', mit der Sie eine "Ebene", z. 25% Fortschritt, so dass der ringziehbare Ring als Viertelkreis gezeichnet wäre. Und ProgressBar legt die Zeichenebene fest, wenn Sie 'ProgressBar.setProgress()' verwenden. Ich werde meine Antwort mit diesem zusätzlichen Detail aktualisieren. – TalkLittle