2011-01-28 25 views
12

Tôi có một bố trí với hai hình ảnh:hình ảnh Scale trong tương android để sàng lọc rộng

  • một mà nên strech với chiều rộng màn hình
  • một ở trên nó mà nên mở rộng với tỷ lệ tương tự đầu tiên là automaticaly quy mô (tương đối so với kích thước ảnh gốc)

cụ thể hơn: hai hình ảnh được lát cùng một hình ảnh, và do đó một số chi tiết bên trong chúng phải phù hợp.
Tôi có thể tạo điều này trong XML không?

Nếu tôi không thể làm điều đó thông qua XML, có lẽ tôi có thể cân bằng đồ họa. Trong trường hợp này, làm thế nào tôi nên prescale chúng?

+0

bạn đã giải quyết câu hỏi này chưa? btw không chắc chắn nếu bạn đã nhìn thấy nhưng tôi cập nhật câu trả lời của tôi cho vấn đề 'Canvas.onDraw' của bạn. – techiServices

+0

Không, không được giải quyết. Tôi đoán tôi sẽ làm điều đó theo chương trình –

Trả lời

6

Đây là một chút hack, nhưng nó sẽ cho phép bạn làm điều này trong xml.

Nếu bạn biết rằng, ví dụ, hình ảnh hàng đầu là X% kích thước của đáy một, sau đó bạn có thể sử dụng layout_weight LinearLayout để xác định vị trí và kích thước hình ảnh hàng đầu về tỷ lệ màn hình:

<LinearLayout android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <ImageView android:id="@+id/left_filler" android:layout_weight="20" 
     android:layout_width="wrap_content" android:layout_height="wrap_content"/> 
    <ImageView android:id="@+id/top_image" android:layout_weight="50" 
     android:layout_width="wrap_content" android:layout_height="wrap_content"/> 
    <ImageView android:id="@+id/right_filler" android:layout_weight="30" 
     android:layout_width="wrap_content" android:layout_height="wrap_content"/> 
</LinearLayout> 
... bottom image

Ở trên sẽ có kích thước top_image ở 50% màn hình với mức chênh lệch 20% từ bên trái. Miễn là top_image là 50% kích thước của bottom_image, điều này sẽ giữ quy mô tương tự.

Cách khác, cách "đúng" để thực hiện việc này có thể là ghi đè onDraw() trong chế độ xem tùy chỉnh và sử dụng các phương pháp vẽ canvas.

0

Bạn có thể sử dụng phương pháp lớp CanvasdrawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint) để vẽ bitmap được chỉ định bằng cách chia tỷ lệ/dịch tự động để điền vào hình chữ nhật đích. Điều này có thể được sử dụng cho cả bitmap với Rect khác nhau. Rect có thể được xây dựng bằng cách chia chiều rộng và chiều cao hiện tại của bố cục. Vì vậy, chương trình sẽ chia tỷ lệ hình ảnh theo các thiết bị có kích thước màn hình khác nhau.

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