1. 程式人生 > >android程式碼構建佈局時設定寬高的單位為畫素(圖解)

android程式碼構建佈局時設定寬高的單位為畫素(圖解)

android構建佈局時一般通用xml佈局來生成,但有時還是需要程式碼來生成佈局控制元件,以達到不同的效果。以前用過程式碼生成佈局,現在寫個總結,方便新手檢視。

這裡程式碼來生成佈局控制元件設定的寬高的單位為:畫素。

  畫素即pixel,簡寫為px,我們平時說的手機的400*800解析度,這裡400*800的單位就是畫素。常見的解析度有如(MX)640*960,小米2S:720*1280,三星galaxy s4:1080*1920

  回到正題,以下是我測試幾臺手機得到的圖片,先看程式碼:

package com.example.dptest;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.util.DisplayMetrics;
import android.view.Menu;
import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;
import android.widget.TextView;

public class MainActivity extends Activity {

	private RelativeLayout rl_code;
	private TextView tv_diaplay_info;
	private Activity context;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		context = MainActivity.this;
		setContentView(R.layout.activity_main);
		
		rl_code = (RelativeLayout) findViewById(R.id.relativeLayout_code);
		tv_diaplay_info = (TextView) findViewById(R.id.tv_diaplay_info);
		
		//生成程式碼
		RelativeLayout rl_code2 = new RelativeLayout(context);
		LayoutParams params = new LayoutParams(630,100);//魅族的解析度率為:640*960,這裡寬故意設定成630以方便看出差別
		rl_code2.setLayoutParams(params);
		rl_code2.setBackgroundColor(Color.YELLOW);
		
		rl_code.addView(rl_code2);//新增
		
		
		//以下只是顯示當前的機型與解析度,方便檢視圖片
		DisplayMetrics metrics = new DisplayMetrics();
		getWindowManager().getDefaultDisplay().getMetrics(metrics);
		String info = "當前機型:魅族MX \nwidthPixels(畫素寬):"+metrics.widthPixels+"\nheightPixels(畫素高):"+metrics.heightPixels;
		tv_diaplay_info.setText(info);
		
	} 
}


佈局檔案activity_main.xml裡就一個ReletiveLayout,看程式碼

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

</RelativeLayout>

魅族MX測試效果圖如下:


由圖片可以看出相對佈局(圖中黃色的小塊)的寬接近螢幕的邊緣(因為我在程式碼裡設定少了10px),說明程式碼生成控制元件時,其寬高的單位為畫素px

下面上傳在其它解析度的手機測試時的圖片,佈局的寬都比原手機解析度小10px,方便看出差別。

下圖手機解析度為:1080*1920


下圖解析度手機為480*800