Установить позицию по процентам - Android DisplayMetrics

Мне нравится использовать проценты для всех позиций в моих приложениях. Я всегда использую одну и ту же систему. Я новичок в программировании Android.

Это класс:

public class SCREEN  {

    DisplayMetrics dm = new DisplayMetrics();
    Point size_ = new Point();
    int width;
    int height;

  //  DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();

    SCREEN (Context CONTEXT_) {
        dm = CONTEXT_.getResources().getDisplayMetrics();
        int densityDpi = dm.densityDpi;
        height = dm.heightPixels;
        width = dm.widthPixels;
    }

    // get full width
    public int WIDTH() {
        return width;
    }
    public int HEIGHT(){
        return height;
    }
    public int W( int PER_ ){
        return width/100*PER_;
    }
    public int H( int PER_   ){
        return height/100*PER_;
    }
}

Пример использования:

EKRAN = new SCREEN();

MENU1.setX( (float) EKRAN.W( 50 ) );

Это означает, что позиция кнопки MENU1 должна находиться в центре экрана, но это не так. Его немного меньшее значение, как 42%.

Может быть, моя ошибка в отношениях между int - float

Вот скриншот (FrameLayout): я поставил этот код для этой кнопки - это означает, что x = 0, y = 0, ширина = половина экрана, но это не так:

 final Button BTN1 = new Button(this);
    BTN1.setText( String.valueOf( EKRAN.H( 0 ) ) );

    BTN1.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT));
    VEIW_MAIN.addView(BTN1);

    BTN1.setY( (float)  EKRAN.H( 0 ) );
    BTN1.setX( (float) EKRAN.W( 0 ) );
    BTN1.setWidth( (int)  EKRAN.W( 50 ) );

Important : This work EKRAN.WIDTH()/5 = 216  , but EKRAN.W(20) = 200
My current screen i is 1080 . Only this EKRAN.WIDTH()/2 give me 540 .
Even EKRAN.WIDTH()/100*50 give me 500 ... Where is the 40pix ?! 

Ответы на вопрос(1)

Ваш ответ на вопрос