공부일지

231206 (Android)

CD가참둥그렇다 2023. 12. 6. 13:47

메뉴 리소스

  • id, icon, showAsAction, title 요소를 가져야 한다.
  • showAsAction 종류
    • never : 아이템 표시 x
    • ifRoom : 표시 공간이 있다면 표시
    • withText : 글자와함께 표시
    • always : 항상 보이기
  • 하단 네비게이션 바 만들기
<com.google.android.material.bottomnavigation.BottomNavigationView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:labelVisibilityMode="labeled"
        app:itemIconTint="@drawable/btm_nav_selector"
        app:itemTextColor="@drawable/btm_nav_selector"
        app:menu="@menu/btm_nav_menu"/>
//뒤의 물결은 itemBackground 속성으로 색을 바꿀 수 있다.

뷰 결합(View Binding)

  • 레이아웃 파일 내부에 있는 자원을 자바의 객체 형태로 바꿔 귀찮음
  • findViewById과정을 생략하고 싶을 때 사용
  • xml 레이아웃 자체를 전부 바인딩 클래스로 미리 생성을 해둔다.(android)
  • 바인딩 인스턴스를 생성하여 내부에서 사용 가능한 객체를 만듬. ( LayoutInflater )
  • <xml> ↔ 바인딩 인스턴스 클래스 연결
  • 순서
    1. Build.gradle(module)에서 뷰바인딩 사용을 명시한다.
    viewBinding{
            enable=true
        }
    
    1. 액티비티 자바 파일에서 초기화 하고, contentview를 binding.getRoot()로 바꿔준다.
    ActivityMainBinding binding = ActivityMainBinding.inflate(getLayoutInflater());
    setContentView(binding.getRoot());
    

nav의 setOnItemSelectedListener

  • onclicklistener와 유사하지만 클릭만으로 제어하기 힘든 경우 사용한다.
  • 둘은 파라메터로 받는 타입이 다르다.

액션바

  • 이전 안드로이드 버전들에서는 액션바를 많이 활용한다.
  • 현재는 액션바 커스텀이 귀찮기 때문에 비슷한 구조의 레이아웃을 만들고 사용한다.
  • 테마에서 NoActionbar를 주면 없앨 수 있다.
  • 그 외에는 getSupportActionbar라는 메소드로 액션바 접근이 가능하다.

이미지 둥글게 처리하기

  1. CardView를 이용한 방법
    • 이미지뷰를 카드뷰 내에 넣고 스케일 타입을 centerCrop으로 바꾼다.
    • 높이 너비는 match
    • 카드뷰에 이비지를 어떤 사이즈로 보여줄지 넣어주고 radius를 둥글게 만든다.
  2. CircleImageView(외부 라이브러리 활용)
  3. 이미지를 그냥 둥글게 편집

바인딩을 사용한 리사이클러 뷰 만들기

public class CDViewHolder extends RecyclerView.ViewHolder {
        ItemFriendRecvBinding binding;
        public CDViewHolder(@NonNull ItemFriendRecvBinding binding) {
            super(binding.getRoot());
            this.binding = binding;

        }
    }

public CDViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        ItemFriendRecvBinding binding = ItemFriendRecvBinding.inflate(inflater, parent, false);
        return new CDViewHolder(binding);
    }