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图片显示与屏幕适配的问题的万能解决办法,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!