Android手机生产商很多,又没有硬性规定,所以android手机尺寸很多,分辨率也有很多种。因此一种应用要做到,在各个不同屏幕大小的手机上都能正常布局应用,不影响用户使用。网上有很多方法,总结一下:
一.下面的方法是获得控件的大小
利用getLayoutParams()方法和setLayoutParams()方法。
三步曲:
1、首先利用getLayoutParams()方法,
获取控件的LayoutParams LayoutParams laParams=(LayoutParams)imageView.getLayoutParams();
2、设置该控件的layoutParams参数 laParams.height=200; laParams.width=100;
3、将修改好的layoutParams设置为该控件的layoutParams. imageView.setLayoutParams(laParams);
二.获得屏幕的大小 在真机上面获取分辨率的话为:
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
Int nowWidth = dm.widthPixels; //当前屏幕像素
int nowHeigth = dm.heightPixels; //当前屏幕像素
Int density=dim.density;//屏幕的密度density
Log.e("密度:",density+"");
int width = (int) (nowWidth * density);
int height = (int) (nowHeigth * density);
Java代码
public class TestShipingActivity extends Activity {
/** Called when the activity is first created. */ private Button btn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn=(Button) findViewById(R.id.btn1);
LayoutParams laParams=(LayoutParams) btn.getLayoutParams();
DisplayMetrics dm=new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int nowWidth=dm.widthPixels;//获得控件的原始宽度
int nowheight=dm.heightPixels;//获得控件的原始高度
int density = (int) dm.density;//获得真机的像素密度
//乘以手机的密度是因为每一个手机存在差异,
int width = (int) (nowWidth * density);//获得当前手机的宽度
int height = (int) (nowheight * density);//获得当前手机的高度
laParams.width=(laParams.width*width)/320;//设置新手机上的控件的宽度
laParams.height=(laParams.height*height)/480;//设置新手机上的控件的高度
btn.setLayoutParams(laParams); } }