2013-08-07 61 views
13

Tôi muốn cá nhân hóa seekbar mặc định Android:Tuỳ chỉnh SeekBar drawable Android

enter image description here

Tôi đọc khoảng chín hình ảnh bản vá và tạo ra 6 hình ảnh png. Ba đầu tiên là dành cho các thanh tiến trình màu xám (progressDrawable), như hình dưới đây:

  1. Hình bên phải

    enter image description here

  2. Trung tâm hình ảnh

    enter image description here

  3. hình ảnh trái

    enter image description here

Kết quả sẽ là:

enter image description here

Những hình ảnh màu xanh đại diện cho sự tiến bộ và như sau:

  1. Hình bên phải

    enter image description here

  2. Hình ảnh trung tâm

    enter image description here

  3. hình ảnh trái

    enter image description here

Và ngón tay cái được như sau:

enter image description here

Câu hỏi của tôi là, làm cách nào tôi có thể sử dụng hình ảnh vá chín để tạo thanh tìm kiếm tùy chỉnh chính xác làm hình ảnh đầu tiên và làm cách nào để áp dụng điều này cho thanh tìm kiếm của mình?

+0

tôi đề nghị bạn kiểm tra drawables sử dụng bởi các khuôn khổ riêng của mình. Bạn có thể tìm thấy chúng trong thư mục sdk android của bạn: 'android-sdk-dir/platforms/platform-XX/data/res/drawable- * dpi'. Hãy tìm các hình ảnh chín vá có tên là scrubber_track * .9.png, scrubber_primary * .9.png, scrubber_secondary * .9.png, và scrubber_control * .9.png (* là ký tự đại diện) – Karakuri

+0

bạn có thể cung cấp cho tôi một ví dụ xin vui lòng – Dimitri

+0

bạn có thể kết hợp hình ảnh 1,2 và 3 thành một bản vá chín có thể vẽ được – pskink

Trả lời

16

Tôi nghĩ nó không phức tạp. Bạn không phải thực hiện 6 hình ảnh để đáp ứng nhu cầu của mình. Chỉ cần tạo 2 bản vá cho nền, tiến trình. Và thumb.png. Dưới đây là XML của bạn:

<SeekBar 
    android:id="@+id/my_seekbar" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:progressDrawable="@drawable/seekbar_progress" 
    android:thumb="@drawable/thumb"> 

trong seekbar_progress của bạn:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 

<item android:id="@android:id/background"> 
    <nine-patch android:src="@drawable/progressbar_bg" android:dither="true"/> 
</item> 
<item android:id="@android:id/progress"> 
    <clip xmlns:android="http://schemas.android.com/apk/res/android" 
     android:clipOrientation="horizontal" 
     android:gravity="left"> 
     <nine-patch android:src="@drawable/progressbar_status" android:dither="true"/> 
    </clip> 
</item> 
</layer-list> 

Đừng nhớ rằng thumb của bạn nên có không gian trống trên đầu khi tạo nên nó trông giống như bạn muốn. Hy vọng điều này sẽ hữu ích.

+0

cảm ơn bạn progressbar_status là gì? – Dimitri

+0

đây là 'tiến trình' - hình ảnh màu xanh da trời trong trường hợp của bạn – boburShox

+0

cảm ơn bạn tôi sẽ thử và hoàn nguyên trở lại. cũng nếu tôi đặt không gian với ngón tay cái nó sẽ tạo thêm không gian @top và cũng ở dưới cùng tôi đã thử này trước khi – Dimitri

1

1) Tới AndroidSDK -> công cụ và chạy draw9patch.bat

bạn sẽ thấy cửa sổ đen

2) kéo hình ảnh của bạn vào cửa sổ và bắt đầu 9 vá:

bắt đầu vá xung quanh ảnh của bạn

3) bây giờ chuyển đến trình đơn Tệp và nhấp vào Lưu bản vá ...

Mẹo cuối cùng: hình ảnh của bạn phải.Định dạng PNG và chỉ chứa Nội dung không gian trống xung quanh nó. ví dụ tôi đã lưu hình ảnh của bạn trong máy tính của tôi và thấy có rất nhiều không gian không sử dụng dưới phần màu xanh của hình ảnh của bạn.

Bây giờ Thoa lên seekbar bạn:

Chỉ cần làm theo các liên kết cũng

Create Custom Slide Bar

Tôi xin lỗi; tôi không có đủ tiếng để chèn ảnh

8

Bạn có thể sử dụng thanh tìm kiếm tùy chỉnh bằng mã Java ... và thêm danh sách lớp làm nội dung có thể kéo được ... đoạn mã này sẽ giúp bạn tôi hy vọng.

1.LayerList drawable

<layer-list 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:id="@android:id/background"> 
     <nine-patch 
      android:src="@drawable/your_nine_patch_image" 
      android:tileMode="repeat"> 
     </nine-patch> 
    </item> 
    <item 
     android:id="@android:id/progress"> 
     <layer-list 
      xmlns:android="http://schemas.android.com/apk/res/android" > 
      <item> 
       <clip > 
        <bitmap 
         xmlns:android="http://schemas.android.com/apk/res/android" 
         android:src="@drawable/clipimage_for_progress" 
         android:tileMode="repeat"/> 
       </clip> 
      </item> 
     </layer-list> 
    </item> 
</layer-list> 

Đây sẽ là lớp customSeekbar của bạn và bạn có thể sử dụng seekbar tùy chỉnh này trong ứng dụng của bạn

public class CustomSeekbar { 
    public CustomSeekbar(Context context) { 
     super(context); 
     setCustomUI(); 
    } 

    public CustomSeekbar(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     setCustomUI(); 
    } 

    public CustomSeekbar(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     setCustomUI(); 
    } 

    void setCustomUI() { 

     this.setProgressDrawable(getResources().getDrawable(
       R.drawable.yourBackground)); 
    } 
}