안드로이드 스튜디오 Activity와 Fragment의 차이
Activity
앱이 실행되면 첫 번째로 호출되는 컴포넌트,
화면 전체를 차지하며, 모든 UI 요소를 포함한다
vs
Fragment
ex) 태블릿의 두 패널 화면(왼쪽 목록, 오른쪽 상세 보기), 탭 뷰의 각 탭 등.
Activity 내에서 부분적으로 UI를 구성할 수 있는 재사용 가능한 컴포넌트
Activity의 하위 컴포넌트로, 여러 Fragment를 조합하여 하나의 Activity를 구성한다.
화면의 일부만을 차지하며, 여러 Fragment가 하나의 Activity 내에서 동시 작동할 수 있다.
Fragment는 자신의 수명 주기를 가지지만, 이는 Activity의 수명 주기에 종속된다.
Flutter : 원소스 멀티유저란 ?
- Flutter는 구글에서 개발한 오픈소스 UI 소프트웨어 개발 키트(SDK)
- 하나의 소스코드로 다양한 플랫폼에서 애플리케이션을 개발할 수 있도록 도와준다
- '원소스 멀티유저'는 Flutter의 핵심 철학 중 하나
원소스 멀티유저
단일 코드베이스로 iOS, Android, 웹, 데스크탑 등 다양한 플랫폼에서 동작하는 애플리케이션을 개발
별도의 코드를 작성할 필요 없이, 하나의 코드로 여러 환경에 배포할 수 있다.
또한 플랫폼 간의 UI와 동작의 일관성을 유지할 수 있다.
탭 바(Tab Bar) 구현하기
라이브러리 설치하기
activity_main에 RelativeLayout 끌어다놓고, Constraint 연결해준다
BottomNavigationView를 검색한 후, RelativeLayout 안에 넣고, layout_height를 wrap_content로 설정한다.
BottomNavigationView 의 layout_alignParentBottom을 true로 해준다.
BottomNavigationView 의 background를 하얀색으로 설정해준다.
폴더 모양 밑에 있는 Resource Manager를 클릭해주고, Navigation으로 이동한다.
+ 버튼을 누르고 Navigation Resource File을 선택한다.
이름은 my_nav로 하였다.
패키지로 만들어서 파일 생성해도 된다
나타나는 화면에서 아래와 동일한 아이콘을 선택하여 Create new destination을 클릭한다
빈 프레임워크를 선택하였다.
같은 방식으로, 2개 더 만들어준다.
마우스로 조정 가능하다.
다시 activity_main으로 와서 NavHostFragment를 RelativeLayout안에 넣어준다.
resource의 layout 폴더의 fragment_first로 이동해서,
TextView 클릭하고,
layout_height를 wrap_content로 설정하고, 텍스트와 텍스트사이즈를 변경해준다
resource 폴더에서 마우스 오른쪽 클릭으로, menu 폴더를 만들어주고
그 menu 폴더 안에 bottom_menu라는 메뉴 파일을 만들어준다
bottom_menu 파일에서, 아이템을 세개 끌어다 놓고,
아이디 설정과 title, icon 설정을 해준다. 아이콘은 아래의 웹사이트에서 다운받는다.
home, smartdisplay , settings 아이콘 다운받고 drawable 폴더에 넣는다.
https://fonts.google.com/icons
Material Symbols and Icons - Google Fonts
Material Symbols are our newest icons consolidating over 2,500 glyphs in a single font file with a wide range of design variants.
fonts.google.com
activity_main으로 이동해서, bottomNavigationView를 클릭한 후 menu를 검색하여 오른쪽 부분을 클릭한다
아래와 같이 bottom menu 탭 바가 만들어졌다.
글자 안나오고 아이콘만 나오게 하려면 unlabeled 하면 된다.
탭 바를 누르면 fragment를 동작하게 만드는 방법
MainActivity.java 클래스로 이동하여서 작성해준다.
package com.~.tabbar;
import android.os.Bundle;
import android.view.MenuItem;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import com.google.android.material.bottomnavigation.BottomNavigationItemView;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.android.material.navigation.NavigationBarView;
public class MainActivity extends AppCompatActivity {
BottomNavigationView bottomNavigationView;
// 각각의 프레그먼트들을 멤버변수로 만든다.
Fragment firstFragment;
Fragment secondFragment;
Fragment thirdFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bottomNavigationView = findViewById(R.id.bottomNavigationView);
firstFragment = new FirtstFragment();
secondFragment = new SecondFragment();
thirdFragment = new ThirdFragment();
bottomNavigationView.setOnItemSelectedListener(new NavigationBarView.OnItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
int itemId = menuItem.getItemId();
//비어 있는 프레그먼트 만든다
Fragment fragment = null;
if(itemId == R.id.firstFragment){
fragment = firstFragment;
} else if(itemId == R.id.secondFragment){
fragment = secondFragment;
} else if(itemId == R.id.thirdFragment){
fragment = thirdFragment;
}
return loadFragment(fragment);
}
});
}
boolean loadFragment(Fragment fragment){
if(fragment != null){
getSupportFragmentManager().beginTransaction().replace(R.id.fragment, fragment).commit();
return true;
} else {
return false;
}
}
}
탭 버튼 아이콘 색 바꾸기
아래 블로그를 참고한다.
https://lcw126.tistory.com/330
안드로이드 BottomNavigationView ( icon, text 색상 변경 )
BottomNavigationView 사용을 위해 라이브러리를 추가해줍니다. Gradle dependencies { implementation 'com.android.support:design:29.0.0' // bottomNavigationView } activity_main.xml에 사용을 합니다. ( menu는 미리 이름을 작성했
lcw126.tistory.com
'Android' 카테고리의 다른 글
안드로이드 스튜디오에서 구글 맵 사용하기 (0) | 2024.06.18 |
---|---|
안드로이드 스튜디오 GPS 기능으로 지도에 마커 추가하기 (0) | 2024.06.18 |
사진을 포스팅하는 어플리케이션(App) 개발하기 (0) | 2024.06.17 |
(안드로이드 스튜디오) 카메라 촬영 사진 업로드 권한 설정, 이미지 업로드하는 기능 만들기 (2) | 2024.06.14 |
(android studio 안드로이드 스튜디오) AlertDialog 팝업창 쉽게 만드는 방법 (0) | 2024.06.14 |