Android

특정 팝업이나 공지사항 알림 등 앱을 개발할 때 여러 목적으로 항목을 표시하는 인디케이터를 사용할 때가 많다. 실습으로는 코드상에서 ImageView를 생성하여 추가한 후 LinearLayout에 추가하여 목적에 따라 구현하였다. 사용된 이미지와 인디케이터 drawable과 selector, dimen xml Fragment, Dialog에 적용할 때도 많으나 실습으로는 Activity에서 진행하였다. class IndicatorActivity : AppCompatActivity() { lateinit var indicatorContainer: LinearLayout //인디케이터를 표시할 LinearLayout lateinit var contentsContainer: LinearLayout //내용을 ..
RecyclerView를 사용하는 가장 기본적인 구성은 옆과 같이 가로나 세로로 1열로 정렬하는 형태일 것이다. (LinearLayoutManager) 구현 의도에 따라 필요에 따라 열(Row)마다 차지하는 Column 갯수가 다르게 해야 하는 경우가 있다. 이처럼 차지하는 Column 갯수가 다르게 하고 싶을때 GridLayoutManager의 SpanSizeLookup함수를 사용한다 아래코드는 화면 값을 구해 특정 영역을 뺀 값을 계산 후 Adapter 내에서 data를 통해 position 값으로 return 하는 값을 분기하여 받아 온 후 spansize를 구해 지정해 주는 코드 val currentWidth = getDeviceWidth(context) - (mActivity.resources...
· Android/Util
무엇인가 로딩을 할때 띄워줄 로딩 프로그레스이다. Animation을 사용해 Image를 Rotate 한다. class ContentsLoadingProgress { companion object { const val LOADING_SCREEN_TAG = "contents_loading_screen" val mContentViewHashMap: HashMap = HashMap() @JvmStatic @JvmOverloads /** * @param touchable = 콘텐츠 로딩화면 뒤에 터치되지 않게 설정 */ fun showProgress(key: String, activity: Activity, touchable: Boolean = false) { if(mContentViewHashMap.conta..
현재 날짜 시스템 currentTimeMillis로 현재 날짜와 시간을 구하고 Date로 만듬 val date = Date(System.currentTimeMillis()) DateFormat으로 년도 월 일 시 분 초로 원하는 형식(중간에 기호 등)으로 출력 가능 ("yyyy/MM/dd HH:mm:ss") 시간을 표시할 때 HH 면 24시 기준 hh면 12 기준이다 val sdfCurrent = SimpleDateFormat("yyyyMMddHHmm") String으로 변환 val formatDate: String = sdfCurrent.format(date) 사용 취지에 맞게 long이나 int로 변환하여 사용 (년도에서 분까지 쓰게되면 long 추천 - 자료값 범위 때문 val currentDate..
android:backgroundTint : 버튼 색을 변경 android:src : 버튼 안에 아이콘 넣을 때 사용 app:pressedTranslationZ: 버튼 클릭 시 그림자 범위 app:elevation : 액티비티 바닥부터 버튼까지의 높이 visibility 속성을 사용해 특정 플로팅 액션 버튼을 눌렀을 때 가시성을 켜주거나 애니메이션을 주어 나타내는 효과를 줄 수 있다. 실습해본 애니메이션으로는 메인 버튼을 눌렀을 때 다른 버튼이 올라가고 내려가는 애니메이션을 사용하였다. 올라가는 animation 내려가는 animation 이러한 애니메이션을 사용해 플로팅 버튼을 클릭해 프래그먼트를 변경하는 실습을 해보았다. class FloatingBtnActivity : AppCompatActivit..
RecyclerView 사용시 수정된 데이터를 다시 뿌려주기 위해서 notifyDataSetChanged()를 사용해 화면을 다시 갱신을 시킬 경우가 많다. 화면을 갱신시키는데 깜빡임 현상 때문에 고정되어있는 데이터들도 깜빡거려 안 좋게 보일 수가 있다. Kotlin val animator = recyclerHome?.itemAnimator //리사이클러뷰 애니메이터 get if (animator is SimpleItemAnimator){ //아이템 애니메이커 기본 하위클래스 animator.supportsChangeAnimaions = false //애니메이션 값 false (리사이클러뷰가 화면을 다시 갱신 했을때 뷰들의 깜빡임 방지) } Java RecyclerView.ItemAnimator anim..
리사이클러뷰의 맨 첫 번째 또는 마지막 요소에서 스크롤(오버스크롤)할 경우 엣지 스크롤 이펙트가 적용되어 있다. 요구사항으로 인해 이펙트를 숨겨야 하는 상황이 있을수도 있다. 검색해보면, 대부분 리사이클러뷰에 android:overScrollMode="never" 속성을 적용하면 해결할 수 있다고 나와있다. 실제로 이 속성만 추가해주면 해당 이펙트는 사라진다. 하지만 오버스크롤 모드가 비활성화 되기 때문에, 오버스크롤이 필요한 경우에는 적용하기에 부적절한 방법이다. 그래서 오버스크롤 모드가 필요한 경우에 아래와 같은 방법으로 해주면 된다. (주의 - 다른 사이드이펙트가 발생할 수 있음) Kotlin recyclerView.edgeEffectFactory = object : RecyclerView.Edge..
AnimationDrawable - Drawables을 애니메이션화 하는 방법은일련의 Drawble Resource를 차례로 Load하여 Animation을 만드는 것 - 이는 한 통의 필름처럼 일련의 여러 다른 Image를 순서대로 재생하여 만드는 기본 Animation - AnimationDrawable 클래스는 Drawable Animation의 기초이다. 연습용 Image 파일 Animation-List 생성 XML 파일은 루트 노드인 animation-list 요소 이제 움직일 Image들을 순서대로 넣어준다(item) (실행 시 순서대로 움직임) animation-list에다 android:oneshot="true"를 추가하면 한 번만 순환한 다음 마지막 프레임에서 정지된 상태 유지 andro..
OnClickListener를 상속받는 새 클릭 리스너를 생성한다. class OnSingleClickListener(private val onSingleClick: (View) -> Unit) : View.OnClickListener { companion object { const val CLICK_INTERVAL = 500 } private var lastClickedTime: Long = 0L private fun isSafe(): Boolean { return System.currentTimeMillis() - lastClickedTime > CLICK_INTERVAL } override fun onClick(v: View?) { if (isSafe() && v != null) { onSingle..
bumjae
'Android' 카테고리의 글 목록 (6 Page)