Android设备需要做适配,道理很简单。
1. Android开源,手机设备厂商众多标准很难统一。现状是Android设备各种屏,碎片化严重。
2. 如果不做适配,要么你的Android程序需求已经对设备进行了强制要求,要么就是你不想所有用户好好跑你程序。
3. 废话不多说了,怎么做呢?我看来有两种途径,一种是简单粗暴的获取设备长和宽,按照百分比设置控件的大小和间距,百度了一阵感觉没什么人介绍,可能是太简单了吧。另一种就是各种博客各种介绍的根据分辨率,像素,像素密度,图片分辨率大小综合上述因素再根据Android提供的适配方案,来进行Android设备的适配。
如何选择哪种方案,当只有一种分辨率的图片资源时,又没有一个得力的美工,或者处理图片的耐心,建议使用第一种方案。第二种方案实现网上教程很多,再此处不再赘述,想学习使用第二种方案的推荐看。屏幕适配全攻略。因为第一种方案我没百度到所以写下来。
首先,获取当前屏幕的宽度,高度。
DisplayMetrics dm=new DisplayMetrics();
dm=getResources().getDisplayMetrics();
int screenHeight=dm.heightPixels;
int screenWidth=dm.widthPixels;
setViewWidthAndHeight(questionBordPager, (int)(screenWIdth*0.5), (int)(screenHeight*0.21));
其次,设置View的长宽
public void setViewWidthAndHeight(View view,int Width,int height){
ViewGroup.LayoutParams params=view.getLayoutParams();
params.width=width;
params.height=height;
view.setLayoutParams(params);
}
最后,设置控件间隔
public void setMarginTop(View view,int top)
{
ViewGroup.MarginLayoutParams params=(MarginLayoutParams) view.getLayoutParams();
params.setMargins(0, top, 0, 0);
view.setLayoutParams(params);
}
public void setMarginRight(View view,int right)
{
ViewGroup.MarginLayoutParams params=(MarginLayoutParams) view.getLayoutParams();
params.setMargins(0, 0, right, 0);
view.setLayoutParams(params);
}
public void setMarginLeft(View view,int left)
{
ViewGroup.MarginLayoutParams params=(MarginLayoutParams) view.getLayoutParams();
params.setMargins(left, 0, 0, 0);
view.setLayoutParams(params);
}
public void setMarginLeftAndTop(View view,int left,int top)
{
ViewGroup.MarginLayoutParams params=(MarginLayoutParams) view.getLayoutParams();
params.setMargins(left, top, 0, 0);
view.setLayoutParams(params);
}