好吧,我知道如果我想讓圖像和文本和按鈕不會在小設備中過於擠壓,也不會在巨型平板電腦中變得非常小,我可以創建每個設備都不同的資源文件和每個方向。Android與多個設備的兼容性
有沒有更簡潔的方法來做到這一點?即有沒有辦法讓我的所有資源都擁有一個單獨的文件夾,就像「屏幕比例因子」一樣,這樣每次我想編輯時,我都不必返回並更改30個不同的資源,然後檢查它們以確保它們都合適嗎?
謝謝
好吧,我知道如果我想讓圖像和文本和按鈕不會在小設備中過於擠壓,也不會在巨型平板電腦中變得非常小,我可以創建每個設備都不同的資源文件和每個方向。Android與多個設備的兼容性
有沒有更簡潔的方法來做到這一點?即有沒有辦法讓我的所有資源都擁有一個單獨的文件夾,就像「屏幕比例因子」一樣,這樣每次我想編輯時,我都不必返回並更改30個不同的資源,然後檢查它們以確保它們都合適嗎?
謝謝
您不必爲每個小部件創建不同的大小。
對於Button
,TextView
,ImageView
(和任何其他Views
),則可以在DP(密度無關的像素)中設置的android:layout_width
和android:layout_height
性質。
這個單位 - 正如我們從它的名字中可以猜出 - 獨立於屏幕的密度。這意味着每個屏幕上的結果都是一樣的。
您可能必須創建多種尺寸的唯一圖標是圖標。爲此,您必須遵循Android提供的有關不同密度之間比例的規則。欲瞭解更多信息,你可以看看this。
您還可以在XML文件中創建圖標。這樣,它會自動適合每個屏幕。問題是,創建複雜圖標可能非常困難。
實際上,它對每個設備都有多個圖像,對於低端設備而言,加載500px並不像加載其實際需要的100px一樣。所以我建議在ImageView中使用scaleType
並使用android_layout_width
和android:layout_height
內的維度調整您的UI。例如: android:layout_width="@dimen/size"
並且您可以根據您的設備使用不同的大小。 另一種方式是把圖像drawable-nodpi
和規模下運行因此這將始終修復形象,因爲你需要
public static int calculateInSampleSize(
BitmapFactory.Options options, int reqWidth, int reqHeight) {
// Raw height and width of image
final int height = options.outHeight;
final int width = options.outWidth;
int inSampleSize = 1;
if (height > reqHeight || width > reqWidth) {
final int halfHeight = height/2;
final int halfWidth = width/2;
// Calculate the largest inSampleSize value that is a power of 2 and keeps both
// height and width larger than the requested height and width.
while ((halfHeight/inSampleSize) > reqHeight
&& (halfWidth/inSampleSize) > reqWidth) {
inSampleSize *= 2;
}
}
return inSampleSize;
}
你可以看看在Android開發者指南進一步幫助縮放位圖高效 http://developer.android.com/training/displaying-bitmaps/load-bitmap.html
我相信只要你理智地使用佈局,它會自動擴展。問題是,如果你炸掉低分辨率的圖像,它看起來像是像素化的,如果你縮小高分辨率的話,可能會讓機器處理太多 –