Нарисуйте прямоугольник, который меняет размер с разным размером экрана Android

Я хочу нарисовать прямоугольник с помощью холста, который меняет свой размер в зависимости от размера экрана.
Это означает, что его размер увеличивается или уменьшается с соотношением сторон экрана.
Я использую следующий код:

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

Но он не меняет свой размер на другом экране.
Что мне делать?


person Farhana Haque    schedule 30.06.2011    source источник


Ответы (2)


Проблема в том, что getContext().getResources().getDisplayMetrics().density; это даст вам одинаковую плотность, всегда лучше использовать следующий подход.

Чтобы получить плотность Используйте следующий код

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

поэтому ваш код будет

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); 
person Sunil Kumar Sahoo    schedule 30.06.2011

Или вы можете попробовать

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

Это реализовано в моей игре для Android "MaracasRunner".

person Michael Bristol    schedule 25.07.2018