본문 바로가기

안드로이드

데이터 바인딩 표현식 실제 사용하면서 겪은 사례 모음집 -삼항연산자 문자열을 비교하고싶을때 여기서 equals 함수 안쓰고 ==쓰면 이미지 뷰같은거에서는 안먹힘 그냥 다 false로 되어서 GONE처리됨 근데또 view에서는 먹힘 이상함 그니까 그냥 equals 함수쓰자 여기서 또 신박한 방법 type로 지정해서 문자열을 넣어줄수있다. 문자열 을 타입으로 받아서 쓰기!! class HomeMyStatusMode { companion object{ const val REST = "REST" const val DONE = "DONE" const val NONE = "NONE" } } 이렇게 companion object 만들고 xml 에서는 이렇게 type 으로 가져온다 다음 equals에 넣어놓은것처럼 변수처럼 사용하면 문자열이 들어간다. 결론 문자열을 사용할.. 더보기
Object Animator 사용법!! 애니메이션의 대략적인 사용처에 대한 정리글을 작성했는데 거기서 가장 1빠로 내가 현재 당장 사용중인 Object Animator에 대해 사용법을 정리해보려한다. Object Animator의 용도와 특징은 앞전에 글에서 정리했었다 간단하게만 짚고 넘어가보자면안드로이드의 Animator객채내에 속해있으며 원래는 아주 간단한것은 View property Animator를 사용하고또 복잡한거는 Value animator를 사용해야하지만 사실상 간단한거도 그냥 Object Animator 사용해도되고 왠만한 내가 원하는 복잡한것도 다 Object Animator로 처리가 가능하다 사실 진짜 뿌슝빠슝 애니메이션은 로티로 처리해야지 개발자한테 하라고하면 그건좀 인간적으로 너무하다고 생각한다.(대부분의 개발자들이 그.. 더보기
안드로이드 애니메이션에 대한 전반적인 정리(추후 업데이트 예정) 스파크를 진행하며 애니메이션에대한 필요성을 느끼고 연주의 도움을 받아 애니메이션을 적용해 보았다. 애니메이션이 앱의 완성도를 많이 올려줄수있다는 것에 애니메이션을 제대로 공부해보고자 했는데 안드로이드에서 제공하는 애니메이션의 종류가 너무많아 이번 글에서는 전반적인것들을 정리하고 추후에 종류별로 필요한것들의 사용법을 자세히 정리하면서 넘어갈 예정이다. 우선 오늘은 개론같이 대략적인 정리이다. 애니메이션을 안드로이드에서 다루는 방법은 많다 Animator,Animated Vector Drawable,physics,Transitions Api,MotionLayout 등등이 있다 현재는 Animator에 관련된 것들만 사용해봤고 추후에 사용하고 공부하는대로 업데이트 해나갈 예정이다. 이제 각각 살펴보자. 1.A.. 더보기
Diffutil 에 대한 정리 diffutill은 예전에 솝트 과제에서 사용했었지만 그때는 코드를 긁어와서 넣기만했지 이해도는 거의 없었다. 사실근데 따지고들면 코드 그냥 긁어와서 사용하는게 맞기는하다 그래도 어느정도는 이해가 필요하고 변형을 해야하기 때문에 정리해보겠다. 우선 이론적인걸 조금 집고 넘어가보자 diffutil은 RecyclerView에 표현할 데이터를 업데이트하기 위해 주로 사용하는 notifyDataSetChanged()를 대체하기위해서 사용하는것이다. notifyDataSetChanged()를 사용하면, Adapter에게 RecyclerView의 데이터가 바뀌었으니 모든 항목을 통째로 업데이트를 하라는 신호를 보낸다. 이 방법은 모든 데이터를 다시 그리기 때문에 굉장히 비효율적이다. 고로 변경된 데이터에 한해서만 .. 더보기
activity와 fragment에서 백버튼 처리하기 Activity 액티비티 내에서는 그냥 onbackpressed를 오버라이딩 해버리면된다 override fun onBackPressed() { super.onBackPressed() //하고싶은거 하면됨 } fragment 백버튼을 커스텀해서 사용하고싶을때 onBackPressed를 오버라이딩 해서 사용한다. 근데 프래그먼트에는 이런 콜백메서드가 없다(액티비티에만 있다) 그래서 backpress이벤트에 대처하기위해 Androidx 패키지의 OnBackPressedDispatcher() 를 사용한다 사용법을 보자면 class SetPurposeFragment : BaseFragment(R.layout.fragment_set_purpose) { private lateinit var callback: OnB.. 더보기
base fragment,activity 예시 package com.spark.android.ui.base import android.os.Bundle import androidx.annotation.LayoutRes import androidx.appcompat.app.AppCompatActivity import androidx.databinding.DataBindingUtil import androidx.databinding.ViewDataBinding abstract class BaseActivity( @LayoutRes private val layoutRes: Int ) : AppCompatActivity() { protected lateinit var binding: T override fun onCreate(savedInstanceStat.. 더보기
리사이클러뷰 ItemDecoration 대체하기 지금 바빠서 간단히 기록하지만 나중에 다시 자세히 작성하겠다. 원래 리사이클러뷰 간격 문제로 ItemDecoration을 써야하는거로 알고있었다 하지만 숫자 값을 넣어주면 막 px값이라dp로 변환해야하고 막 난리 부르스였다. 그때 연주가 나타나서 신박하고 좋은 방법을 제시해주었다. item에 paddingTop로 내가 원하는 간격만큼 주고 이렇게 되면 마지막에 padding이 안잡히는 부분은 리사이클러뷰 자체로 가서 paddingBottom을 주고 마지막에 clipToPadding 속성을 false로 주면 리사이클러뷰 마지막에 padding이 16dp 가 걸려 원래 원하던 바를 이룰수있다 . 진짜 너무너무 좋다 연주는 천재인거같다. 원래 사용하던 ItemDecoration 요거에서 offset값 조절해주.. 더보기
예전부터 궁금했던 parcelize 로 액티비티간 객체 교환에 대한 것을 파헤쳐보자 + as 로 캐스팅하기 예전부터 난 객체를 액티비티간에 옮기고 싶었다 물론 이제 다른 아이디어들도 새록새록 떠오르지만 어찌됐건간에 이러한 데이터 이동에 관한 방법을 고찰해본것을 적어놓아야겠다. 우선 객체를 putExtra로 옮기는 방법은 Parcelize,Serializable,Parcelable가 있다. 앞전꺼는 옛날기술이고 뭐 좋은지도 모르니 직접써보고 좋다는 Parcelize 사용법을 살펴보겠다 https://yuuj.tistory.com/211 [Android][Kotlin] Intent로 Class 값 넘기기 (Parcelize, Serializable, Parcelable 차이) 액티비티간 Intent로 값 넘기기 (클래스) FirstActivity에서 SecondActivity로 값을 넘겨주고 싶을때 intent를.. 더보기