android程式碼構建佈局時設定寬高的單位為畫素(圖解)
阿新 • • 發佈:2019-02-16
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