2016-11-03 190 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按鈕x位置必須是在屏幕的中心,但它不是。它的價值很小,比如42%。

也許我的錯誤是INT之間關係 - 浮動

下面是屏幕截圖(的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)); 

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

我需要進一步探討這個,「不要使用百分比」不是我的解決方案。 –