2013-07-17 6 views
-1

Я пытаюсь найти диагональ (в дюймах) экрана, на котором работает мое приложение вместе с ppi, поэтому оно будет регулировать размер некоторых объектов, которые я устанавливаю в xml , Unforenitly я не могу найти способ, как это сделать. Мне нужна помощь в том, как найти диагональ в дюймах и ppi.найти размер экрана и диагональ для настройки размера объектов

public class MainActivity extends Activity implements OnClickListener { 

    Button v1, v2, v3, v4, v5, v6, v7, v8, stop; 
    Vibrator v; 
    int screenWidth, screenHeight, size, ppi, realppi, height, width, inwidth = 33, inheight = 7; 



    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    DisplayMetrics displayMetrics = new DisplayMetrics(); 
    WindowManager wm = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE); // the results will be higher than using the activity context object or the getWindowManager() shortcut 
    wm.getDefaultDisplay().getMetrics(displayMetrics); 
    screenWidth = displayMetrics.widthPixels; 
    screenHeight = displayMetrics.heightPixels; 
    ppi = displayMetrics.densityDpi; 

    realppi = 306/ppi; 

    DisplayMetrics metrics=new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 

    float height=metrics.heightPixels/metrics.xdpi; 
    float width=metrics.widthPixels/metrics.ydpi; 


    size = (int) FloatMath.sqrt(height*height+width*width); 

    height = inwidth * size * realppi; 
    width = inwidth * size * realppi; 




    v1.setHeight((int) height); 
    v1.setWidth((int) width);  



    setContentView(R.layout.activity_main); 
    stop = (Button) findViewById(R.id.bstop); 
    stop.setOnClickListener(this); 
    v1 = (Button) findViewById(R.id.bvibrate1); 
    v1.setOnClickListener(this); 

ответ

0

Я не знаю, почему вы этого хотите. Я надеюсь, что это работает:

Кажется, что

diagonalInches = Math.sqrt( (widthInInches*widthInInches) + (heightInInches * heightInInches)) 

где

widthInInches = width/ppi; 

и

heightInInches = height/ppi; 

Кроме того, почему вы получаете realppi путем деления 306 на ИЦП? Является ли displayMetrics.densityDpi не верным точным ppi ?! Я только что протестировал его, и, похоже, он работает правильно для меня.

Надеюсь, вам скоро удастся. Повесить там!