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 절차

  1. feature 브랜치에서 기능 완성
  2. develop 브랜치에서 pull해서 conflict확인
  3. conflict가 발생 했을 시 해결 후 다시 commit
  4. 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>

 

 

+ Recent posts