2016-03-04 13 views
14

Mục đích của thuộc tính useLevel của thẻ hình dạng android là gì? Điều này liên quan đến một danh sách lớp nhưng không quan trọng. Từ docs tôi tìm thấy meanging của thẻ useLevel:Mục đích sử dụng AndroidLựa trong thẻ hình dạng

Cho biết mức độ của drawable ảnh hưởng đến cách gradient được rút ra.

Vì vậy, nếu tôi có xml sau đoạn mã:

<?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> 

sau đó với useLevel = true, chiếc nhẫn bị vô hiệu hóa. Nó phải là sai cho chiếc nhẫn xuất hiện. Nhưng mục đích của thuộc tính này là gì? Các tài liệu không rõ ràng.

+0

'Tài liệu không rõ ràng' - như thế này chưa bao giờ xảy ra trước đây trên Android, phải không? :) –

+0

[Phần này của tài liệu] (http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape) có 'android: useLevel' trên phần tử' ', với mô tả "true nếu điều này được sử dụng như một LevelListDrawable." 'LevelListDrawable' chắc chắn có khái niệm về một cấp độ. Điều đó đang được nói, tôi không hiểu mối quan hệ ở đây. – CommonsWare

Trả lời

1

Dành cho ProgressBars. Ví dụ: this gist sử dụng hình dạng vòng làm điểm có thể vẽ được.

res/drawable/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> 

Trong bố cục của bạn:

<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" 
/> 

Về cơ bản, useLevel làm cho nó nên drawable thể được rút ra một phần. Ví dụ: có một phương thức ImageView.setImageLevel() cho phép bạn đặt "cấp", ví dụ: Tiến độ 25%, do đó, vòng có thể vẽ được sẽ được vẽ theo hình tròn. Và ProgressBar.setProgress() thực hiện điều tương tự, cập nhật "mức" của đối tượng drawable mà bạn đã đặt trên ProgressBar.

+0

để bạn nói rằng useLevel làm cho thanh tròn tròn? Tôi vẫn không theo dõi bạn như hình dạng bạn cung cấp là làm hỏng một chiếc nhẫn. – j2emanue

+0

'useLevel' làm cho nó có thể vẽ được một phần. Ví dụ: có phương thức 'ImageView.setImageLevel()' cho phép bạn đặt "cấp", ví dụ: Tiến độ 25%, do đó, vòng có thể vẽ được sẽ được vẽ theo hình tròn. Và ProgressBar đặt "mức" có thể vẽ được bất cứ khi nào bạn sử dụng 'ProgressBar.setProgress()'. Tôi sẽ cập nhật câu trả lời của tôi với chi tiết bổ sung này. – TalkLittle

Các vấn đề liên quan