โ ConstraintLayout
RelativeLayout์ "์๋์ ์์น ๊ด๊ณ์ ๋ฐ๋ฅธ ๋ฐฐ์น" ํน์ฑ +
LinearLayout์ "๊ฐ์ค์น(weight)๊ฐ ๊ฐ์ง ์ฅ์ " +
chain ์ฌ์ฉ์ผ๋ก ๋ค๋ฅธ ๋ ์ด์์ ์์ด "์์๋ค์ ๊ทธ๋ฃนํ"
- ConstraintLayout๋ ์ฑ๋ฅํฅ์์ ์ป์ ์ ์๋ค → ์ํ์ ์ธ ๊ตฌ์กฐ๋ฅผ ์ด๋ฃฐ ์ ์๊ธฐ ๋๋ฌธ์!
- ConstraintLayout๋ ๋ ์ด์์์ ๋ฐฐ์น๋๋ ๋ทฐ๋ค์ ์ฌ๋ฌ ์ ์ฝ(Constraint)์ ์ ์ฉํ์ฌ ๊ฐ ๋ทฐ์ ์์น์ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์
โ ConstraintLayout์์ฑ ๋ฐ ์ค๋ช
์์ฑ | ์ค๋ช |
layout_constraintLeft_toLeftOf | ๋ทฐ์ ์ผ์ชฝ ์ฌ์ด๋๋ฅผ ๋์ ๋ทฐ์ ์ผ์ชฝ ์ฌ์ด๋์ ๋ง์ถค |
layout_constraintLeft_toRightOf | ๋ทฐ์ ์ผ์ชฝ ์ฌ์ด๋๋ฅผ ๋์ ๋ทฐ์ ์ค๋ฅธ์ชฝ ์ฌ์ด๋์ ๋ง์ถค |
layout_constraintRight_toLeftOf | ๋ทฐ์ ์ค๋ฅธ์ชฝ ์ฌ์ด๋๋ฅผ ๋์ ๋ทฐ์ ์ผ์ชฝ ์ฌ์ด๋์ ๋ง์ถค |
layout_constraintRight_toRightOf | ๋ทฐ์ ์ค๋ฅธ์ชฝ ์ฌ์ด๋๋ฅผ ๋์ ๋ทฐ์ ์ค๋ฅธ์ชฝ ์ฌ์ด๋์ ๋ง์ถค |
layout_constraintTop_toTopOf | ๋ทฐ์ ์์ชฝ ์ฌ์ด๋๋ฅผ ๋์ ๋ทฐ์ ์์ชฝ ์ฌ์ด๋์ ๋ง์ถค |
layout_constraintTop_toBottomOf | ๋ทฐ์ ์์ชฝ ์ฌ์ด๋๋ฅผ ๋์ ๋ทฐ์ ์๋์ชฝ ์ฌ์ด๋์ ๋ง์ถค |
layout_constraintBottom_toTopOf | ๋ทฐ์ ์๋์ชฝ ์ฌ์ด๋๋ฅผ ๋์ ๋ทฐ์ ์์ชฝ ์ฌ์ด๋์ ๋ง์ถค |
layout_constraintBottom_toBottomOf | ๋ทฐ์ ์๋์ชฝ ์ฌ์ด๋๋ฅผ ๋์ ๋ทฐ์ ์๋์ชฝ ์ฌ์ด๋์ ๋ง์ถค |
layout_constraintBaseLine_toBaselineOf | ๋ทฐ์ ํ ์คํธ Baseline์ ๋์ ๋ทฐ์ ํ ์คํธ Baseline์ ๋ง์ถค |
layout_constraintStart_toEndOf | ๋ทฐ์ ์์ ์ฌ์ด๋๋ฅผ ๋์ ๋ทฐ์ ๋ ์ฌ์ด๋์ ๋ง์ถค |
layout_constraintStart_toStartOf | ๋ทฐ์ ์์ ์ฌ์ด๋๋ฅผ ๋์ ๋ทฐ์ ์์ ์ฌ์ด๋์ ๋ง์ถค |
layout_constraintEnd_toStartOf | ๋ทฐ์ ๋ ์ฌ์ด๋๋ฅผ ๋์ ๋ทฐ์ ์์ ์ฌ์ด๋์ ๋ง์ถค |
layout_constraintEnd_toEndOf | ๋ทฐ์ ๋ ์ฌ์ด๋๋ฅผ ๋์ ๋ทฐ์ ๋ ์ฌ์ด๋์ ๋ง์ถค |
layout_goneMarginLeft | ๋ทฐ ์์ ฏ์ ์ผ์ชฝ ์ฌ์ด๋ ๋์ ๋ทฐ๊ฐ View.GONE ์ํ์ผ ๋ ์ฌ๋ฐฑ ์ค์ |
layout_goneMarginTop | ๋ทฐ ์์ ฏ์ ์ ์ฌ์ด๋ ๋์ ๋ทฐ๊ฐ View.GONE ์ํ์ผ ๋ ์ฌ๋ฐฑ ์ค์ |
layout_goneMarginRight | ๋ทฐ ์์ ฏ์ ์ค๋ฅธ์ชฝ ์ฌ์ด๋ ๋์ ๋ทฐ๊ฐ View.GONE ์ํ์ผ ๋ ์ฌ๋ฐฑ ์ค์ |
layout_goneMarginBottom | ๋ทฐ ์์ ฏ์ ์๋์ชฝ ์ฌ์ด๋ ๋์ ๋ทฐ๊ฐ View.GONE ์ํ์ผ ๋ ์ฌ๋ฐฑ ์ค์ |
layout_goneMarginStart | ๋ทฐ ์์ ฏ์ ์์ ์ฌ์ด๋ ๋์ ๋ทฐ๊ฐ View.GONE ์ํ์ผ ๋ ์ฌ๋ฐฑ ์ค์ |
layout_goneMarginEnd | ๋ทฐ ์์ ฏ์ ๋ ์ฌ์ด๋ ๋์ ๋ทฐ๊ฐ View.GONE ์ํ์ผ ๋ ์ฌ๋ฐฑ ์ค์ |
layout_constraintHorizontal_bias | ์ํ ๋ฐฉํฅ(Left/Right || Start/End) ์ฌ์ด๋ ์ ์ฝ์, ์ ์ฌ์ด๋ ๊ฐ ์์น ๋น์จ |
layout_constraintVertical_bias | ์์ง ๋ฐฉํฅ(Top/Bottom) ์ฌ์ด๋ ์ ์ฝ ์, ์ ์ฌ์ด๋ ๊ฐ ์์น ๋น์จ |
layout_constraintCircle | ์ํ ์์น ์ง์ ์ ์ฌ์ฉ๋ ๋์ ๋ทฐ ID ์ง์ |
layout_constraintCircleRadius | ์ํ ์์น ์ง์ ์, ๋ทฐ ์์ ฏ๊ณผ ๋์ ๋ทฐ ์์ ฏ ์ค์ฌ ์ฌ์ด์ ๊ฑฐ๋ฆฌ |
layout_constraintCircleAngle | ์ํ ์์น ์ง์ ์, ์ ๋๋ ์์ ๋ทฐ ์์ ฏ์ด ๋ฐฐ์น๋ ๊ฐ๋ |
โ RelativeLayout
๋ ์ด์์ ๋ด์ ์์(Children) ๋ทฐ ์์ ฏ๋ค์ด ์๋ก ๊ฐ์ ์๋์ (Relative) ์์น ๊ด๊ณ์ ๋ฐ๋ผ
์ต์ข ์ ์ผ๋ก ํ์๋ ์์ญ์ ๊ฒฐ์ ํ๋๋ก ๋ง๋๋ ๋ ์ด์์
๏ผ๋ฐฐ์น ๊ด๋ จ ์์ฑ ๊ฐ์ ์ฃผ์ง ์์์ฑ๋ก ๋ทฐ์์ ฏ์ ์ถ๊ฐํ๋ฉด, RelativeLayout์ (Left,Top)์ ํ์๋๋ค. // ๋ช๊ฐ๋ ์ค๋ฒ๋ฉ.
โ RelativeLayout ์์ฑ ๋ฐ ์ค๋ช
์์ฑ | ์ค๋ช | |
๋ทฐ์ ๊ธฐ์ค ๋ทฐ์ ์๋์ ์์น ( ๋ค์ of ๊ฐ ๋ถ์ด์๋, above/ below ์๊ธด ์๋ค.) |
layout_toLeftOf | ๋ทฐ๋ฅผ ๊ธฐ์ค ๋ทฐ์ ์ผ์ชฝ์ ๋ฐฐ์น |
layout_above | ๋ทฐ๋ฅผ ๊ธฐ์ค ๋ทฐ์ ์์ ๋ฐฐ์น | |
layout_toRightOf | ๋ทฐ๋ฅผ ๊ธฐ์ค ๋ทฐ์ ์ค๋ฅธ์ชฝ์ ๋ฐฐ์น | |
layout_below | ๋ทฐ๋ฅผ ๊ธฐ์ค ๋ทฐ์ ์๋์ ๋ฐฐ์น | |
layout_toStartOf | ๋ทฐ๋ฅผ ๊ธฐ์ค ๋ทฐ์ ์์์ ๋ฐฐ์น | |
layout_toEndOf | ๋ทฐ๋ฅผ ๊ธฐ์ค ๋ทฐ์ ๋์ ๋ฐฐ์น | |
๋ทฐ์ ๋ถ๋ชจ ๋ทฐ์ ์๋์ ์์น (alignParent~ ์์ผ๋ก ๋ ์ด๋ฆ centervertical/horizontal ๋ ์๊ธด ์๋ค.) |
layout_alignParentLeft | ๋ทฐ๋ฅผ ๋ถ๋ชจ ์์ญ ๋ด์์ ์ผ์ชฝ์ ๋ฐฐ์น |
layout_alignParentTop | ๋ทฐ๋ฅผ ๋ถ๋ชจ ์์ญ ๋ด์์ ์์ชฝ์ ๋ฐฐ์น | |
layout_alignParentRight | ๋ทฐ๋ฅผ ๋ถ๋ชจ ์์ญ ๋ด์์ ์ค๋ฅธ์ชฝ์ ๋ฐฐ์น | |
layout_alignParentBottom | ๋ทฐ๋ฅผ ๋ถ๋ชจ ์์ญ ๋ด์์ ์๋์ชฝ์ ๋ฐฐ์น | |
layout_centerHorizontal | ๋ทฐ๋ฅผ ๋ถ๋ชจ ์์ญ ๋ด์์ ๊ฐ๋ก ๋ฐฉํฅ ๊ฐ์ด๋ฐ์ ๋ฐฐ์น | |
layout_centerVertical | ๋ทฐ๋ฅผ ๋ถ๋ชจ ์์ญ ๋ด์์ ์ธ๋ก ๋ฐฉํฅ ๊ฐ์ด๋ฐ์ ๋ฐฐ์น | |
layout_centerInParent | ๋ทฐ๋ฅผ ๋ถ๋ชจ ์์ญ ๋ด์์ ์ ์ค์์ ๋ฐฐ์น | |
layout_alignParentStart | ๋ทฐ๋ฅผ ๋ถ๋ชจ ์์ญ ๋ด์์ ์์ ์ง์ ์ ๋ฐฐ์น | |
layout_alignParentEnd | ๋ทฐ๋ฅผ ๋ถ๋ชจ ์์ญ ๋ด์์ ๋ ์ง์ ์ ๋ฐฐ์น | |
๋ทฐ์ ???์ชฝ ๊ณผ ๊ธฐ์กด ๋ทฐ์ ???์ชฝ์ ๋ง์ถ๊ธฐ (align ~์์ ์ด๋ฆ) |
layout_alignLeft | ๋ทฐ์ ์ผ์ชฝ์ ๊ธฐ์กด ๋ทฐ์ ์ผ์ชฝ์ ๋ง์ถค |
layout_alignTop | ๋ทฐ์ ์์ชฝ์ ๊ธฐ์กด ๋ทฐ์ ์์ชฝ์ ๋ง์ถค | |
layout_alignRight | ๋ทฐ์ ์ค๋ฅธ์ชฝ์ ๊ธฐ์กด ๋ทฐ์ ์ค๋ฅธ์ชฝ์ ๋ง์ถค | |
layout_alignBottom | ๋ทฐ์ ์๋์ชฝ์ ๊ธฐ์กด ๋ทฐ์ ์๋์ ๋ง์ถค | |
layout_alignBaseline | ๋ทฐ์ ํฐํธ ๊ธฐ์ค์ ์ ๊ธฐ์ค ๋ทฐ์ ํฐํธ ๊ธฐ์ค์ ์ ๋ง์ถค |
↓ ConstraintLayout ์ constraint๋ผ๊ณ , RelativeLayout์ relative
- constraint์์๋ parent๋ ๋งค์นํ๊ณ ์ถ์ผ๋ฉด "parent"๋ผ๋ ์์ผ๋ก ๊ฐ์ ์ฃผ๋๋ฐ, relative์์๋ "true"/"false" ๊ฐ์ ์ค๋ค.
- realative์์๋ ๋ทฐ์ ๊ธฐ์ค๋ทฐ ์ฌ์ด์ below, above๋ผ๋๊ฒ ์ฐ์ธ๋ค. (constraint์๋ below๋ above๊ฐ ๋ค์ด๊ฐ๋๊ฒ ์๋ค. )
๋๊ฐ์ง ๋ชจ๋๋ฅผ ์ฌ์ฉํ ํ, constraint layout์ด ์ข๋ ํธ๋ฆฌ ํ๋ค.
- constraint์์ Left_toLeftOf="parent", ํ๊ณ Right_toRightOf="parent"ํ๋ฉด ์ ์์ ์ก์ ๋น๊ธฐ๋ ํ์ฒ๋ผ ์์ฉํด์ ํด๋น ๋ทฐ๋ ๊ฐ๋ก ์ถ ๊ธฐ์ค center์ ์์นํ๊ฒ ๋๋ค.
- relative ์์ align ์์ฑ์ ํด๋น ์ฌ์ด๋ ์์ญ์ ๋๋ํ ๋ฐฐ์น ์ํค๋ ์๋ฏธ.constraint์์ side constraint ํน์ฑ์ ๋จ์ algin ์ํค๋ ์๋ฏธ๋ ์๋๋ค. ๊ฐ side ์์ญ์ ์ ์ํ๋ ์๋ฏธ๊น์ง ๊ฐ์ง๊ณ ์๋ค.RelativeLayout์ ์ฑ๋ฅ๋ฉด์์ ์ฐ์ํ์ง๋ง View ๋ฐฐ์น ์์ฑ์ด ๋ง๊ณ ๋ณต์กํ๋ค๋ ๋จ์ ์ด ์๋ค.
- constraint๋ ๋ค๋ฅธ ๋ ์ด์์๋ค์ ๋นํด์ ๋ ์ข๋ค. ๋ ๋น ๋ฅด๊ณ , ์ฝ๊ณ , ์ ์ฐํ๊ณ , ์์ดํ ์ด ์ฌ๋ผ์ง๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ , ๋ค๋ฅธ ํ๋ฉด ์ ํ์ ๋ ์ ๋ถํฉํ๋ฉฐ ๊ธด ์ค์ฒฉ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ง ์๋๋ค.
- constraint์์๋ ๊ธฐ์กด์ Relative์์ ๋ถ๊ฐ๋ฅํ๋ ๋ทฐ๊ฐ์ ์ํธ๊ด๊ณ ์ ์๊ฐ ๊ฐ๋ฅํ๋ค. LinearLayout์ ์จ์ผ๋ง ํ๋ ๋ทฐ ๋น์จ ์กฐ์ ๋ ๊ฐ๋จํ๊ฒ ๊ฐ๋ฅํ๋ค.(depth ๊น์ด์ง๋ ๊ฒ ๋ฐฉ์ง)
- ๋ทฐ ๊ณ์ธต์ ๊ฐ๋จํ๊ฒ ๊ตฌ์ฑํ์ฌ ์ ์ง๋ณด์, ์ฑ๋ฅ ํฅ์
- ๊ตฌ๊ธ์ด ๊ธฐ์กด์ ๋ง์ layout ๊ธฐ๋ฅ์ ๋ ์ด์ ์ฌ์ฉํ์ง ์์
โ ConstraintLayout ์ฌ์ฉํด์ App View ๋ชจ๋ฐฉํ๊ธฐ
<?xml version="1.0" encoding="utf-8"?>
<!--suppress AndroidElementNotAllowed -->
<ScrollView
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:orientation="vertical"
android:layout_height="wrap_content">
<androidx.constraintlayout.widget.ConstraintLayout
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="wrap_content"
tools:ignore="RedundantNamespace">
<ImageView
android:id="@+id/imageView"
android:layout_width="100dp"
android:layout_height="30dp"
app:srcCompat="@drawable/logo"
tools:layout_editor_absoluteX="2dp"
tools:layout_editor_absoluteY="6dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
tools:ignore="ContentDescription" />
<ImageButton
android:id="@+id/imageButton1"
android:layout_width="30dp"
android:layout_height="30dp"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/person"
tools:ignore="ContentDescription" />
<ImageButton
android:id="@+id/imageButton2"
android:layout_width="30dp"
android:layout_height="30dp"
app:srcCompat="@drawable/ic_search_black_24dp"
app:layout_constraintRight_toLeftOf="@id/imageButton1"
app:layout_constraintTop_toTopOf="parent"
tools:layout_editor_absoluteX="307dp"
tools:layout_editor_absoluteY="13dp"
tools:ignore="ContentDescription,VectorDrawableCompat" />
<ImageButton
android:id="@+id/imageButton3"
android:layout_width="30dp"
android:layout_height="30dp"
app:srcCompat="@drawable/ic_videocam_black_24dp"
app:layout_constraintRight_toLeftOf="@id/imageButton2"
app:layout_constraintTop_toTopOf="parent"
tools:layout_editor_absoluteX="288dp"
tools:layout_editor_absoluteY="2dp"
tools:ignore="ContentDescription,MissingConstraints,VectorDrawableCompat" />
<ImageButton
android:id="@+id/imageButton4"
android:layout_width="30dp"
android:layout_height="30dp"
app:layout_constraintRight_toLeftOf="@id/imageButton3"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_cast_connected_black_24dp"
tools:layout_editor_absoluteX="258dp"
tools:ignore="ContentDescription,VectorDrawableCompat" />
<ImageButton
android:id="@+id/imageButton5"
android:layout_width="25dp"
android:layout_height="25dp"
app:srcCompat="@drawable/musiclogo"
app:layout_constraintTop_toBottomOf="@id/imageView"
app:layout_constraintLeft_toLeftOf="parent"
tools:layout_editor_absoluteX="4dp"
tools:layout_editor_absoluteY="34dp"
tools:ignore="ContentDescription,MissingConstraints" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="25dp"
android:text="Music app"
android:textSize="7dp"
app:layout_constraintLeft_toRightOf="@id/imageButton5"
app:layout_constraintTop_toBottomOf="@id/imageView"
tools:layout_editor_absoluteX="37dp"
tools:layout_editor_absoluteY="29dp"
tools:ignore="HardcodedText,SpUsage" />
<ImageButton
android:id="@+id/imageButton7"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_marginLeft="10dp"
app:srcCompat="@drawable/ic_movie_black_24dp"
app:layout_constraintLeft_toRightOf="@id/button"
app:layout_constraintTop_toBottomOf="@id/imageView"
tools:layout_editor_absoluteX="193dp"
tools:layout_editor_absoluteY="34dp"
tools:ignore="ContentDescription,RtlHardcoded,VectorDrawableCompat" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="25dp"
android:text="Originals"
android:textSize="7dp"
app:layout_constraintLeft_toRightOf="@+id/imageButton7"
app:layout_constraintTop_toBottomOf="@id/imageView"
tools:layout_editor_absoluteX="134dp"
tools:layout_editor_absoluteY="23dp"
tools:ignore="HardcodedText,SpUsage" />
<FrameLayout
android:id="@+id/frame01"
android:layout_width="match_parent"
android:layout_height="200dp"
app:layout_constraintTop_toBottomOf="@id/imageButton5"
>
<VideoView
android:id="@+id/videoView"
android:layout_width="match_parent"
android:layout_height="200dp"
tools:layout_editor_absoluteX="189dp"
tools:layout_editor_absoluteY="194dp" />
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_marginBottom="10dp"
android:layout_marginEnd="8dp"
android:background="#111111"
android:text=" 20:52 "
android:textColor="#ffffff"
tools:ignore="HardcodedText,RtlCompat" />
</FrameLayout>
<ImageButton
android:id="@+id/imageButton8"
android:layout_width="25dp"
android:layout_height="25dp"
app:srcCompat="@drawable/uploader"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginTop="5dp"
app:layout_constraintTop_toBottomOf="@id/frame01"
tools:layout_editor_absoluteX="6dp"
tools:layout_editor_absoluteY="258dp"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/textView2"
android:layout_width="330dp"
android:layout_height="wrap_content"
android:text=" ENG SUB) ๋ณด์ด PICK ์ฐ ๋ง์ง (feat.๋น๋ฃก ๋ธ๊ธ) ์ถฉ๊ฒฉ๊ณผ ๋ฐ์ ์ ์ํธ๋ช
? [๋ฌด์์ด๋ ๋ฌผ์ด๋ณด์ด 66ํ]"
android:textColor="#111111"
android:layout_marginTop="3dp"
app:layout_constraintTop_toBottomOf="@id/frame01"
app:layout_constraintLeft_toRightOf="@id/imageButton8"
android:layout_marginLeft="5dp"
tools:layout_editor_absoluteX="36dp"
tools:layout_editor_absoluteY="269dp"
tools:ignore="HardcodedText,RtlHardcoded" />
<ImageButton
android:id="@+id/imageButton9"
android:layout_width="25dp"
android:layout_height="25dp"
app:srcCompat="@drawable/ic_more_vert_black_24dp"
app:layout_constraintTop_toTopOf="@+id/textView2"
app:layout_constraintRight_toRightOf="parent"
tools:layout_editor_absoluteX="347dp"
tools:layout_editor_absoluteY="254dp"
tools:ignore="ContentDescription,VectorDrawableCompat" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="MYSTIC TV"
android:textSize="10dp"
app:layout_constraintLeft_toLeftOf="@id/textView2"
app:layout_constraintTop_toBottomOf="@id/textView2"
tools:layout_editor_absoluteX="32dp"
tools:layout_editor_absoluteY="296dp"
tools:ignore="HardcodedText,SpUsage" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="์กฐํ์ 4.7์ฒํ"
android:textSize="10dp"
android:layout_marginLeft="5dp"
app:layout_constraintLeft_toRightOf="@id/textView3"
app:layout_constraintTop_toBottomOf="@id/textView2"
tools:layout_editor_absoluteX="32dp"
tools:layout_editor_absoluteY="296dp"
tools:ignore="HardcodedText,RtlHardcoded,SpUsage" />
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1์ผ ์ "
android:textSize="10dp"
android:layout_marginLeft="5dp"
app:layout_constraintLeft_toRightOf="@id/textView4"
app:layout_constraintTop_toBottomOf="@id/textView2"
tools:layout_editor_absoluteX="32dp"
tools:layout_editor_absoluteY="296dp"
tools:ignore="HardcodedText,RtlHardcoded,SpUsage" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="30dp"
android:layout_height="30dp"
app:srcCompat="@drawable/logo2"
tools:layout_editor_absoluteX="3dp"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
app:layout_constraintTop_toBottomOf="@id/textView5"
app:layout_constraintLeft_toLeftOf="parent"
tools:layout_editor_absoluteY="331dp"
tools:ignore="ContentDescription,HardcodedText,RtlHardcoded,SpUsage"/>
<TextView
android:id="@+id/textView7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="YouTube๋ก #์ง์์ํจ๊ป๋ผ์ด๋ธ๋ด์"
android:textColor="#000000"
app:layout_constraintTop_toTopOf="@id/imageView2"
app:layout_constraintLeft_toRightOf="@id/imageView2"
android:layout_marginLeft="10dp"
tools:layout_editor_absoluteX="37dp"
tools:layout_editor_absoluteY="327dp"
tools:ignore="HardcodedText,RtlHardcoded,SpUsage"/>
<TextView
android:id="@+id/textView8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" ์ถ์ฒ "
android:textColor="#ffffff"
android:textSize="13dp"
android:background="@color/colorBlue"
android:layout_marginTop="5dp"
app:layout_constraintTop_toBottomOf="@id/textView7"
app:layout_constraintLeft_toLeftOf="@id/textView7"
tools:layout_editor_absoluteX="34dp"
tools:layout_editor_absoluteY="345dp"
tools:ignore="HardcodedText,RtlHardcoded,SpUsage"/>
<ImageButton
android:id="@+id/imageButton10"
android:layout_width="25dp"
android:layout_height="25dp"
app:srcCompat="@drawable/ic_more_vert_black_24dp"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/textView8"
tools:layout_editor_absoluteX="350dp"
tools:layout_editor_absoluteY="320dp"
tools:ignore="ContentDescription,VectorDrawableCompat" />
<VideoView
android:id="@+id/videoView2"
android:layout_width="130dp"
android:layout_height="75dp"
app:layout_constraintLeft_toLeftOf="@id/imageView2"
app:layout_constraintTop_toBottomOf="@id/textView8"
android:layout_marginTop="15dp"
tools:layout_editor_absoluteX="38dp"
tools:layout_editor_absoluteY="378dp" />
<TextView
android:id="@+id/textView9"
android:layout_width="110dp"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="@id/videoView2"
android:layout_marginTop="3dp"
app:layout_constraintTop_toBottomOf="@id/videoView2"
android:text="HONNE- no song without you live stream"
android:textSize="9dp"
android:textColor="#111111"
tools:layout_editor_absoluteX="11dp"
tools:layout_editor_absoluteY="455dp"
tools:ignore="HardcodedText,RtlHardcoded,SpUsage"/>
<TextView
android:id="@+id/textView10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="@id/videoView2"
app:layout_constraintTop_toBottomOf="@id/textView9"
android:text="H O N N E"
android:textSize="8dp"
tools:layout_editor_absoluteX="11dp"
tools:layout_editor_absoluteY="455dp"
tools:ignore="HardcodedText,SpUsage" />
<TextView
android:id="@+id/textView11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="@id/videoView2"
app:layout_constraintTop_toBottomOf="@id/textView10"
android:text="์กฐํ์ 37๋งํ ์คํธ๋ฆฌ๋ฐ..."
android:textSize="7dp"
tools:layout_editor_absoluteX="11dp"
tools:layout_editor_absoluteY="455dp"
tools:ignore="HardcodedText,SpUsage" />
<ImageButton
android:id="@+id/imageButton11"
android:layout_width="12dp"
android:layout_height="12dp"
app:layout_constraintRight_toRightOf="@id/videoView2"
app:layout_constraintTop_toTopOf="@id/textView9"
app:srcCompat="@drawable/ic_more_vert_black_24dp"
tools:layout_editor_absoluteX="123dp"
tools:layout_editor_absoluteY="452dp"
tools:ignore="ContentDescription,VectorDrawableCompat" />
<VideoView
android:id="@+id/videoView3"
android:layout_width="130dp"
android:layout_height="75dp"
app:layout_constraintLeft_toRightOf="@id/videoView2"
android:layout_marginLeft="15dp"
app:layout_constraintTop_toBottomOf="@id/textView8"
android:layout_marginTop="15dp"
tools:layout_editor_absoluteX="38dp"
tools:layout_editor_absoluteY="378dp"
tools:ignore="RtlHardcoded" />
<TextView
android:id="@+id/textView12"
android:layout_width="110dp"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="@id/videoView3"
android:layout_marginTop="3dp"
app:layout_constraintTop_toBottomOf="@id/videoView3"
android:text="OnlyOneOfLive | ๋น์ค๋ ๋ ๋ฐค"
android:textSize="9dp"
android:textColor="#111111"
tools:layout_editor_absoluteX="11dp"
tools:layout_editor_absoluteY="455dp"
tools:ignore="HardcodedText,RtlHardcoded,SpUsage"/>
<TextView
android:id="@+id/textView13"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="@id/videoView3"
app:layout_constraintTop_toBottomOf="@id/textView9"
android:text="OnlyOneOf official"
android:textSize="8dp"
tools:layout_editor_absoluteX="11dp"
tools:layout_editor_absoluteY="455dp"
tools:ignore="HardcodedText,SpUsage" />
<TextView
android:id="@+id/textView14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="@id/videoView3"
app:layout_constraintTop_toBottomOf="@id/textView10"
android:text="์กฐํ์ 22๋งํ ์คํธ๋ฆฌ๋ฐ..."
android:textSize="7dp"
tools:layout_editor_absoluteX="11dp"
tools:layout_editor_absoluteY="455dp"
tools:ignore="HardcodedText,SpUsage" />
<ImageButton
android:id="@+id/imageButton12"
android:layout_width="12dp"
android:layout_height="12dp"
app:layout_constraintRight_toRightOf="@id/videoView3"
app:layout_constraintTop_toTopOf="@id/textView9"
app:srcCompat="@drawable/ic_more_vert_black_24dp"
tools:layout_editor_absoluteX="123dp"
tools:layout_editor_absoluteY="452dp"
tools:ignore="ContentDescription,VectorDrawableCompat" />
<VideoView
android:id="@+id/videoView4"
android:layout_width="130dp"
android:layout_height="75dp"
app:layout_constraintLeft_toRightOf="@id/videoView3"
android:layout_marginLeft="15dp"
app:layout_constraintTop_toBottomOf="@id/textView8"
android:layout_marginTop="15dp"
tools:layout_editor_absoluteX="38dp"
tools:layout_editor_absoluteY="378dp"
tools:ignore="RtlHardcoded" />
<TextView
android:id="@+id/textView15"
android:layout_width="110dp"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="@id/videoView4"
android:layout_marginTop="3dp"
app:layout_constraintTop_toBottomOf="@id/videoView4"
android:text="[sub] Liveํ๋ฒ์ | 99์ฆ์ '๋ฏธ๋์ ํ๋ผ์' ๋ฐด๋..."
android:textSize="9dp"
android:textColor="#111111"
tools:layout_editor_absoluteX="11dp"
tools:layout_editor_absoluteY="455dp"
tools:ignore="HardcodedText,SpUsage" />
<TextView
android:id="@+id/textView16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="@id/videoView4"
app:layout_constraintTop_toBottomOf="@id/textView9"
android:text="์ฑ๋ ์ญ์ค์ผ"
android:textSize="8dp"
tools:layout_editor_absoluteX="11dp"
tools:layout_editor_absoluteY="455dp"
tools:ignore="HardcodedText,SpUsage" />
<TextView
android:id="@+id/textView17"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="@id/videoView4"
app:layout_constraintTop_toBottomOf="@id/textView10"
android:text="์กฐํ์ 199๋งํ 3์ฃผ์ "
android:textSize="7dp"
tools:layout_editor_absoluteX="11dp"
tools:layout_editor_absoluteY="455dp"
tools:ignore="HardcodedText,SpUsage" />
<ImageButton
android:id="@+id/imageButton13"
android:layout_width="12dp"
android:layout_height="12dp"
app:layout_constraintRight_toRightOf="@id/videoView4"
app:layout_constraintTop_toTopOf="@id/textView9"
app:srcCompat="@drawable/ic_more_vert_black_24dp"
tools:layout_editor_absoluteX="123dp"
tools:layout_editor_absoluteY="452dp"
tools:ignore="ContentDescription,VectorDrawableCompat" />
<FrameLayout
android:id="@+id/frame02"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_marginTop="10dp"
app:layout_constraintTop_toBottomOf="@id/textView17"
>
<VideoView
android:id="@+id/videoView5"
android:layout_width="match_parent"
android:layout_height="200dp"
tools:layout_editor_absoluteX="189dp"
tools:layout_editor_absoluteY="194dp" />
<TextView
android:id="@+id/textView18"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#111111"
android:text=" 20:52 "
android:textColor="#ffffff"
android:layout_gravity="bottom|end"
android:layout_marginBottom="10dp"
android:layout_marginEnd="8dp"
tools:ignore="HardcodedText,RtlCompat" />
</FrameLayout>
<ImageButton
android:id="@+id/imageButton14"
android:layout_width="25dp"
android:layout_height="25dp"
app:srcCompat="@drawable/uploader"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginTop="5dp"
app:layout_constraintTop_toBottomOf="@id/frame02"
tools:layout_editor_absoluteX="6dp"
tools:layout_editor_absoluteY="258dp"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/textView19"
android:layout_width="330dp"
android:layout_height="wrap_content"
android:text=" ENG SUB) ๋ณด์ด PICK ์ฐ ๋ง์ง (feat.๋น๋ฃก ๋ธ๊ธ) ์ถฉ๊ฒฉ๊ณผ ๋ฐ์ ์ ์ํธ๋ช
? [๋ฌด์์ด๋ ๋ฌผ์ด๋ณด์ด 66ํ]"
android:textColor="#111111"
android:layout_marginTop="3dp"
app:layout_constraintTop_toBottomOf="@id/frame02"
app:layout_constraintLeft_toRightOf="@id/imageButton14"
android:layout_marginLeft="5dp"
tools:layout_editor_absoluteX="36dp"
tools:layout_editor_absoluteY="269dp"
tools:ignore="HardcodedText,RtlHardcoded" />
<ImageButton
android:id="@+id/imageButton15"
android:layout_width="25dp"
android:layout_height="25dp"
app:srcCompat="@drawable/ic_more_vert_black_24dp"
app:layout_constraintTop_toTopOf="@+id/textView19"
app:layout_constraintRight_toRightOf="parent"
tools:layout_editor_absoluteX="347dp"
tools:layout_editor_absoluteY="254dp"
tools:ignore="ContentDescription,VectorDrawableCompat" />
<TextView
android:id="@+id/textView20"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="MYSTIC TV"
android:textSize="10dp"
app:layout_constraintLeft_toLeftOf="@id/textView19"
app:layout_constraintTop_toBottomOf="@id/textView19"
tools:layout_editor_absoluteX="32dp"
tools:layout_editor_absoluteY="296dp"
tools:ignore="HardcodedText,SpUsage" />
<TextView
android:id="@+id/textView21"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="์กฐํ์ 4.7์ฒํ"
android:textSize="10dp"
android:layout_marginLeft="5dp"
app:layout_constraintLeft_toRightOf="@id/textView20"
app:layout_constraintTop_toBottomOf="@id/textView19"
tools:layout_editor_absoluteX="32dp"
tools:layout_editor_absoluteY="296dp"
tools:ignore="HardcodedText,RtlHardcoded,SpUsage"/>
<TextView
android:id="@+id/textView555"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1์ผ ์ "
android:textSize="10dp"
android:layout_marginLeft="5dp"
app:layout_constraintLeft_toRightOf="@id/textView21"
app:layout_constraintTop_toBottomOf="@id/textView19"
tools:layout_editor_absoluteX="32dp"
tools:layout_editor_absoluteY="296dp"
tools:ignore="HardcodedText,RtlHardcoded,SpUsage" />
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
โ RealativeLayout ์ฌ์ฉํด์ App View ๋ชจ๋ฐฉํ๊ธฐ
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
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:orientation="vertical"
android:layout_height="wrap_content">
<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">
<ImageView
android:id="@+id/imageView3"
android:layout_width="100dp"
android:layout_height="30dp"
app:srcCompat="@drawable/logo"
tools:ignore="ContentDescription" />
<ImageButton
android:id="@+id/imageButton"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_marginTop="-1dp"
android:layout_marginRight="0dp"
app:srcCompat="@drawable/uploader"
tools:ignore="ContentDescription,RtlHardcoded" />
<ImageButton
android:id="@+id/imageButton1"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentTop="true"
android:layout_toLeftOf="@id/imageButton"
app:srcCompat="@drawable/ic_search_black_24dp"
tools:ignore="ContentDescription,RtlHardcoded,VectorDrawableCompat" />
<ImageButton
android:id="@+id/imageButton2"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentTop="true"
android:layout_toLeftOf="@id/imageButton1"
app:srcCompat="@drawable/ic_videocam_black_24dp"
tools:ignore="ContentDescription,RtlHardcoded,VectorDrawableCompat" />
<ImageButton
android:id="@+id/imageButton3"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentTop="true"
android:layout_toLeftOf="@id/imageButton2"
app:srcCompat="@drawable/ic_cast_connected_black_24dp"
tools:ignore="ContentDescription,RtlHardcoded,VectorDrawableCompat" />
<Button
android:id="@+id/button"
android:layout_marginTop="15dp"
android:layout_marginLeft="7dp"
android:layout_width="180dp"
android:layout_height="40dp"
android:layout_below="@id/imageView3"
android:text="์ธ๊ธฐ"
tools:ignore="HardcodedText,RtlHardcoded" />
<Button
android:id="@+id/button1"
android:layout_marginLeft="7dp"
android:layout_marginStart="20dp"
android:layout_width="180dp"
android:layout_height="40dp"
android:layout_toRightOf="@id/button"
android:layout_alignTop="@id/button"
android:text="์์
"
tools:ignore="HardcodedText,RtlHardcoded" />
<Button
android:id="@+id/button2"
android:layout_marginTop="15dp"
android:layout_marginLeft="7dp"
android:layout_width="180dp"
android:layout_height="40dp"
android:layout_below="@id/button"
android:text="๊ฒ์"
tools:ignore="HardcodedText,RtlHardcoded" />
<Button
android:id="@+id/button3"
android:layout_marginTop="15dp"
android:layout_marginLeft="7dp"
android:layout_width="180dp"
android:layout_height="40dp"
android:layout_marginStart="20dp"
android:layout_toRightOf="@id/button2"
android:layout_below="@id/button1"
android:text="์ํ"
tools:ignore="HardcodedText,RtlHardcoded" />
<Button
android:id="@+id/button4"
android:layout_marginTop="15dp"
android:layout_marginLeft="7dp"
android:layout_width="180dp"
android:layout_height="40dp"
android:layout_below="@id/button2"
android:text="ํ์ต"
tools:ignore="HardcodedText,RtlHardcoded" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:layout_marginLeft="7dp"
android:layout_below="@id/button4"
android:text="์ธ๊ธฐ ๊ธ์์น ๋์์"
android:textColor="#000000"
tools:ignore="HardcodedText,RtlHardcoded" />
<VideoView
android:id="@+id/videoView6"
android:layout_width="wrap_content"
android:layout_height="230dp"
android:layout_marginTop="10dp"
android:layout_below="@+id/textView2"/>
<ImageButton
android:id="@+id/imageButton4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/person"
android:layout_below="@+id/videoView6"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/textView23"
android:layout_width="270dp"
android:layout_height="wrap_content"
android:layout_below="@+id/videoView6"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@+id/imageButton4"
android:text="์ด์ ์ผ ์ ๋๋ก ๋ณด์ฌ์ง๋ AOA ์ง๋ฏผ์ ๊ณผ๊ฑฐ ํ๋๋ค"
android:textColor="#000000"
tools:ignore="HardcodedText,RtlHardcoded" />
<TextView
android:id="@+id/textView24"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ํด๊ตฐ ์๋ฌ ์ฃํธ์ 199๋งํ 1์ผ์ "
android:layout_marginLeft="10dp"
android:textSize="10dp"
android:layout_toRightOf="@+id/imageButton4"
android:layout_below="@+id/textView23"
tools:ignore="HardcodedText,RtlHardcoded,SpUsage" />
<ImageButton
android:id="@+id/imageButton5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/videoView6"
android:layout_marginRight="5dp"
app:srcCompat="@drawable/ic_more_vert_black_24dp"
tools:ignore="ContentDescription,RtlHardcoded,VectorDrawableCompat" />
<VideoView
android:id="@+id/videoView7"
android:layout_width="wrap_content"
android:layout_height="230dp"
android:layout_below="@+id/textView24"
android:layout_marginTop="7dp" />
<TextView
android:id="@+id/textView22"
android:layout_width="450dp"
android:layout_height="55dp"
android:background="#ffffff"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:text=""
tools:ignore="HardcodedText" />
<ImageButton
android:id="@+id/imageButton6"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_marginStart="-1dp"
android:layout_marginBottom="-1dp"
app:srcCompat="@drawable/ic_home_black_24dp"
tools:ignore="ContentDescription,RtlCompat,VectorDrawableCompat" />
<ImageButton
android:id="@+id/imageButton7"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:layout_marginLeft="39dp"
android:layout_toRightOf="@id/imageButton6"
app:srcCompat="@drawable/ic_search_black_24dp"
tools:ignore="ContentDescription,RtlCompat,RtlHardcoded,VectorDrawableCompat" />
<ImageButton
android:id="@+id/imageButton8"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
app:srcCompat="@drawable/ic_subscriptions_black_24dp"
tools:ignore="ContentDescription,RtlCompat,VectorDrawableCompat" />
<ImageButton
android:id="@+id/imageButton9"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:layout_marginLeft="39dp"
android:layout_toRightOf="@id/imageButton8"
app:srcCompat="@drawable/ic_mail_black_24dp"
tools:ignore="ContentDescription,RtlCompat,RtlHardcoded,VectorDrawableCompat" />
<ImageButton
android:id="@+id/imageButton10"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
app:srcCompat="@drawable/ic_video_library_black_24dp"
tools:ignore="ContentDescription,RtlCompat,VectorDrawableCompat" />
</RelativeLayout>
</ScrollView>
โ FrameLayout
- ์์์ Videoview ์์ textview๋ฅผ ๋ณด์ผ ์ ์๊ฒ ํ๊ธฐ ์ํด์, frameLayout์ ์ฌ์ฉํ์๋ค.
- framelayour์ ์ฌ๋ฌ ๊ฐ์ ์์์ ์ถ๊ฐํ๋ฉด, ๊ฐ์ฅ ๋ง์ง๋ง์ ์ถ๊ฐ๋ ๋ทฐ๊ฐ ์ ค ์ ๋ฉด์ ํ์๋๋ค.
<์ฐธ๊ณ ์๋ฃ>
// ์คํฌ๋กค ๋ทฐ
// ์์ ๋ฐ ์์ ๋ณ๊ฒฝ
https://xopenpro.tistory.com/21
// ์ฑ๋ฐ ์ญ์
'Android' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Android::LifeCycle ํ์ฉํ์ฌ App๋ง๋ค๊ธฐ (0) | 2020.07.21 |
---|---|
Android::Awesome UI (0) | 2020.07.14 |
Android:: TableLayout ๊ณผ GridLayout์ ์ฐจ์ด์ ๊ณ์ฐ๊ธฐ View ๋ง๋ค๊ธฐ (0) | 2020.07.07 |
Android::Layout (1) | 2020.07.02 |
Android::Manifest (1) | 2020.07.01 |
๋๊ธ