在 LinearLayout 中绘制可变长度线

发布于 2024-11-27 04:52:07 字数 2359 浏览 0 评论 0原文

我正在制作一个增强现实应用程序,其中主屏幕包含多个显示在相机预览上的ARView。这些 ARView 是内部带有 TextView 的 LinearLayout 的扩展。 这些视图绘制在屏幕上不同的垂直位置。现在我想从每个视图的中间到屏幕高度的中间绘制一条垂直线,如下面的屏幕截图所示。

在此处输入图像描述

当然,当用户移动设备时,视图也会移动,因此线条的长度也会发生变化。

如何将其添加到我的 ARView 中?

public class ARView extends LinearLayout
{    
    public float azimuth = 0;        
    public float inclination = 0;
    public Location location;
    public int position;

    TextView title, type, distance;

    public int X, Y;

    public ARView(final Context context, int ind)
    {        
        super(context);  
        getLayoutInflater().inflate(R.layout.ar_item, this ,true);
        LayoutInflater inflater = (LayoutInflater)   getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
        inflater.inflate(R.layout.ar_item, null);

        title = (TextView) findViewById(R.id.title);
        type = (TextView) findViewById(R.id.type);
        distance = (TextView) findViewById(R.id.distance);
    }
}

ar_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ar_item" android:layout_width="202dp"
    android:layout_height="62dp" android:background="@drawable/bg_item_ar"
    android:clickable="true">

    <LinearLayout android:id="@+id/container"
        android:orientation="vertical" android:layout_width="164dp"
        android:layout_height="fill_parent" android:paddingBottom="5dp"
        android:paddingLeft="8dp" android:paddingTop="5dp"
        android:paddingRight="6dp" android:clickable="true">

        <TextView android:id="@+id/title" android:layout_width="fill_parent"
            android:layout_height="18dp" android:textSize="13sp"
            android:textColor="#FFFFFF" android:textStyle="bold"/>

        <TextView android:id="@+id/type" android:layout_width="fill_parent"
            android:layout_height="18dp" android:textSize="13sp"
            android:textColor="#FFFFFF"/>

        <TextView android:id="@+id/distance"
            android:layout_width="fill_parent" android:layout_height="16dp"
            android:textSize="12sp" android:textColor="#C6C6C6" />

    </LinearLayout>

</LinearLayout>

I'm doing an Augmented Reality app in which the main screen contains several ARViews shown over the camera preview. These ARViews are extended LinearLayout with TextViews inside.
These views are drawn at different vertical positions on the screen. Now I'd like to draw a vertical line from the middle of each view to the middle of the height of the screen, as shown on the screenshot below.

enter image description here

Of course the views move when the user moves the device, so that the length of the line changes.

How can add this to my ARView?

public class ARView extends LinearLayout
{    
    public float azimuth = 0;        
    public float inclination = 0;
    public Location location;
    public int position;

    TextView title, type, distance;

    public int X, Y;

    public ARView(final Context context, int ind)
    {        
        super(context);  
        getLayoutInflater().inflate(R.layout.ar_item, this ,true);
        LayoutInflater inflater = (LayoutInflater)   getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
        inflater.inflate(R.layout.ar_item, null);

        title = (TextView) findViewById(R.id.title);
        type = (TextView) findViewById(R.id.type);
        distance = (TextView) findViewById(R.id.distance);
    }
}

ar_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ar_item" android:layout_width="202dp"
    android:layout_height="62dp" android:background="@drawable/bg_item_ar"
    android:clickable="true">

    <LinearLayout android:id="@+id/container"
        android:orientation="vertical" android:layout_width="164dp"
        android:layout_height="fill_parent" android:paddingBottom="5dp"
        android:paddingLeft="8dp" android:paddingTop="5dp"
        android:paddingRight="6dp" android:clickable="true">

        <TextView android:id="@+id/title" android:layout_width="fill_parent"
            android:layout_height="18dp" android:textSize="13sp"
            android:textColor="#FFFFFF" android:textStyle="bold"/>

        <TextView android:id="@+id/type" android:layout_width="fill_parent"
            android:layout_height="18dp" android:textSize="13sp"
            android:textColor="#FFFFFF"/>

        <TextView android:id="@+id/distance"
            android:layout_width="fill_parent" android:layout_height="16dp"
            android:textSize="12sp" android:textColor="#C6C6C6" />

    </LinearLayout>

</LinearLayout>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

人│生佛魔见 2024-12-04 04:52:07

您应该创建一个 ViewGroup,其中包含所有这些视图,这些视图应覆盖整个宽度和高度。现在,您可以将另一个视图添加到视图组中,该视图应充当自定义绘图的背景。您还可以创建一个新的相对布局以及其中的所有额外内容。

You shuld create a ViewGroup where all those views are included which should cover the whole width and height. Now you could add into the view group another view that should act as a background with your custom drawing. You could also create a new relative layout and to all extra stuff in there.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文