인스타그램 같은 어플을 보면 아래로 스와이프 한 후 컨텐츠를 새로고침 해야할 때가 있다. 그럴 때 아주 유용한 레이아웃이다. 1. 아래와 같이 새로고침 하고자 하는 뷰를 SwipeRefreshLayout으로 감싸준다. 2. 뷰의 SwipeRefreshLayout을 변수에 저장한 후 setOnRefreshListener를 호출해서 함수를 실행한다. setColorSchemeResources는 돌아가는 동그라미의 배경 색과 동그라미 색을 정하는 코드이다. val listSwipeRefreshLayout = fragmentView.fragment_home_list_swipe_layout listSwipeRefreshLayout.setOnRefreshListener { getReviews() updateLayo..
App
간단하게 알럿 다이얼로그를 이용해서 로딩 중을 만드는 방법이다. 1. ProgressBar를 포함한 간단한 레이아웃을 만든다. 2. 다이얼 로그를 여러 곳에서 이용하기 위해 클래스와 함수로 만들어준다. class Dialog(private val context: Context) { private val view: View? = LayoutInflater.from(context).inflate(R.layout.alert_dialog_progressbar, null) private val builder = AlertDialog.Builder(context) private val dialog: AlertDialog = builder .setCancelable(false) .setView(view) .creat..
유튜브, 인스타그램과 같은 게시글들을 보면 게시글에 몇 년전,,, 몇 달전, 몇 일전 등등과 같이 표기되어 있다. 자바의 기본 라이브러리를 활용해 이와 같은 기능을 만드는 함수의 소스코드이다. 같은 인턴하시는 분께서 java.time의 라이브러리들을 이용해 뚝딱 만드셨다... ㄷㄷ createAt에서 createAt값을 가진 LocalDateTime 객체를 생성하고 now에서 현재 값을 생성한 후 ChronoUnit으로 값을 계산한 후 리턴한다. class TimeStamp{ fun timestampToString(createdAtDate: Date): String { val createdAt = LocalDateTime.ofInstant(createdAtDate.toInstant(), ZoneId.sy..
뷰페이저의 가장 상위 자식의 layout_width, layout_height의 크기가 match_parent가 아닐 때 나타나는 오류이다. android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" 생각보다 간단한 오류인데 해결하는데 애먹었다...
안드로이드 앱을 개발하다 보면 각 분기에 따라서 팝업을 띄워줘야 할 때가 있다. 간단하게 코드로 보자 fun onClickActivitySelectedPhoto(view: View) { val photoDialog = AlertDialog.Builder(this) val items = arrayOf("카메라", "앨범") photoDialog.setTitle("사진을 추가할 방법을 선택해주세요") photoDialog.setItems(items, DialogInterface.OnClickListener { dialog, which -> when (items[which]) { "카메라" -> { startActivityForResult( ImagePicker.cameraOnly().getIntent(thi..
override fun onOptionsItemSelected(item: MenuItem): Boolean { return super.onOptionsItemSelected(item) } 아이템 선택 시 아이템을 이용한 옵션 설정(메인 액티비티나 프래그먼트) override fun onCreateOptionsMenu(menu: Menu?): Boolean { menuInflater.inflate(R.menu.menu_share, menu) return super.onCreateOptionsMenu(menu) } 옵션 메뉴 생성(메인 액티비티나 프래그먼트) private fun setOnClickPopUpMenu(view: View, context: Context, review: Review) { val ..