造成開發者在開發應用程式上的難度,要兼顧每一個尺寸是讓人頗頭大
現在介紹使用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)
三種來做測試就好,只要不會出現按不到鈕的情況就可以了,不然要寫完整的全部尺寸
調整是要花費不少時間的,以上給大家參考,感謝。
沒有留言:
張貼留言
您的寶貴建議是我前進的動力!