2016-11-03 3 views
1

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

Это класс:

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%.

Может быть, моя ошибка это отношение между междунаром - плывет

Вот скриншот (FrameLayout): я ставлю этот код для этой кнопки - Это означает, что х = 0, у = 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)); 

enter image description here

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 ?! 

ответ

0

лучший ответ: не использовать проценты. Это не сработает. Используйте RelativeLayout и такие свойства, как layout_gravity center_vertical и т. Д.

+0

Мне нужно больше узнать об этом, «Не использовать проценты» - это не мое решение. –

Смежные вопросы