본문 바로가기 메뉴 바로가기

코모스튜디오

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

코모스튜디오

검색하기 폼
  • 분류 전체보기 (273)
    • 코모 어플리케이션즈 (68)
      • 말하는 알람 시계 (42)
      • 말하는 일상 카운터 (3)
      • 말하는 타이머 스톱워치 (1)
      • 말하는 시계 (13)
      • SpeakingAlarmClock (0)
      • 번갯불 (2)
      • 빠른 손전등 (2)
      • 일정 브리핑 알람 (2)
    • [안드로이드 공부] (181)
      • 코틀린 (7)
      • 선플라워 디비보기 (6)
      • 안드로이드 스튜디오 (29)
      • 프리퍼런스 (11)
      • 안드로이드 공부 (30)
      • 프래그먼트 (7)
      • 동기화 (12)
      • 액티비티 (8)
      • UI (47)
      • 미디어 (2)
      • 알림 (8)
      • 서비스 (3)
      • 애드 (9)
      • 테스트 (1)
    • [애플] (0)
    • [IT 뉴스] (18)
      • 모바일 (10)
      • 과학 (5)
      • 인터넷 (3)
    • [엔터테이먼트] (1)
      • 영화 (1)
    • 기타 (2)
  • 방명록

안드로이드 (197)
viewpager 사용 시 하단 영역을 벗어날 경우

위와 같이 아래 영역을 넘어가게 되어 하단에 버튼등을 고정 시킬 경우 보이지 않는 문제가 발생한다. 1. viewpager의 marginBottom="?actionBarSzie" 로 하게 될 경우 버튼은 보이지만 스크롤 할 경우 같이 올라가며 하단 빈 영역이 보이게 된다. 2. Tab과 CollapsingToolbarLayout 를 사용 할 경우 다른 레이아웃으로 감싸주면 스크롤 범위가 영역과 맞아져저 해결은 되지만, 탭의 구성이 찌그러지게 된다. 즉, CoordinatorLayout 아래 다른 레이아웃으로 감싸면 안됨. 3. 원인은 app:layout_behavior="@string/appbar_scrolling_view_behavior" 뷰 페이저의 스크롤링을 적용했기 때문에 하단으로 더 길게 스크롤..

[안드로이드 공부]/UI 2020. 12. 23. 16:04
fragment container view does not have a NavController set

아래 코드를 navController = Navigation.findNavController(this, R.id.fragment_navi_dashboard_host); 요렇게 바꾸어야 함 NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager() .findFragmentById(R.id.fragment_navi_dashboard_host); NavController navController = navHostFragment.getNavController();

[안드로이드 공부]/UI 2020. 9. 23. 20:08
Resources$NotFoundException: File res

벡터 문제도 아니고, xml 문제도 아니고, gradle 문제도 아니면, context 문제다. Drawable drawable = ContextCompat.getDrawable(getApplicationConetxt(), R.drawable.ic_arrow_back_white_24dp); 아래와 같이 this 로 바꿔야 한다. Drawable drawable = ContextCompat.getDrawable(this, R.drawable.ic_arrow_back_white_24dp);

[안드로이드 공부]/UI 2020. 9. 8. 16:52
smart cast to is impossible because is a mutable property that could have been changed by this time

