2012-07-04 36 views
8

Tôi có nhiều drawables và muốn kết hợp nó với một drawable (ví dụ, 4 hình vuông để tạo ra một hình vuông lớn, như logo Windows :)). Tôi có thể làm cái này như thế nào?Kết hợp nhiều drawables

+1

Dưới đây là Hướng dẫn của nhà phát triển về [Tài nguyên có thể vẽ] (http://developer.android.com/guide/topics/resources/drawable-resource.html). Nó thảo luận về điều này là rất chi tiết với hình ảnh và mã runnable. – Sam

Trả lời

14

Bạn có thể làm điều đó bằng cách sử dụng TableLayout hoặc một số LinearLayout s. Tuy nhiên, nếu những gì bạn muốn là tạo một hình ảnh duy nhất cho chúng tôi trong một số ImageView, bạn sẽ phải tạo một thủ công Bitmap; nó không phải là khó:

Bitmap square1 = BitmapFactory.decodeResource(getResources(), R.drawable.square1); 
Bitmap square2 = BitmapFactory.decodeResource(getResources(), R.drawable.square2); 
Bitmap square3 = BitmapFactory.decodeResource(getResources(), R.drawable.square3); 
Bitmap square4 = BitmapFactory.decodeResource(getResources(), R.drawable.square4); 

Bitmap big = Bitmap.createBitmap(square1.getWidth() * 2, square1.getHeight() * 2, Bitmap.Config.ARGB_8888); 
Canvas canvas = new Canvas(big); 
canvas.drawBitmap(square1, 0, 0, null); 
canvas.drawBitmap(square2, square1.getWidth(), 0, null); 
canvas.drawBitmap(square3, 0, square1.getHeight(), null); 
canvas.drawBitmap(square4, square1.getWidth(), square1.getHeight(), null); 

Tôi chưa biên dịch mã ở trên; Tôi chỉ cho bạn thấy làm thế nào nó có thể được thực hiện. Tôi cũng giả định rằng bạn có hình vuông có thể vẽ được với cùng kích thước. Lưu ý rằng bitmap có tên là big có thể được sử dụng ở bất cứ đâu bạn muốn (ví dụ: ImageView.setImageBitmap()).

+0

Cảm ơn bạn, và làm cách nào để tạo hình vẽ với canvas này? – arts777

+0

Bạn có ý nghĩa gì bởi drawable? Một thể hiện lớp 'Drawable'? Nếu có, bạn có thể sử dụng 'BitmapDrawable'. Hãy cố gắng cụ thể hơn. – Cristian

+0

Tôi xin lỗi, tất nhiên là lớp học Drawable. 4 đầu vào Trường hợp có thể vẽ và một đầu ra. – arts777

5

Bạn có thể sử dụng LayerDrawable để thực hiện chính xác việc này.

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