Android: установка x и y pos

Я новичок в андроиде. Я начинаю пытаться создать библиотеку методов. Мне намного удобнее работать с java, и, поскольку все во время выполнения, кажется, происходит в java, я пытаюсь создать методы, связанные с графическим интерфейсом, в java. Пока у меня не так много, и я ищу, чтобы определить, в каких точках x и y рисовать объекты. Это то, что у меня есть до сих пор:

//method to get width or Xpos that is a one size fits all
public int widthRatio(double ratioIn){
    DisplayMetrics dm = new DisplayMetrics(); //gets screen properties
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    double screenWidth = dm.widthPixels;      //gets screen height
    double ratio = screenWidth/100;           //gets the ratio in terms of %
    int displayWidth = (int)(ratio*ratioIn);  //multiplies ratio desired % of screen 
    return displayWidth;
}

//method to get height or Ypos that is a one size fits all
public int heightByRatio(double ratioIn){
    DisplayMetrics dm = new DisplayMetrics(); //gets screen properties
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    double screenHeight = dm.heightPixels;    //gets screen height
    double ratio = screenHeight/100;          //gets the ratio in terms of %
    int newHeight = (int)(ratio*ratioIn);     //multiplies ratio by desired % of screen
    return newHeight;
}

//sets size of any view (button, text, ...) to a one size fits all screens
public void setSizeByRatio(View object, int width, int height){
    ViewGroup.LayoutParams params = object.getLayoutParams(); // gets params of view
    params.width = widthRatio(width);                         // sets width by portion of screen
    params.height = heightByRatio(height);                    // sets height by portion of screen
}

Итак, если у меня есть кнопка с именем button, и я говорю setSizeByRatio(button, 25, 50); он устанавливает высоту кнопки на 25% процентов экрана и ее высоту на 50% любого экрана.

Мой главный вопрос: как вы устанавливаете положение x и y, которое вы хотите, чтобы он начал рисовать, как в reg java? Я наткнулся на layout(l, t, r, b); но он устанавливает только x и y относительно родителя.

Следующие вопросы: какие еще методы GUI я должен изучить? и я знаю, что это убьет много людей, но как мне прокомментировать в XML? Я так же новичок в XML, как и в Android.


person JBreezy901    schedule 15.03.2012    source источник
comment
Проверьте ответы на этот вопрос: stackoverflow.com/questions/3441475/ Это может помочь.   -  person Reena    schedule 15.03.2012
comment
Ну и дальше размышления. Я думаю, все должно быть в родителях. даже если этот родитель является основным макетом. Я все еще хотел бы знать, как установить позиции x и y без необходимости делать высоту и ширину.   -  person JBreezy901    schedule 15.03.2012
comment
@Reena Спасибо, что ответили на мой вопрос. Думаю, мне нужно получше смотреть. Я долго искал и не видел этого.   -  person JBreezy901    schedule 15.03.2012
comment
Комментарии в xml создаются так: ‹!-- Комментарии здесь --›   -  person Krøllebølle    schedule 15.03.2012


Ответы (1)


Это не очень важно, но очищает одну строку кода (можно использовать в качестве ссылки для очистки большего количества строк кода, если у вас есть больше подобных вещей).

Таким образом, DisplayMetrics применяется к ним обоим, а не вводится каждый раз, когда вы получаете другую ось.

//method to get width or Xpos that is a one size fits all
DisplayMetrics dm = new DisplayMetrics() {    // This line now applies to both int and gets screen properties
public int widthRatio(double ratioIn){
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    double screenWidth = dm.widthPixels;      //gets screen height
    double ratio = screenWidth/100;           //gets the ratio in terms of %
    int displayWidth = (int)(ratio*ratioIn);  //multiplies ratio desired % of screen 
    return displayWidth;
}

//method to get height or Ypos that is a one size fits all
public int heightByRatio(double ratioIn){
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    double screenHeight = dm.heightPixels;    //gets screen height
    double ratio = screenHeight/100;          //gets the ratio in terms of %
    int newHeight = (int)(ratio*ratioIn);     //multiplies ratio by desired % of screen
    return newHeight;
    }
}
person Kurty    schedule 15.03.2012
comment
Спасибо, это полезно, и я рад, что кто-то объективно посмотрел на мой код. Мне нужна вся помощь, которую я могу получить, лол. Я изначально думал сделать это таким образом, но мой учитель всегда уделяет большое внимание объявлению переменных глобально. Думаю, просто застрял. И я хочу, чтобы методы могли работать самостоятельно без множества внешних переменных, чтобы я мог просто копировать и вставлять их в новые проекты. Но я буду называть это много раз, и лучше, чем создавать новый, выбрасывать его и создавать новый снова и снова. - person JBreezy901; 15.03.2012