변경될 수 있는(mutable/var) 타입을 캐스팅 할 경우 문제가 생긴다. 이 경우에는 val 불변 타입으로 새로운 변수에 할당 한 뒤에 캐스팅을 해야 한다. private val plantDetailViewModel: PlantDetailViewModel by viewModels { InjectorUtils.providePlantDetailViewModelFactory(requireActivity(), args.plantId) } val binding = DataBindingUtil.inflate( inflater, R.layout.fragment_plant_detail, container, false ).apply { viewModel = plantDetailViewModel //error bea..

[안드로이드 공부]/코틀린 2020. 8. 7. 17:54
[Sunflower 디비보기] BindingAdapter로 View visible/gone

Data Binding으로 View와 직접 데이터를 연결 해 놓으면, 네트워크, DB, 다른 View의 변경 작업만으로 해당 뷰가 사라지고 나타나게 할 수 있다. 자동으로 작업이 되게 하려면 View 는 observe 작업을 통해 viewModel -Model 과의 연결을 해 놓아야 한다. 식물 리스트에서 나의 정원으로 담기를 해 놓은 것이 없다면, 리사이클러 뷰를 아예 보여주지 않는다. @BindingAdapter("isGone") fun bindIsGone(view: View, isGone: Boolean) { view.visibility = if (isGone) { View.GONE } else { View.VISIBLE } } Android AAC JetPack Sunflower 이 글은 코모가 ..

[안드로이드 공부]/선플라워 디비보기 2020. 7. 30. 12:02
[Sunflower 디비보기] Detail View 에서 Garden 으로 아이템 담기 MVVM

2개의 탭이 있으며, 좌측에는 나의 정원, 우측에는 식물 리스트가 있다. 여러 종류의 식물들이 있는 식물 리스트에서 식물을 하나 선택하면 그 식물의 Detail View로 간다. DetailView에서 나의 정원으로 담기를 누를 경우 선택된 식물이 나의 정원에 담기는데, 이 일련의 과정(MVVM)들의 흐름을 알아본다. View layout 은 데이터 바인딩을 사용하고 viewModel을 통해 View를 업데이트하고, callback을 등록해서 add 버튼에 바로 동작하게 한다 frament_plant_detail.xml callback 은 아래 Fab버튼을 눌렀을 때 반응하도록 onClick 리스너에 등록해준다 View -담기 버튼의 동작을 위한 작업 ViewModel 생성(참고: ViewMode 주입)..

[안드로이드 공부]/선플라워 디비보기 2020. 7. 29. 21:47
[Sunflower 디비보기] 데이터 바인딩과 HtmlCompat.fromhtml

TextView 에 Html 형식으로 글자를 바꿀 수 있다. 데이터 바인딩을 통해 바인딩 어뎁터(BindingAdapter)로 연결하면 간단하게 구현 할 수 있다. @BindingAdapter("renderHtml") fun bindRenderHtml(view: TextView, description: String?) { if (description != null) { view.text = HtmlCompat.fromHtml(description, FROM_HTML_MODE_COMPACT) view.movementMethod = LinkMovementMethod.getInstance() } else { view.text = "" } } 입력) plant.description = 동해물과 백두산이(from..

[안드로이드 공부]/선플라워 디비보기 2020. 7. 29. 11:58
코틀린 Scope; apply, also, run, with, let

Scope 함수는 인스턴스의 속성, 함수를 영역내에서 분리해서 사용 할 수 있다. 깔끔하고, 가독성을 높여 준다. apply / also 인스턴스 반환 run(with) /let 최종값 반환 apply 인스턴스(클래스)를 생성한 후 변수에 담기 전 초기화 과정을 수행 할 때 인스턴스 생성 후 .apply{ } 스코프 내에서 인스턴스의 .이름 없이 바로 사용 가능 즉, 인스턴스 생성 하고, 변수에 변경되거나 초기화 값을 넣은 다음 할당 하게 된다. class Book(var title: String, var number:Int){} var a = Book("a", 5).apply{ title = "abcde" + name} 인스턴스가 그대로 반환 된다 run apply 와 같으나, 마지막 구문이 반환 된다..

[안드로이드 공부]/코틀린 2020. 7. 23. 16:02
안드로이드 스튜디오 패키지명 변경

아주 간단하게 하는 방법 1. 안드로이드 스튜디오 좌측 프로젝트 패널에서 톱니 아이콘 클릭 2. Compact Middle Packages 해제 3. 원하는 패키지명을 누른 뒤, 우클릭 -> refactor -> rename 4. 경고 팝업이 뜨면 전체(all) 선택 5. 깊은 경로 일 경우 아래로 내려 가면서 하나씩 변경 6. 기존 5개 경로에서 3개로 변경 하고 싶다면 6.1. 예) com.a.b.c.d --> com.a.b 6.2 상위 패키지 명을 변경 한 후 , 하위 디렉토리 및 파일을 선택 해서 refactor -> move -> 가장 아래에 있는 all directory 옮기기로 옮기면 됨. 7. 남은 껍데기 폴더는 지워 주면 된다. 8. 그래들과, 매니페스트를 보면 자동으로 바뀌어 있음 9...

[안드로이드 공부]/안드로이드 스튜디오 2020. 7. 22. 16:46
error activity class does not exist

패키지명 변경등 후에 발생 할 수 있음. 간단하게, 1. 안드로이드 스튜디오 닫고 2. 재시작 2. 클린 3. 빌드 하면 끝남.

[안드로이드 공부]/액티비티 2020. 7. 22. 16:38
이전 1 2 3 4 ··· 20 다음
이전 다음
공지사항
최근에 올라온 글
  • Caused by: android.view.⋯
  • viewpager 사용 시 하단⋯
  • fragment container view⋯
  • Resources$NotFoundExcept⋯
최근에 달린 댓글
  • 안드로이드 10 인데 위 코드⋯
  • 제보 : https://horae.tistor⋯
  • 잘 안쓰는데 감사 인사 re:⋯
  • 안녕하세요. 좋은 말씀 감사⋯
Total
410,785
Today
128
Yesterday
252

Blog is powered by Tistory / Designed by Tistory