Android 图片显示与屏幕适配的问题
Android图片显示与屏幕适配的问题
在Android开发中比较头疼的是Android的分辨率问题,那么这里给大家介绍个万能办法,这个办法的优点是可以实现万能适应,给开发和美工设计提供了依据,但是对开发来说代码量也不少,具体办法:
(1)获取屏幕的尺寸
WindowManagerwindowManager=(WindowManager)getSystemService(Context.WINDOW_SERVICE); Displayd=windowManager.getDefaultDisplay(); mWidth=d.getWidth();mHeight=d.getHeight(); DisplayMetricsdm=getResources().getDisplayMetrics() mScreenDensity=dm.density;
(2)美工设计图的尺寸
uiWidth,uiHeight
(3)获取缩放比例
floatscaleWidth=mWidth/uiWidth; floatscaleHeight=mHeight/uiHeight;
(4)所有布局的尺寸用代码实现:
publicstaticintgetWidthSize(intsize){
return(int)(size*scaleWidth);
}
publicstaticintgetHightSize(intsize){
return(int)(size*scaleHeight);
}
publicstaticfloatgetTextSize(intpxSize){
return(pxSize*scaleHeight)/mScreenDensity;
}
publicstaticvoidsetViewSize(intwidth,intheight,Viewv){
intparamWidth=getWidthSize(width);
intparamHeight=getHightSize(height);
ViewGroup.MarginLayoutParamsparams=(ViewGroup.MarginLayoutParams)v
.getLayoutParams();
if(width!=INVALID){
params.width=paramWidth;
}
if(height!=INVALID){
params.height=paramHeight;
}
v.setLayoutParams(params);
}
publicstaticvoidsetViewPadding(intleft,inttop,intright,intbottom,
Viewv){
left=getWidthSize(left);
top=getHightSize(top);
right=getWidthSize(right);
bottom=getWidthSize(bottom);
v.setPadding(left,top,right,bottom);
}
publicstaticvoidsetViewMargin(intleft,inttop,intright,intbottom,
Viewv){
intparamLeft=getWidthSize(left);
intparamTop=getHightSize(top);
intparamRight=getWidthSize(right);
intparamBottom=getHightSize(bottom);
ViewGroup.MarginLayoutParamsparams=(ViewGroup.MarginLayoutParams)v
.getLayoutParams();
if(left!=INVALID){
params.leftMargin=paramLeft;
}
if(right!=INVALID){
params.rightMargin=paramRight;
}
if(top!=INVALID){
params.topMargin=paramTop;
}
if(bottom!=INVALID){
params.bottomMargin=paramBottom;
}
v.setLayoutParams(params);}
(5)这里是设置尺寸的代码:
setViewSize(100,100,mView); setViewMargin(20,0,0,20,mView); setViewPadding(10,10,10,10,mView); mTextView.setTextSize(getTextSize(30));
由上在设计效果图时,可对图内元素进行尺寸标注,程序即可实现按比例缩放。
以上就是Android图片显示与屏幕适配的问题的万能解决办法,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!