레이아웃(Layout)을 동적으로 생성 해보자(1)
레이아웃(Layout)을
동적으로 생성 해보자(1)
ㆍ레이아웃을 생성하는 방법에는 총 3가지 방법이 있습니다.
ㆍxml으로만 생성하는 방법이 있습니다.
(정적 레이아웃, static layout)
ㆍ코드로만 생성하는 방법이 있습니다.
(동적 레이아웃, dynamic layout)
ㆍ그리고 이 둘을 섞어서 생성하는 방법이 있습니다
방법은 총
3가지가 있으나
선택하는 것은
개발자마음입니다.
성능에서도
차이가 있다고는
하는데 솔직히
눈에 띄지도
않는정도입니다.
xml로만 레이아웃을
구성하게 되면
아무래도 관리하기가
편리합니다.
동적생성으로만
레이아웃을
구성하게 되면
xml에 비해 속도가
빠르고 유연하게
코드를 짤 수 있습니다
뭐 단점을 각각 보자면
xml로만 구성하면
앱의 기능중에
조금이라도 UI변화가
생기면 처리해야하는
부분에 있어서 아무래도
동적으로 생성했을때보다
번거로운점이 있습니다.
동적생성의 단점은
프로젝트가 커지고
화면을 구성하는 뷰가
많아졌을때 관리하기가
상당히 까다롭습니다.
아무리 개발자가 표시를
잘해둔다고 해도
xml로 관리하는것에 비하면
상당히 뒤떨어집니다.
이런 장단점때문에
보통 기본틀은
xml로 잡고 안의
세부 위젯들은 동적으로
생성들을 많이 합니다.
그럼
동적생성 그 첫번째로
Hello World를
3가지 방법을 통해서
찍어보겠습니다.
1. XML로 Hello World
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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="com.tistory.itpangpang.myapplication.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
</LinearLayout>
뭐 딱히 수정할 부분도 없습니다.
2. XML + 코드로 Hello World
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/ll"
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"
android:orientation="vertical"
tools:context="com.tistory.itpangpang.myapplication.MainActivity">
</LinearLayout>
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout ll = (LinearLayout)findViewById(R.id.ll);
TextView tv = new TextView(this);
tv.setText("Hello World");
ll.addView(tv);
}
}
전체레이아웃만
xml 잡아놓고
코드에서 레이아웃에
들어가는 자식위젯을
추가해서 화면에 띄어줍니다
3.코드로 Hello World
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
LinearLayout ll = new LinearLayout(this);
TextView tv = new TextView(this);
tv.setText("Hello World");
ll.addView(tv);
setContentView(ll);
}
}
여기도 뭐 그리 어려운부분은 없습니다
LinearLayout이건 TextView건
new를 통해서 생성해준 후에
addView를 통해서 부모뷰에
자식뷰를 올리고
마지막에 setContentView로
화면에 띄어주면 됩니다.
제대로 따지자면 아직
Width, Height 속성들을
안넣어서 100% 같다고
할 수는 없지만
원리는 대충 이런식입니다
다음글에서
Layoutparams을 포함해서
보다 꼼꼼하게 동적으로
생성하는 방법을 알아보겠습니다.
'안드로이드(android) > 레이아웃(Layout)' 카테고리의 다른 글
동적레이아웃(DynamicLayout) - Margin, Padding (0) | 2016.10.10 |
---|---|
동적레이아웃(DynamicLayout) - Orientation (0) | 2016.10.10 |
동적레이아웃(DynamicLayout) - width, height (2) | 2016.10.09 |
RelativeLayout 기본 (1) | 2016.04.13 |
1.LinearLayout - 1편 (0) | 2016.03.19 |