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