对于我的GUI,我使用RelativeLayout并希望保留它,因为它是最适合不同的屏幕分辨率。
例如我有这个背景,我想把ImageView准确地放在电视屏幕上(在电视上显示一些图片)。
我希望这可以在不同的屏幕分辨率下工作。
我怎样才能做到这一点?或者这甚至可能吗?欢迎举例:)
我的背景图片:
答案 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。从这张图片中划出屏幕。这将使电视图像为屏幕透明(红色轮廓部分)
接下来,您的图像/屏幕幻灯片在宽度和高度方面必须与电视图像完全相同。但是,图像/屏幕幻灯片的实际内容必须仅在空心部分。
答案 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);