Android App

Fragment 전환, layout, activity 전환 in Android Studio

YunSeong 2021. 7. 13. 03:04
728x90
반응형

 

1. 네비게이션 메뉴 바

https://www.youtube.com/watch?v=stwCk_f3sCw

 

화면 하단의 네비게이션 바와 fragment를 이용해서 여러 앱에서 볼 수 있는 앱의 구조를 만들 수 있었다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
BottomNavigationView bottomNavigationView;
 
bottomNavigationView = findViewById(R.id.NavigationId);
 
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
  @Override
  public boolean onNavigationItemSelected(@NonNull @NotNull MenuItem item) {
      switch (item.getItemId()) {
          case R.id.ItemId_1:
                
              break;
          case R.id.ItemId_2:
                
              break;
          case R.id.ItemId_3:
                
              break;
          case R.id.ItemId_4:
                
              break;
          case R.id.ItemId_5:
                
              break;
      }
}
cs

 

위와 같은 코드를 통해서 Navigation 바에서 선택된 item에 대한 정보를 얻을 수 있다. 각각 case에 원하는 Fragment를 불러오는 코드를 넣는다면 자연스러운 앱이 될 것이다. 

 

Fragment를 불러오기 위해서는 FragmentManager과 그것에 의해서 얻을 수 있는 FragmentTransaction을 이용해야 한다. 

 

FragmentManager은 getSupportFragmentManager()이 반환하고 변수에 담아서 사용하면 편하다. 

그리고 FragmentManager.beginTransaction()이 FragmentTransaction을 반환한다. 

 

그것은 Fragment를 .add(), .replace(), .remove()를 이용해서 추가, 교체, 삭제를 할 수 있다. 

1
2
3
4
5
6
7
8
FragmentManager fm;
FragmentTransaction ft;
 
fm = getSupportFragmentManager();
ft = fm.beginTransaction();
 
ft.replace(R.id.FrameLayoutId, fragment);
ft.commit();
cs

 

위와 같은 코드를 통해서 fragment를 FrameLayout에 띄울 수 있다. 

 

 

그리고 fragment를 얻기 위해서는 xml을 파일을 fragment로 실현시켜야하는데 그것을 도와주는 것이 

inflater이다. 

 

 

1
2
3
4
5
6
7
8
9
public class Frag extends Fragment {
    private View view;
 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
 
        return inflater.inflate(R.layout.frag, container, false);
    }
}
 
cs

inflater을 이용한 위와 같은 class를 통해서 xml을 파일을 fragment를 반환받을 수 있다. 

 

그래서 new Frag()를 이용해서 다른 java파일에서 fragment 불러왔다. 

 


 

2. 레이아웃

https://youtu.be/5SS3Xm3y_8g

layout의 종류에는 

RelativeLayout

TableLayout

GridLayout

FrameLayout

LinearLayout

가 있다. 

 


relativeLayout는

android:layout_alignParentTop=""

android:layout_centerHorizontal=""

android:layout_alignParentTop=""

등의 코드를 통해서 상대적으로 위젯들을 배치하는 layout이다. 

 


TableLayout는

위젯들을

<TableRow     

     />  사이에 작성해서 위젯들을 배치한다. 

그리고

android:layout_span="n"를 이용해서 (n)칸을 통합시킬 수도 있고

android:layout_column="n"을 이용해서 (n-1)번째 칸에 배치할 수도 있다.

 


GridLayout은 

TableLayout이랑 비슷하지만 

더 코드가 복잡하고 더 섬세하게 위젯들을 배치할 수 있다. 

먼저

android:layout_columnCount="",

android:layout_rowCount=""를 이용하여 열과 행의 수를 정할 수 있고 

위젯 태그 안에서

android:layout_column="", 

android:layout_row=""을 이용하여 위치를 정할 수 있고 

android:layout_rowSpan="",

android:layout_column=""을 이용하여 확장시킬 수 있다. 

(android:layout_gravity=""도 활용해야 한다.)

 


 

LinearLayout은

android:orientation="" 어느 방향으로 정렬될지 정할 수 있고

그 방향대로 위젯들이 정렬되는 것이다.


 

3. 애플리케이션 화면 디자인, 액티비티 화면 전환

https://youtu.be/f7_ORwhSx2E

https://youtu.be/5ZMVRKis1eI

액티비티 전환을 위해서는 Intent를 활용해야 한다. 

 

1
2
Intent intent = new Intent(Activity_A.this, ActivityName.class);
startActivity(intent);
cs

위 코드를 통해서 밑의 코드와 같이 이름이 ActivityName인 class의 

onCreate함수에 의해서 R.layout.(layoutXML파일 이름)으로 찾은 activity를 띄울 수 있다. 

 

 

1
2
3
4
5
6
7
8
public class ActivityName extends Activity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.ActivityXMLName);
    }
}
cs

 

 

 

 

 

여기서 빠트리기 쉬운 부분이 있는데 바로 app\manifests\AndroidManifest.xml에 activity를 추가해주는 것이다. 

 

1
2
3
4
5
<application
                ...
 
        <activity android:name=".ActivityName"></activity>
    </application>
cs

 

위와 같이 <activity>를 만들어주면 정상적으로 실행이 될 것이다. 

 

 

 

 

728x90
반응형