728x90
프로젝트 개요
- 프로젝트 명 : 119해조
- 팀명에서 착안한 아이디어로 응급실 연락처를 확인하는 연락처 앱.
앱 전체기능
- 연락처 추가
- 다이얼로그사용
- 탭 레이아웃 사용
- 추가 구현 목록
- 이벤트 기능 - 5분뒤 알림, 10분뒤 알림
연락처 리스트
- 연락처 리스트 출력
- 좋아요 기능
- 2가지 아이템 뷰타입으로 리사이클러뷰 활용
- 지역별로 아이템을 정렬해서 Sticky Header를 사용해 카테고리 표시
- 추가 구현 목록
- 리사이클러 뷰타입 변경 기능
- Swipe to Action 기능
- 핸드폰 연락처 연동
상세 정보
- 연락처 리스트에서 데이터를 받아 뷰에 출력
- 전화걸기 버튼
- 즐겨찾기 버튼
- 위치정보 표시
마이페이지
- 사용자 정보 표시
- 사용자이름
- 사용자 번호
- 혈액형
- 지역
- 즐겨찾기한 병원
Convention
Branch - 간소화시킨 git flow (HOTFIX, Release X)
- main
- develop
- feature
- feature/기능-이름
.(마침표) or 공백 사용시 -사용
--사용금지, 마지막에 -사용금지
Commit
- Title[UI] 디자인 추가[Refactor] 프로덕션 코드 리팩토링
- [Docs] 문서 수정 (Read me)
- [Fix] 버그 픽스
- [Feat] 새로운 기능 추가
ex) git commit -m “ [Feat] : add recycler view”
Commit 절차
- feature 브랜치에서 기능 완성
- develop 브랜치에서 pull해서 conflict확인
- conflict가 발생 했을 시 해결 후 다시 commit
- push후 pull request 오픈
1일차 viewPager 와 tab 연결시키기
MainActivity
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private lateinit var viewPagerAdapter: ViewPagerAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
//뷰페이저 어뎁터 연결
viewPagerAdapter = ViewPagerAdapter(this@MainActivity)
with(binding) {
//어뎁터 연결
viewPager.adapter = viewPagerAdapter
//탭, 뷰페이저 연결
TabLayoutMediator(tabLayout, viewPager) { tab, position ->
when (position) {
0 -> tab.text = "연락처"
else -> tab.text = "내정보"
}
}.attach()
}
}
}
ViewPagerAdapter
class ViewPagerAdapter(private val mainActivity: MainActivity):FragmentStateAdapter(mainActivity) {
override fun getItemCount() = 2
override fun createFragment(position: Int): Fragment {
return when(position){
0->{
MainFragment() //연락처 페이지
}
1->{
MyPageFragment() //마이 페이지
}
else->throw IllegalStateException("포지션 에러")
}
}
}
activity.xml
<?xml version="1.0" encoding="utf-8"?>
<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="match_parent"
tools:context=".MainActivity">
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@id/tabLayout"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabLayout"
android:layout_width="0dp"
app:tabSelectedTextColor="@color/black"
app:tabTextAppearance="@style/tab_text"
app:tabIndicatorColor="#ED1E79"
app:tabRippleColor="#ED1E79"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
<androidx.fragment.app.FragmentContainerView
android:id="@+id/container"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
tab의 text는 style로 변경시켜줘야 함
styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="tab_text" parent="TextAppearance.Design.Tab">
<item name="android:textSize">18sp</item>
<item name="android:textStyle">bold</item>
</style>
</resources>