Ứng dụng android của tôi hiện có hai bố cục cho màn hình, hình dọc và ngang của màn hình. Cả hai sử dụng định dạng cùng rất đơn giản - một hình ảnh đó là kích thước tương tự như màn hình, được tổ chức trong một bố cục tuyến tính đơn giản:Bố cục Android và thay đổi kích thước hình ảnh tự động
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="fitCenter"
android:src="@drawable/splash_p"
/>
</LinearLayout>
Hình ảnh sử dụng là 320W x 480h và Android sẽ tự động thay đổi kích thước nó để phù hợp với màn hình, không phân biệt kích thước màn hình của thiết bị. Rõ ràng, hình ảnh không sắc nét khi được định lại kích thước cho máy tính bảng chẳng hạn.
Tôi nên chỉ ra ở đây rằng mục tiêu của tôi là giảm kích thước đã cài đặt của ứng dụng cuối cùng càng nhiều càng tốt và tôi biết rằng tôi có thể bao gồm các bố cục và kích thước khác nhau của cùng một hình ảnh cho từng kích thước màn hình khác nhau.
Màn hình giật gân của tôi được tạo thành từ tên của ứng dụng ở phần trên cùng của màn hình và sau đó là hình ảnh ở hai phần ba dưới cùng của màn hình. Để tiết kiệm bộ nhớ, tôi muốn cắt tên ứng dụng và hình ảnh thành hai hình ảnh riêng biệt, sau đó hiển thị chúng trong bố cục dọc tuyến tính cho các thiết bị được giữ ở chế độ dọc. Sau đó, tôi sẽ sử dụng bố cục ngang hình ảnh tuyến tính và sau đó là tên ứng dụng cho chế độ ngang.
Đối với cách bố trí chân dung tôi đã nhận điều này:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical">
<LinearLayout android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical">
<View android:layout_height="45dp" android:layout_width="45dp" />
<ImageView android:layout_height="fill_parent"
android:src="@drawable/splashtext"
android:scaleType="fitCenter"
android:layout_gravity="center"
android:layout_width="fill_parent"></ImageView>
<View
android:layout_height="35dp"
android:layout_width="35dp" />
<ImageView
android:scaleType="fitCenter"
android:src="@drawable/splashpic"
android:layout_height="fill_parent" android:scaleType="fitCenter" android:layout_width="fill_parent" android:layout_gravity="center"/>
</LinearLayout>
</LinearLayout>
Khi tôi hiển thị ở trên trong nhật thực, có vẻ ok cho điện thoại thông minh, nhưng những hình ảnh không được nhân rộng khi được hiển thị trên một tấm bảng, mặc dù Tôi đang sử dụng đối số android: scaleType = "fitCenter". Tôi đã thử sử dụng dips thay vì fill_parent trong layouteview width_width và layout_height nhưng điều đó cũng không hoạt động.
Tôi đang làm gì sai? Có một cách khác để làm điều này?
Cảm ơn
Tôi đã chỉnh sửa câu hỏi để bao gồm XML được sửa đổi này dựa trên trợ giúp của @ KaHa6u bên dưới. Vì vậy, bây giờ tôi có:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<View
android:layout_height="15dp"
android:layout_width="15dp"
/>
<ImageView android:layout_height="wrap_content"
android:src="@drawable/splashtext"
android:adjustViewBounds="true"
android:scaleType="fitXY"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_weight="1">
</ImageView>
<View
android:layout_height="15dp"
android:layout_width="15dp"
/>
<ImageView
android:scaleType="fitXY"
android:src="@drawable/splashpic"
android:adjustViewBounds="false"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_weight="4"
android:layout_gravity="center"/>
</LinearLayout>
</LinearLayout>
Quy mô theo chiều dọc, nhưng không theo chiều ngang, vì vậy tôi kết thúc với hình ảnh mỏng cao khi kích thước màn hình tăng.
Cảm ơn vì điều này @ KaHa6uc.Tôi đã thay đổi nó thành fitXY và cũng đã sử dụng adjustViewBounds. Bây giờ màn hình sẽ mở rộng theo chiều dọc, nhưng không theo chiều ngang. Tôi đã chỉnh sửa câu hỏi của mình để bao gồm bố cục được sửa đổi. Còn ý tưởng nào nữa không? – basinbasin