Android:设置 x 和 y 位置

Posted

技术标签:

【中文标题】Android:设置 x 和 y 位置【英文标题】:Android: setting x and y pos 【发布时间】:2012-03-15 05:22:32 【问题描述】:

我是安卓新手。我开始尝试构建一个方法库。我在 java 中更舒服,因为运行时的一切似乎都发生在 java 中,我正在尝试构建处理 java 中的 GUI 的方法。到目前为止我没有太多东西,我正在寻找定义在什么 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 的 Button,我会说 setSizeByRatio(按钮, 25, 50);它将按钮高度设置为屏幕的 25%,并将其高度设置为任何屏幕的 50%。

我的主要问题是如何设置您希望它开始绘制的 x 和 y 位置,就像在 reg java 中一样? 我遇到了 layout(l, t, r, b);但它只设置 x 和 y 相对于父级。

接下来的问题是我还应该学习什么 GUI 方法?我知道这会杀死很多人,但我如何在 XML 中发表评论?我对 XML 和对 android 一样陌生。

【问题讨论】:

检查这个问题的答案:***.com/questions/3441475/… 这可能会有所帮助。 继续深思熟虑。我想一切都必须在父母身上。即使该父级是主要布局。我仍然想知道如何设置 x 和 y 位置,而不必设置高度和宽度。 @Reena 谢谢你回答了我的问题。我想我需要变得更好看。我找了好久没看到。 xml 中的评论是这样创建的: 【参考方案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;
    

【讨论】:

感谢它很有用,我很高兴有人客观地查看了我的代码。我需要我能得到的所有帮助,哈哈。我最初想过这样做,但我的老师总是在全局范围内大量声明变量。我猜它只是卡住了。而且我希望这些方法能够在没有大量外部变量的情况下独立存在,这样我就可以在新项目中复制和过去它们。但我会经常称呼它,最好是创建一个新的,把它扔掉,一遍又一遍地创建一个新的

以上是关于Android:设置 x 和 y 位置的主要内容,如果未能解决你的问题,请参考以下文章

Flutter开发环境与Android开发环境设置

Flutter开发环境与Android开发环境设置

Android:如何将按钮放置在画布顶部的 x,y 位置

iOS四大控件

Android:MotionEvent 的 x 和 y 像素不会转换为图像坐标

Android Api 8. 从 View 中获取 x 和 y,并在 Button 上设置 x 和 y