2012-01-05 38 views
5

Tôi gặp sự cố. Tôi cần phải hợp nhất hai hình ảnh có kích thước khác nhau (drawables). Ý tưởng là có hình ảnh của một người nào đó (được tải động) có kích thước 100x100px và có nền trong suốt lớn hơn (ví dụ: 100x120). Trong 20 pixel cuối cùng, tôi có mũi tên được cho là trỏ đến vị trí của một người trên bản đồ. Sau đó, tôi nghĩ rằng tôi có thể làm một cái gì đó như thế này:Bản đồ: hợp nhất nhiều bản vẽ có kích thước khác nhau

Drawable[] layers = new Drawable[2]; 
layers[0] = res.getDrawable(R.drawable.background_img); 
layers[1] = res.getDrawable(R.drawable.icon); 
LayerDrawable layerDrawable = new LayerDrawable(layers); 

Nhưng điều này chỉ đơn giản là phủ lên một hình ảnh khác bỏ qua giới hạn của chúng.

Cảm ơn trước, Vaidas

- CẬP NHẬT: Cuối cùng giải quyết vấn đề. Hoạt động như một nét duyên dáng :)

private Drawable createPersonDrawable(Bitmap personImage) 
{ 
    Bitmap resultingBitmap = Bitmap.createBitmap(drawableWidth, 
      drawableHeight, Bitmap.Config.ARGB_8888); 
    Canvas comboCanvas = new Canvas(resultingBitmap); 

    comboCanvas.drawBitmap(personImage, 0, 0, null); 

    // Get the bottom part of the image from resources 
    Bitmap bottomPart = BitmapFactory.decodeResource(getResources(), 
      R.drawable.person_map_icon_bottom); 

    comboCanvas.drawBitmap(bottomPart, 0, drawablePersonImageHeight, null); 
    comboCanvas.save(); 

    return new BitmapDrawable(resultingBitmap); 
} 

tôi thấy mô tả ở đây: http://www.jondev.net/articles/Combining_2_Images_in_Android_using_Canvas

Trả lời

1

tôi không có các lệnh chính xác ở đây nhưng bạn nên làm:

  1. Tạo một Bitmap với tổng số kích thước bạn muốn.
  2. Tạo Canvas qua Bitmap đã tạo
  3. Vẽ hai hình ảnh trên Canvas.
  4. Thêm bitmap vào chế độ xem bạn đang sử dụng.
+0

Cảm ơn. Tôi sẽ thử và đăng kết quả. –

1

nếu bạn muốn thay đổi kích thước và vị trí drawable tại LayerDrawable, bạn có thể sử dụng setLayerSize để thay đổi kích thước drawable, và bạn có thể sử dụng setLayerInset để kiểm soát vị trí.

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