Draw Rectangle which change size w.r.t different android screen size

試著忘記壹切 提交于 2019-12-08 11:53:58

问题


I want to draw a rectangle using canvas which change its size with different screen size.
That means it increase of decrease its size with screen ratio.
I use the following code:

float scale = getContext().getResources().getDisplayMetrics().density;
canvas.drawRect(leftX-20*scale, leftY-20*scale, rightX+20*scale, rightY, mPaint); 

But it does not change its size in different screen.
What can I do?


回答1:


The problem is in getContext().getResources().getDisplayMetrics().density; it wil give you same dencity always better use the following approach

To get density Use the following code

DisplayMetrics metrics = new DisplayMetrics();    
getWindowManager().getDefaultDisplay().getMetrics(metrics);    
int screenDensity = metrics.densityDpi;

so your code will be

DisplayMetrics metrics = new DisplayMetrics();    
    getWindowManager().getDefaultDisplay().getMetrics(metrics);    
    float scale = metrics.densityDpi;

canvas.drawRect(leftX-20*scale, leftY-20*scale, rightX+20*scale, rightY, mPaint); 



回答2:


Or you can try

float scale= Resources.getSystem().getDisplayMetrics().densityDpi;

This is implemented in my Android Game "MaracasRunner".



来源:https://stackoverflow.com/questions/6533368/draw-rectangle-which-change-size-w-r-t-different-android-screen-size

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!