문제 1.
[①] 디자인 및 화면 구성을 최대한 동일하게 해주세요. (사이즈 및 여백도 최대한 맞춰주세요.) ✨[⑦] 상품 데이터는 dummy data 를 사용합니다. (더미 데이터는 자유롭게 추가 및 수정 가능)[⑤] RecyclerViewer를 이용해 리스트 화면을 만들어주세요.[⑤-①] 상단 툴바를 제거하고 풀스크린 화면으로 세팅해주세요. (상태바(시간/배터리 표시하는 최상단바)는 남기고)[②] 상품 이미지는 모서리를 라운드 처리해주세요.[③] 상품 이름은 최대 두 줄이고, 그래도 넘어가면 뒷 부분에 …으로 처리해주세요.- [①] 뒤로가기(BACK)버튼 클릭시 종료하시겠습니까? [확인][취소] 다이얼로그를 띄워주세요.
- [ ] 상단 종모양 아이콘을 누르면 Notification을 생성해 주세요. (예시 비디오 참고)
[⑥] 상품 가격은 1000단위로 콤마(,) 처리해주세요.[④] 상품 아이템들 사이에 회색 라인을 추가해서 구분해주세요.- [ ] 상품 선택시 아래 상품 상세 페이지로 이동합니다.
- [ ] 상품 상세페이지 이동시 intent로 객체를 전달합니다. (Parcelize 사용)
1. 다이얼로그
- 사용자에게 결정을 내리거나 추가정보를 입력하라는 메시지를 표시하는 작은 창
- AlertDialog클래스를 사용하면 여러 가지 대화 상자 디자인을 빌드
- 알림창의 아이콘, 제목, 내용을 지정하는 함수
- setIcon()
- setTitle()
- setMessage()
- 알림창의 버튼을 지정하는 함수
- setPositiveButton(버튼의 문자열, 버튼 클릭 시 이벤트) : 긍정
- setNegativeButton(버튼의 문자열, 버튼 클릭 시 이벤트) : 부정
- setNeutralButton(버튼의 문자열, 버튼 클릭 시 이벤트) : 중립
- 버튼 클릭 시 처리내용 없으면 null
- 버튼은 최대 3개까지 추가
2. OnBackPressedCallback()
- OnBackPressed
- 엑티비티에서 뒤로 가기 버튼에 대한 행동을 제어할 때 사용
- API 33 부터 미사용 > OnBackPressedCallback 사용 권고
- OnBackPressedCallback() 사용법
private val callback = object : OnBackPressedCallback(true){
override fun handleOnBackPressed() {
//뒤로가기 이벤트 처리
}
}
..
onBackPressedDispatcher.addCallback(this, callback)
//호출
① 뒤로가기(BACK)버튼 클릭시 종료하시겠습니까? [확인][취소] 다이얼로그를 띄우기
class MainActivity : AppCompatActivity() {
private val callback = object : OnBackPressedCallback(true){
override fun handleOnBackPressed() {
val builder = AlertDialog.Builder(this@MainActivity)
//context: 추상객체(사용되는 곳에서 상태가 바뀜) = 정의된 게 없어 직접 연결
builder.setTitle("종료")
builder.setMessage("정말 종료하시겠습니까?")
builder.setIcon(R.drawable.baseline_av_timer_24)
val listener = DialogInterface.OnClickListener { dialog, whice ->
if (whice == DialogInterface.BUTTON_POSITIVE) {
//버튼 식별자
finish()
}
}
builder.setPositiveButton("확인", listener)
builder.setNegativeButton("취소", null)
builder.show()
}
}
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
...
onBackPressedDispatcher.addCallback(this, callback)
}
}
'연습장 > 실습' 카테고리의 다른 글
5주차_ 짝퉁마켓 앱 5. FloatingActionButton (플로팅 버튼) (0) | 2024.04.17 |
---|---|
5주차_ 짝퉁마켓 앱 4. Parcelize 데이터 전달 (0) | 2024.04.16 |
5주차_ 짝퉁마켓 앱 1. RecyclerView (0) | 2024.04.15 |
Basic 4주차_ 1-2. 생명 주기(Lifecycle) (0) | 2024.04.15 |
Basic 4주차_ 1-1. 생명 주기(Lifecycle) (0) | 2024.04.12 |