造成開發者在開發應用程式上的難度,要兼顧每一個尺寸是讓人頗頭大
現在介紹使用DisplayMetrics類別取得手機螢幕尺寸大小,以改變控制元件
來配合螢幕尺寸。
main.xml
<?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" >
<TextView
android:id="@+id/TextView01"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="300dp"
android:ems="10"
android:inputType="textMultiLine"
android:singleLine="false" >
<requestFocus />
</EditText>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="60dp"
android:text="@android:string/cancel" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="60dp"
android:text="@android:string/ok" />
</RelativeLayout>
</LinearLayout>
我先設定螢幕尺寸為2.7寸,中間EditText高度為300dp執行後的畫面,因為實際螢幕比較大,所以程式小了一號
使用DisplayMetrics類別取得螢幕尺寸大小改變控制項尺寸大小以符合實際螢幕大小
DemoGetScreenActivity.java
package jim.demo.getscreen;
import android.app.Activity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.widget.EditText;
import android.widget.TextView;
public class DemoGetScreenActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
TextView TextView1 = (TextView)findViewById(R.id.TextView01);
TextView1.setText("手機螢幕大小為 "+metrics.widthPixels+" X "+metrics.heightPixels);
EditText editText1 = (EditText)findViewById(R.id.editText1);
//原QVGA 2.7吋螢幕解析度為240 * 320
if(metrics.heightPixels > 320)
{
//改變editText1的高度
editText1.getLayoutParams().height = 600;
}
}
}
改變後執行畫面
官方螢幕尺寸和解析度對照表
後記:
android的螢幕尺寸是個很麻煩的問題,因為不像Apple的iphone一樣只有單一尺寸
每一家Android廠商就有不同的尺寸,所以開發時就只有靠著DisplayMetrics抓取的螢幕
尺寸來做適度的調整,正常來說抓最小尺寸(QVGA)、大尺寸(WVGA)、平板尺寸(WXGA)
三種來做測試就好,只要不會出現按不到鈕的情況就可以了,不然要寫完整的全部尺寸
調整是要花費不少時間的,以上給大家參考,感謝。




沒有留言:
張貼留言
您的寶貴建議是我前進的動力!