2013-08-22 87 views
0

我是Android新手。我在一個活動中有多個圖像視圖,並將添加更多。我將這些圖像視圖用作按鈕。我遇到的問題是讓它們全部正確匹配並根據屏幕大小進行縮放。我可以得到一些幫助嗎?將多個Android ImageViews縮放到所有適合屏幕的設備無論設備大小如何

下面是XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 

    <ImageView 
     android:id="@+id/homeBackground" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentRight="true" 
     android:scaleType="centerCrop" 
     android:src="@drawable/homebackground" /> 

    <ImageView 
     android:id="@+id/publicAffairs" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="5dp" 
     android:layout_marginTop="5dp" 
     android:src="@drawable/publicaffairs" /> 

    <ImageView 
     android:id="@+id/actionAlerts" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_marginTop="5dp" 
     android:layout_marginLeft="1dp" 
     android:layout_toRightOf="@+id/publicAffairs" 
     android:src="@drawable/actionalerts" /> 

</RelativeLayout> 

我使用如按鈕這兩個圖像視圖不根據設備大小比例的。

enter image description here

+1

你能鏈接到你想要實現的圖片嗎? – Tenfour04

+0

我已添加圖片。 – raginggoat

+0

@ user2029585你看到我的答案了嗎? – superuser

回答

0

是的,我以前曾經有過這個問題。請參閱我的其他答案:

Placing a point at specific position on different screen densitiesResizing images from server

你需要做的是找到這個新的屏幕多少更大的比舊的一個,首先讓你的測試設備的尺寸並將它們放入widthOfStandardDevice和heightOfStandardDevice中。一旦使用DisplayMetrics知道您的測試新屏幕有多大時,您將使用兩個乘法器將所有內容相乘,以使位置和大小與屏幕大小相同。

DisplayMetrics displaymetrics = new DisplayMetrics(); 

getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 

height = displaymetrics.heightPixels; 

width = displaymetrics.widthPixels; 

float widthMultiplier = width/widthOfStandardDevice; 

float heightMultiplier = height/heightOfStandardDevice; 

int image_width = (int)(/*regular image width on your test device*/ * widthMultiplier); 

int image_height = (int)(/*regular image height on your test device*/ * heightMultiplier); 

LayoutParams params = new LayoutParams(image_width, image_height); 

params.setMargins(/*regular left margin*/ * widthMultiplier, 
    /*regular bottom margin*/ * heightMultiplier,); 
ImageView imageView = (ImageView)findViewById(R.id.imageView1); 

imageView.setLayoutParams(params); 

RelativeLayout x = (RelativeLayout)findViewById(R.id.relative_layout_id); 

x.addView(imageView); 

也,你應該添加的id到ImageViews和RelativeLayout的是這樣的:

android:id="@+id/your_id_here" 

爲我們在前面的代碼創建的ImageView的,其ID就是:

android:id="@+id/imageView1" 

對於佈局它將是:

android:id="@+id/relative_layout_id"