如何在android中获取角坐标视点?

如何在android中获取角坐标视点?,android,android-view,android-pixel-copy,Android,Android View,Android Pixel Copy,我的布局中有一个线性布局,如下图中蓝色背景所示。如何获取角点坐标位置?或者如何将其设置为特定位置?例如,我希望左上角位于(50,50),右上角位于(300,50),左下角位于(50200),右下角位于(300,50),如下图所示。此处的位置在px中,而不是在dp中。 我的问题有点像这个问题 以下是布局的xml文件: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://sche

我的布局中有一个线性布局,如下图中蓝色背景所示。如何获取角点坐标位置?或者如何将其设置为特定位置?例如,我希望左上角位于(50,50),右上角位于(300,50),左下角位于(50200),右下角位于(300,50),如下图所示。此处的位置在px中,而不是在dp中。 我的问题有点像这个问题

以下是布局的xml文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".TestActivity">

    <LinearLayout
        android:layout_width="300px"
        android:layout_height="150px"
        android:background="@color/colorAccent"
        android:orientation="vertical"
        android:layout_centerInParent="true"
        android:id="@+id/linearLayout"
        >
    </LinearLayout>

</RelativeLayout>

在android studio中有什么方法可以做到这一点吗?我搜索了很多android开发者文档,但什么都不懂。 我将非常感谢您对此的友好反馈


谢谢

换一种想法,您可以在任意x或y方向直接设置布局。所以,如果你想从你所有的坐标在给定的x和y处加载线性布局,找到对角线x和y。 例如,在您的例子中,xmid将是50+300/2,而ymid将是相同的。 然后用这个:

 val fromXDelta = xmid - linearLayouWidth/2
 val fromYDelta = ymid - linearLayoutHeight/2

 linearLayout.x = fromXDelta
 linearLayout.y = fromYDelta

换个角度考虑,可以在任意x或y方向直接设置布局。所以,如果你想从你所有的坐标在给定的x和y处加载线性布局,找到对角线x和y。 例如,在您的例子中,xmid将是50+300/2,而ymid将是相同的。 然后用这个:

 val fromXDelta = xmid - linearLayouWidth/2
 val fromYDelta = ymid - linearLayoutHeight/2

 linearLayout.x = fromXDelta
 linearLayout.y = fromYDelta

这只是设置
50
top
left
边距,然后使所有维度
300
或任何你想要的。我假设下角应该是
300200
?那么总体尺寸是
300x150

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <View
        android:layout_width="300dp"
        android:layout_height="150dp"
        android:layout_marginTop="50dp"
        android:layout_marginLeft="50dp"/>

</FrameLayout>
然而,你会注意到它已经被弃用了十多年。Android不鼓励你用绝对值来定义布局,因为它们的伸缩性很差。相反,您应该使用另一个布局(可能是
ConstraintLayout
)并定义所有UI元素之间的相对关系


如果您自己在Java中定义自定义视图,那么也可以用绝对值定义所有内容。然而,这将涉及大量工作,

这只是一个设置
顶部
左侧
边距
50
的例子,否则,所有尺寸都将
300
或任何你想要的尺寸。我假设下角应该是
300200
?那么总体尺寸是
300x150

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <View
        android:layout_width="300dp"
        android:layout_height="150dp"
        android:layout_marginTop="50dp"
        android:layout_marginLeft="50dp"/>

</FrameLayout>
然而,你会注意到它已经被弃用了十多年。Android不鼓励你用绝对值来定义布局,因为它们的伸缩性很差。相反,您应该使用另一个布局(可能是
ConstraintLayout
)并定义所有UI元素之间的相对关系



如果您自己在Java中定义自定义视图,那么也可以用绝对值定义所有内容。这将涉及大量的工作,但是,

最后一个维度不应该是
300200
?最后一个维度不应该是
300200
?这里的x是什么?我们如何得到这个?我们刚刚计算了xmid和ymid,更新了答案,你如何计算xmid和ymid?你的x1和x2,在你的例子中是50和300。选择对角线点。你能提供一个完整的代码吗?因为我在写你的逻辑时出错了?例如linearlayou.x来了。x在这里是什么?我们怎么能得到这个?我们刚刚计算了xmid和ymid,更新了答案。你如何计算xmid和ymid?你的x1和x2,在你的例子中是50和300。选择对角线点。你能提供一个完整的代码吗?因为我在写你的逻辑时出错了?例如linearlayou.x来了。我问的是像素坐标的位置。我不明白你的意思。例如,任何设备屏幕的左上角像素都位于(0,0)的位置等等。我问的是像素坐标的位置。我不明白你的意思。例如,任何设备屏幕的左上角像素都位于(0,0)的位置,依此类推。