본문 바로가기

분류 전체보기83

ScrollView에 잔상이 남는 현상 ScrollView를 커스텀하여 사용하던 중에 발생했습니다. 생명주기가 onStop등으로 가있다가 onResume으로 복원후에 화면이 다시그려진 뒤 스크롤을 할 때 스크롤뷰에 잔상이 같이 스크롤되는 현상이 발생했습니다. 이리저리 찾아보니 정확한 원인이 어떤 것인지는 확인할 수 없었지만 보통 ScrollView를 커스텀 하여 사용할 때 많이 발생하는것 같고 아래와 같은 방법으로 해결하는 방법이 있었습니다. 해당 방법이 적용되는 이유를 보니 스크롤뷰를 스크롤할때 호출되는 Override 함수인 computeScroll을 호출하고 내부에서 requestLayout()을 호출하는 것으로 레아아웃을 다시 그려주기 때문에 해결되는것 같습니다. Java @Override public void computeScroll.. 2020. 5. 4.
개발자의 비둘기 : onCreatePigeon() public void onCreatePigion() { Fly(); } 돌아다니던 gif 짤방을 좀 더 개발스럽게 수정하다. 2020. 5. 4.
java.lang.IllegalStateException: ScrollView can host only one direct child NestedScrollView과 ScrollView를 사용할 때 발생하였습니다. xml레이아웃의 ScrollView안에 여러개의 Layout을 넣어두었을때 발생하였습니다. scrollview.xml 스크롤뷰 내부에는 하나의 차일드 뷰만 들어가야 한다는 내용이며 아래와 같이 해당 xml에서 스크롤뷰 내부의 내용을 scrollview_inner.xml 의 새로운 레이아웃 xml파일로 만든 뒤 include로 넣어준 후에는 정상적으로 동작하였습니다. scrollview.xml scrollview_inner.xml 2020. 5. 3.
NestedScrollView - ScrollView 와 RecyclerView 사용시의 오류 해결 한 뷰에 여러개의 RecyclerView를 사용하는 경우, 아래와 같이 ScrollView 안에 Recyclerview를 넣게 됩니다 이때 일부 RecyclerView에서, 아이템들이 다 표시되지 못하고 데이터보다 더 적게 표시되는 현상이 계속 발생했었습니다. 로그를 달아보니, list의 아이템들이 정확하고 list.size()도 정확한데, size보다 더 적은 아이템들이 계속 표시되는 현상이었습니다. 별다른 해결책을 찾지 못하고 잊어버리고 있었는데, 최근 여러개의 RecyclerView를 다시 써야 할 일이 생겨서 보니 또 다시 이런 현상이 발생하였습니다. 원인은... 정확하게는 알 수 없고, ScrollView와 RecyclerView간에 버그가 있는것 같습니다. 단, 해결책은 정확합니다. Scrol.. 2020. 4. 23.
RecyclerView의 스크롤 차단하기 1한 뷰에 여러개의 RecyclerView를 사용하는 경우, 아래와 같이 ScrollView 안에 Recyclerview를 넣게 됩니다. 이때 RecyclerView의 스크롤을 차단해 주지 않으면 ScrollView와 충돌하게 되어 이중스크롤이 되게 됩니다. 1. 아래와 같은 코드를 사용하면 RecyclerView의 스크롤을 차단할 수 있습니다. mRecyclerview.setLayoutManager(new LinearLayoutManager(this){ @Override public boolean canScrollVertically() { return false;//세로스크롤 차단 } @Override public boolean canScrollHorizontally() { return false;//.. 2020. 4. 23.
Stroke의 색상을 동적으로 바꾸기 안드로이드의 drawable에 다음과 같이 사용자 정의 drawable resource를 만들 수 있습니다. 해당 drawable resource를 round_box.xml로 정의하고 backgound로 설정해주면 아래와 같이 나타납니다. 아래와 같은 코드를 사용하시면 코드상에서 동적으로 stroke의 색상을 변경할 수 있습니다. RelativeLayout searchBackground = mainView.findViewById(R.id.search_bar); GradientDrawable mGradientDrawable = (GradientDrawable) searchBackground.getBackground(); mGradientDrawable.setStroke(10, Color.RED); 자세한 .. 2020. 4. 23.
java.lang.ClassNotFoundException: com.google.android.gms.auth.api.signin.internal.SignInConfiguration Google Drive API를 통해 로그인 할때 발생하였습니다. debug 할때는 발생하지 않았는데 release 빌드 후 앱을 설치하여 테스트 하니 발생하는것을 확인했습니다. 발생원인은 API Console에 Oauth 2.0 클라이언트 ID를 등록하지 않아서 발생하는 문제입니다. 앱 여러개에 구글 로그인 기능을 추가하다 보니, 한 앱에는 debug SHA-1 key만 등록하고 release SHA-1 key는 등록해놓지 않았네요. 이참에 SHA-1 Key를 등록하는 부분을 기록해 두고자 합니다. 구글에서 제공하는 API들을 사용하기 위해서는 API Console에 인증정보를 등록하는 작업을 해야합니다. API Console에서 사용자 인증정보>OAuth 클라이언트 ID를 통해서 해당 키를 등록할 수.. 2020. 4. 22.
Duplicate Platform Classes--- Error: commons-logging---/Error: httpclient defines classes Google Drive API 적용 중 발생한 Exception 입니다. Debug 빌드로 테스트할때는 잘되었는데 release 빌드시에는 아래의 오류가 발생하며 앱이 빌드되지 않는 현상이 발생합니다. Error: commons-logging defines classes that conflict with classes now provided by Android. Solutions include finding newer versions or alternative libraries that don't have the same problem (for example, for httpclient use HttpUrlConnection or okhttp instead), or repackaging the libra.. 2020. 4. 22.
"kind":"drive#fileList","incompleteSearch":false "kind":"drive#fileList","incompleteSearch":false 구글 DriveAPI 사용시 위 오류가 발생하며 API가 동작하지 않았습니다. 위 오류 외에도 파일 생성을 하고 확인하면 "untitled name" 과 같은 파일명을 return 할 뿐입니다. 해당 오류의 원인은 proguard 설정에 있습니다. proguard-rules.pro에 다음과 같은 내용을 추가해 주시면 해결됩니다. -keep class * extends com.google.api.client.json.GenericJson {*;} -keep class com.google.api.services.drive.** {*;} 2020. 4. 21.
More than one file was found with OS independent path 'META-INF/DEPENDENCIES' 안드로이드 프로젝트를 빌드 하는 중 상기 오류가 뜨며 앱이 빌드되지 않는 현상이 발생했습니다. 상기 오류가 발생하는 이유는 안드로이드가 참고하고 있는 외부 라이브러리 중에 META-INF/DEPENDENCIES를 중복으로 참고하고 있는 파일이 있기 때문입니다. 해당 오류를 해결하는 정확한 방법은 라이브러리 종속성 오류가 생기지 않게 중복으로 참고 하는 라이브러리를 개별적으로 찾아서 해당 부분만 제외시켜주는 방법입니다. 하지만. 중요한 부분이 아니라면 무시하는 방법도 있지 않을까요? 특히 META-INF과 관련된 내용은 라이브러리의 .jar 패키징과 관련된 파일일 뿐이므로 해당 오류는 무시해도 될겁니다. app 단의 build.gradle에 아래 부분을 추가해 주면, 크게 중요하지 않은 라이브러리 종속성 .. 2020. 4. 20.