2016-11-03 2 views
1

私のアプリのすべての位置にパーセントを使用したい。私はいつも同じシステムを使います。私はアンドロイドのプログラミングでは新しいです。位置をパーセントで設定 - 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%のような小さな値です。フロート

ここ

スクリーンショット(でframeLayout)される -

はたぶん私のバグは、int型の間の関係である: 私は、このボタンにこのコードを置く - それは、x = yの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

私はこれについてさらに詳しく調べる必要があります。「パーセンテージを使用しないでください」は私の解決策ではありません。 –

関連する問題