2012-04-21 37 views
5

Tôi có một hình nền đó là chia thành ba hình ảnh riêng biệt:Android App Bối cảnh: sử dụng nhiều hình ảnh

backgroundTop.png 
backgroundMiddle.png 
backgroundBottom.png 

Làm thế nào tôi sẽ đi về việc thực hiện một nền tảng trong ứng dụng Android, trong đó hình ảnh hàng đầu được hiển thị ở đầu của ứng dụng, và hình ảnh dưới cùng ở phía dưới, và hình ảnh giữa được lát gạch ở giữa? Điều này tất nhiên sẽ phụ thuộc vào lượng nội dung được tải trên màn hình - giống như trong các trang web.

Nói cách khác, tổng số lần ảnh giữa được lát sẽ phụ thuộc vào nội dung trên màn hình.

Tôi đã nhìn thấy một giải pháp để thực hiện một nền ốp lát ra khỏi một hình ảnh duy nhất ở đây: How to make android app's background image repeat

này hoạt động tốt nếu bạn đang sử dụng một hình ảnh duy nhất, nhưng không phải với nhiều hình ảnh.

Liên kết đến ví dụ dưới đây để bạn biết những gì tôi có nghĩa là:

http://rockfreaks.net/images/reviewPageTop.png

http://rockfreaks.net/images/reviewPageMiddle.png

http://rockfreaks.net/images/reviewPageBottom.png

Trả lời

9

Nghĩ bạn có thể thử kết hợp layer list drawable (nó có thể thiết lập insets cho các lớp) với một bitmap lát gạch có thể vẽ được đặt dưới dạng lớp giữa và được định vị với các loại inset thích hợp.

Something như thế này:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/page_top" /> 
    <item 
    android:insetTop="@dimen/page_top_height" 
    android:insetBottom="@dimen/page_bottom_height" 
    > 
    <bitmap 
     android:src="@drawable/page_middle_tile" 
     android:tileMode="repeat" 
     /> 
    </item> 
    <item android:drawable="@drawable/page_bottom" /> 
</layer-list> 

Nhưng tất cả phụ thuộc vào cách bố trí của bạn thực sự.

+0

Nice, tôi thích điều này nếu nó công trinh. – Blundell

+0

Tôi đang tìm một giải pháp cho một vấn đề khác, và bạn cũng trả lời giúp tôi. Sử dụng danh sách lớp là một ý tưởng hay trong nhiều trường hợp, cảm ơn bạn đã chia sẻ! – Stan

0

Hãy thử một cái gì đó như thế này:

trên và dưới trong hai bố trí với android:gravity="TOP""BOTTOM". Hai bố cục này được thiết lập với android:background="@drawable/xxx.png"

Đối với trung tâm, hãy sử dụng giải pháp của bạn hoặc có thể sử dụng ScrollView.

1

Đặt nền làm hình ảnh ở giữa và tô nó. (như trong ví dụ bạn hiển thị)

Tạo chế độ xem tiêu đề mà bạn chèn ở đầu mỗi trang.

Tạo chế độ xem chân trang mà bạn chèn ở cuối mỗi trang.

Và có nội dung của bạn ở giữa.

Tôi đã tạo một tệp phẳng ở đây, nhưng bạn có thể dễ dàng tưởng tượng tái cấu trúc nó vào includes hoặc bất kỳ ứng dụng nào của bạn cần.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#00FF00" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="100dip" 
     android:layout_alignParentTop="true" 
     android:background="#FF0000" /> 

    <!-- Your content --> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="100dip" 
     android:layout_alignParentBottom="true" 
     android:background="#0000FF" /> 

</RelativeLayout> 
  • Đỏ = Tiêu đề
  • Xanh = Gạch (sẽ được thừa hưởng từ Theme của bạn)
  • xanh = Footer

enter image description here

+0

Điều này hầu như hoạt động. Vấn đề là các phần màu đỏ và màu xanh chỉ đơn thuần là 'trên đỉnh' của nền màu xanh lá cây. Nó không hợp nhất với nhau như dự định, bạn có thể thấy rõ ràng rằng có hai hình ảnh ở trên cùng của hình nền. Ví dụ: http://peecee.dk/uploads/042012/device-2012-04-21-174830_big_thumb.png –

+0

Ah nhưng sau đó nó trở thành vấn đề với tài nguyên của bạn. Nếu bạn 9patch đầu trang và chân trang để xác định các khu vực căng ra và gạch giữa ở đúng kích thước gạch bạn sẽ nhận được chúng để tích hợp liền mạch. ** theo lý thuyết ** – Blundell

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