2012-06-07 34 views
7

Tôi đang xây dựng một ứng dụng Android và tôi muốn tạo một thanh tiến trình rất giống với những gì được nhìn thấy ở dưới cùng của MIUI File ExplorerCách tốt nhất để tạo Thanh tiến trình được phân đoạn là gì?

MIUI File Explorer App

Không có giải pháp hoàn toàn rõ ràng như xa như tôi có thể nói. Cho đến nay những gì tôi có thể nghĩ đến là

  • Layering nhiều quán bar tiến bộ với nền trong suốt trên đầu trang của nhau
  • Mở rộng lớp thanh Progress để có nhiều giá trị và viết lại phương pháp onDraw

Tôi nghĩ rằng lựa chọn đầu tiên sẽ là quá chậm và không hiệu quả nhưng lựa chọn thứ hai có thể quá phức tạp nhưng chắc chắn là giải pháp tốt hơn.

Có cách nào tốt hơn để thực hiện việc này không?

Trả lời

6

bạn nên tạo chế độ xem tùy chỉnh cho nó. Ví dụ:

final Paint blue = new Paint(); 
blue.setColor(Color.BLUE); 

View progressBar = new View(getActivity()){ 

     protected void onDraw(android.graphics.Canvas canvas) { 

      canvas.drawRect(0,0,getWidth()*progressPecentFirst,getHeight(),blue); 
      blue.setColor(Color.RED); 
      canvas.drawRect(0,0,getWidth()*progressPecentSecond,getHeight(),blue); 
      //Repeat this 
     }; 
    }; 
parentLayout.addView(progressBar); 
1

Một tùy chọn sẽ không làm cho nó trở thành thanh tiến trình truyền thống. Trong một trong các ứng dụng cá nhân của tôi, tôi cần một màn hình tương tự như thanh tiến trình hình tròn có các phân đoạn có màu khác nhau.

Tôi có thể đề nghị bạn bắt đầu bằng cách vẽ hình chữ nhật có kích thước từ 0B đến 14.9GB trong màu cho nhạc, từ 939MB đến 14.9GB trong màu cho Video, từ 3,52GB đến 14,9GB trong màu cho ảnh và trên.

Sau đó, bạn có thể vẽ các đầu tròn ở màu nền dưới dạng mặt nạ.

Điều này sẽ khá nhanh vì bạn chỉ vẽ đồ họa nguyên thủy và bạn có thể mở rộng nó bao nhiêu tùy thích.

Hạn chế nhỏ duy nhất là bạn phải tự mình thực hiện nhiều logic, nhưng đó là một mức giá nhỏ phải trả theo ý kiến ​​của tôi.

-1

Kính gửi Vui lòng xem phần xây dựng trong ví dụ Bản trình diễn API của SKD 2.2 trong bản trình diễn api để xem -> thanh tiến trình -> gia tăng sau đó bạn thấy giải pháp của bạn.

+0

Thanh tiến trình chuẩn bị nghiêm giới hạn ở 2 đoạn. –

0

Đây là thanh tiến trình được phân đoạn dựa trên câu trả lời @Zelleriation. Thanh tiến trình.

SegmentedProgressBar progressBar = (SegmentedProgressBar) findViewById(R.id.segmentedProgressBar); 
    progressBar.setProgressColor(Color.BLACK); 
    progressBar.publishProgress(0.5f); 

    <com.muneikh.SegmentedProgressBar 
    android:id="@+id/segmentedProgressBar" 
    android:layout_width="match_parent" /> 

https://github.com/muneikh/SegmentedProgressBar

enter image description here

+0

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. - [Từ đánh giá] (/ đánh giá/bài đăng chất lượng thấp/11036312) –

+0

@JohnHascall Cảm ơn bạn đã đánh dấu nó. Tôi đã cập nhật câu trả lời để bao gồm các thông tin cần thiết. – muneikh

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