본문 바로가기

android

[Android] android.content.res.Resources$NotFoundException: String resource ID android.content.res.Resources$NotFoundException: String resource ID #0x25 위와 같은 에러가 뜨면 String resorceID 가 없다는 생각을 가장 먼저 할 것이다.그리고 그게 맞는 말이다. 하지만 만약 TextView나 EdtiText 같은 String 데이터를 추구하는 setText 함수 같은 곳에int형 데이터를 넣으면 위와 같은 에러가 발생 한다. 참고 하세요. 더보기
[Andoird] Button 클릭 시, textColor 변경 text_selector.xml layout.xml 위와 같이 하면 적용 된다. Java 단에서 하고자 한다면 아래 소스를 참고 하세요. 예) /res/color/selector_text.xml123456 ;버튼이 xml layout 에 있는 경우는 그냥 android:textColor=”@color/selector_text.html” 로 지정해주면 되지만,만약 java 안에서 프로그램적으로 세팅해 주는 경우는 다음과 같은 코드를 써야 한다.123btnTest.setTextColor( getResources().getColorStateList(R.color.selector_text));이렇게 안 하고 그냥 getColor() 를 사용하면 버튼 터치 시 색 변화가 없다.출처 : https://chrisjh.. 더보기
[Android] Recycler View 사이에 divider 크기 조절 RecyclerView는 각 Row에 Decoration을 줄 수가 있습니다. 이때 사용하는 클래스가 RecyclerView.ItemDecoration 입니다. 간단하게 리스트 사이에 간격을 별려주는 소스 입니다. public class CustomRecyclerDecoration extends RecyclerView.ItemDecoration { private final int divHeight; public CustomRecyclerDecoration(int divHeight) { this.divHeight = divHeight; } @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerVie.. 더보기
[Android] RecyclerView Adpater Refresh RecyclerView를 사용한 후, Adapter를 계속 그냥 두는게 아니라 데이터가 변경이 되었을 때 항상 갱신을 해야 합니다.이전 ListView나 GridView를 사용했을 때 저는 모든 갱신을 notifyDataSetChanged 함수만 썼습니다.(제가 경력이 그리 많지 않아서..^^a) RecyclerView를 쓸때는 좀 더 다양하게 갱신을 줄 수 있습니다. ## 추신 : 여기는 제가 직접 테스트를 하면서 생각된 기능으로 설명한 것입니다. API 의도와 틀릴 경우 언제든지 댓글 달아주세요^^ 수정 하겠습니다. notifyDataSetChanged : 데이터가 전체 바뀌었을 때 호출. 즉, 처음 부터 끝까지 전부 바뀌었을 경우 notifyItemChanged : 특정 Position의 위치만 바.. 더보기
[Android] Background partial concurrent mark sweep GC freed 혹시 Lollipop 폰에서 갑자기 아래와 같은 에러가 즐비한다면...그리고 원인을 알수 없는 상태라면 이 글을 참고해봐라 W/art: Suspending all threads took: 23.406msI/art: Background sticky concurrent mark sweep GC freed 6829(4MB) AllocSpace objects, 0(0B) LOS objects, 16% free, 20MB/25MB, paused 6.042ms total 27.954msI/art: Background sticky concurrent mark sweep GC freed 3641(3MB) AllocSpace objects, 0(0B) LOS objects, 12% free, 21MB/25MB, paus.. 더보기
[Android] RecyclerView 에서 각 View 크기 조절 RecyclerView 에서 동적으로 Layout을 바꾸고 싶을 경우 아래와 같이 수정해보세요.View의 width 와 height를 같게 만드는 소스 이다. ## onBindViewHolder 함수 내에서GridLayoutManager.LayoutParams layoutParams = (GridLayoutManager.LayoutParams)viewHolder.itemView.getLayoutParams(); layoutParams.height = layoutParams.width; viewHolder.itemView.requestLayout(); RecyclerView에서 설정한 LayoutManager에서 사용하는 LayoutParams를 가져 온후, 수정하면 된다. 참고 하세요. 더보기
[Android] Activity 간 Material Design Transition 적용 Fragment 간 Material Design 이동은 지난 포스트에 올렸었다.http://gogorchg.tistory.com/entry/Android-setCustomAnimations-%EC%9D%B4-%EB%8F%99%EC%9E%91%ED%95%98%EC%A7%80-%EC%95%8A%EC%9D%84%EB%95%8C 이번엔 Activity 에서 이동 시, Material Design을 적용하는 방법 이다. Fragment에 비해서 간단하지만, 그만큼 제약이 있어 보인다. 항상 잊지 말아야 하는 부분은 이 기능은 API 21 이상 부터 지원된다는 것을 인지하자. 1. 연결을 시키고자 하는 View에 각각 transitionName을 할당 한다.2. 다음 startActivity 호출 부분을 아래와 같.. 더보기
[Android] AppBarLayout in SwipeRefreshLayout SwipeRefreshLayout 안에 AppBar가 있는 경우 Loading 이미지가 원하지 않는 시점에서 보여지는 경우가 발생한다. 최상위 스크롤 에서 이벤트 동작이 일어나지 않고, 어느 위치에서든지 스크롤을 내리면 LoadingProgressBar가 보이게 되는 것이다. 이럴 경우, AppBarLayout의 addOnOffsetChangedListener를 통하여 해결이 가능하다. AppBarContainer.addOnOffsetChangedListener(this); 위와 같이 리스너를 등록 한후, 아래와 같이 offset이 0일 경우에는 swipe 동작이 이뤄지도록 설정 하면 된다.@Override public void onOffsetChanged(AppBarLayout appBarLayout,.. 더보기