如何在Android Studio中将ImageView相对于背景图像

时间:2015-01-29 09:26:06

标签: android background imageview relativelayout

对于我的GUI,我使用RelativeLayout并希望保留它,因为它是最适合不同的屏幕分辨率。

例如我有这个背景,我想把ImageView准确地放在电视屏幕上(在电视上显示一些图片)。

我希望这可以在不同的屏幕分辨率下工作。

我怎样才能做到这一点?或者这甚至可能吗?欢迎举例:)

我的背景图片: enter image description here

4 个答案:

答案 0 :(得分:0)

如果我是你,我会将电视图像与背景分开并使其成为新的ImageView。然后,您可以将TV-Screen ImageView的位置设置为TV ImageView。

答案 1 :(得分:0)

我认为你可以试试这个

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" 
    tools:context=".MainActivity">

   <RelativeLayout
       android:id="@+id/back"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:background="@drawable/ic_launcher"></RelativeLayout>

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="?attr/actionBarSize"
        android:src="@drawable/ic_launcher"
        android:layout_alignTop="@+id/back"
        android:layout_alignRight="@+id/back"/> 

</RelativeLayout>

但我认为不同的解决方案可能存在问题,试试这个问题,让我知道它是否有用。

答案 2 :(得分:0)

您可以将电视视为PNG。从这张图片中划出屏幕。这将使电视图像为屏幕透明(红色轮廓部分)

接下来,您的图像/屏幕幻灯片在宽度和高度方面必须与电视图像完全相同。但是,图像/屏幕幻灯片的实际内容必须仅在空心部分。

enter image description here

答案 3 :(得分:0)

我想我想出了如何做到这一点。

首先,我将背景图片从布局背景更改为ImageView:

 <ImageView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/imageView"
    android:src="@drawable/background1"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:scaleType="fitXY" />

然后我可以相对于Background-ImageView的f.e设置电视图像。顶部和右边距。 (看起来像这样硬编码)

 <ImageView
    android:layout_width="125dp"
    android:layout_height="85dp"
    android:id="@+id/imageView1"
    android:src="@drawable/tvImage"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:layout_marginTop="44dp" 
    android:layout_marginRight="169dp"
    android:layout_marginEnd="169dp"
    android:scaleType="fitXY" />

基本上我现在有两件事要处理,以便在更改屏幕分辨率时使电视图像适合:

1)图片的宽度和高度。

2)图片的位置。

要找出1):

我的背景是f.e. 500x250dp。 在图像程序中,我测量了电视图像所需的尺寸:125x85dp。 现在我可以根据背景尺寸计算宽度和高度。

500/125 = 4用于宽度计算

高度计算

250/85 = 2,9

因此,如果屏幕例如更改为800x400dp,则可以像这样计算电视图像的宽度和高度:

800/4 = 200dp

400 / 2,9 = 137dp

因此,我的电视图像尺寸应为200x137

找出2)

我必须再次计算点1)。找出电视屏幕的位置,然后根据计算设置布局边距。我还没有实现这一点,所以我无法解释更多,但我认为你得到我想说的。如果没有随意问:)

最后,我可以使用此代码设置电视图像(硬编码值应该是计算变量!)

RelativeLayout.LayoutParams layoutPar = (RelativeLayout.LayoutParams) tvImage.getLayoutParams();
    layoutPar.setMargins(0,88,210,0); // or whatever
    layoutPar.height = 137;
    layoutPar.width = 250;
    tvImage.setLayoutParams(layoutPar);