2015-01-29 4 views
0

Для моего графического интерфейса я использую RelativeLayout и хочу сохранить его, так как он лучше подходит для разных разрешений.Как установить ImageView относительно фонового изображения в Android Studio

Например, у меня есть этот фон, где я хочу поместить ImageView точно по телевизору (чтобы показать некоторые снимки на телевизоре).

Я хочу, чтобы это работало в разных разрешениях экрана.

Как я могу это достичь? Или это даже возможно? Примеры приветствуются :)

Мой Фоновое изображение: enter image description here

+0

ЗАКАНЧИВАТЬ режимы PorterDuff –

ответ

0

Если бы я тебя, я бы отделить ТВ изображения от фона и сделать его новый ImageView. Затем вы можете установить положение TV-Screen ImageView относительно TV ImageView.

+0

Спасибо за ваш ответ. Я подумал об этом, но мое реальное фоновое изображение сложнее, чем в моем вопросе. Есть люди, сидящие перед телевизором и другие вещи Arround Что-то вроде этого: http://imgur.com/vpqIgcP Я думаю, что это не будет работать весьма неплохо. – MaxHof

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> 

Но я думаю, что может быть проблема с различным разрешением попробовать это и дайте мне знать, если он работал.

0

Вы можете использовать свой телевизор в качестве PNG. Выньте экран из этого изображения. Это сделает изображение телевизора TRANSPARENT для экрана (красная очерченная часть)

Далее ваши изображения/слайды должны быть точно такими же, как и изображение телевизора по ширине и высоте. Однако фактическое содержание изображения/экранных слайдов должно быть только в полом участке.

enter image description here

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" /> 

Тогда я могу установить ТВ-изображения по сравнению с F.E. Фоновое ImageView в верхний и правый края. (Выглядит жёстко, как это)

<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); 
Смежные вопросы