'안드로이드'에 해당되는 글 4건
- 2015.02.05 :: 스크롤뷰가 아닌 곳에서 스크롤 동작을 구현해보자! 2
- 2015.01.30 :: 왜 스크롤뷰가 나타나지 않는거야!
- 2015.01.21 :: Activity에서 onPause() 전에 무조건 onUserLeaveHint() 가 수행될 경우.
- 2014.08.04 :: Found 2 versions of android-support-v4.jar in the dependency list
최근 업데이트된 카톡과 롤리팝으로 업그레이드 되면서 새롭게 바뀐 구글 주소록.
스크롤뷰는 아닌데 스크롤이 되고 아래로 스와이프를 하면 꺼지게 되어있다.
요로코롬 아래로 스와이프를 하면 액티비티가 종료되게 되어 있는데
이걸 만들기 위해서 그동안 삽질했던 내용을 정리하려고 한다!
구현 방법은 크게 다음과 같다.
1. android.view.GestureDetector 를 통해서 gesture snipping
2. android.widget.OverScroller 를 통해서 Fling시의 동작 처리
scroller.getCurrVelocity() 를 하지 않으면 속도가 바뀌지 않아서 Fling의 max값 까지 일정한 속도로 계속 스크롤 하게 된다.
scroller의 default Friction은 0.015f다.
삽질하고 나니까 그닥 어려워보이진 않는데 맨첨에는 멘붕이 엄청 심했다.. 나중에 다시 한번 정리해야지!
'Android' 카테고리의 다른 글
Java finished with non-zero exit value 2 - Android Gradle (0) | 2015.08.28 |
---|---|
왜 스크롤뷰가 나타나지 않는거야! (0) | 2015.01.30 |
Notification을 통한 Activity 중복 실행 문제. (0) | 2015.01.21 |
Activity에서 onPause() 전에 무조건 onUserLeaveHint() 가 수행될 경우. (0) | 2015.01.21 |
AndroidStudio 설치하기 (0) | 2015.01.14 |
어제 RecyclerView를 이용해서 리스트 구현중에 스크롤뷰가 나타나지 않아서 고생을 했던 적이 있다.
다음은 안드로이드 개발자 센터에 나와있는 RecyclerView 사용법중 일부분이다.
https://developer.android.com/training/material/lists-cards.html
<!-- A RecyclerView with some commonly used attributes -->
<android.support.v7.widget.RecyclerView
android:id="@+id/my_recycler_view"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
android:scrollbarSize="" //스크롤바 사이즈
android:scrollbarStyle="" //스크롤바 스타일
android:fadeScrollbars="false" //스크롤바가 사라지는지 여부
그런데 암만 해도 스크롤바가 나타나지 않는것이다.
그래서 이것저것 건들여보다가 갑자기 생각난게 테마였다.
다음은 안드로이드 개발자 센터에 나와있는 마테리얼 디자인이다.
http://developer.android.com/design/material/index.html
안드로이드가 제공하는 기본 테마는 세가지로
@android:style/Theme.Material (dark version)
@android:style/Theme.Material.Light (light version)
@android:style/Theme.Material.Light.DarkActionBar
인데 나는 액션바의 글자와 아이콘 색을 하얀색으로 하기 위해서 android:style/Theme.Material (dark version) 테마를 사용했고 기본 화면을 흰색으로 하기 위해서 background에 하얀색을 맞춰논 상태였다.
그리고 다음은 마테리얼 디자인의 색 부분인데
http://www.google.com/design/spec/style/color.html#color-ui-color-application
검은색 테마를 사용했으므로 text와 icon 색은 왼쪽의 white에서 가져온다.
즉 스크롤바의 색은 #FFFFFF의 12% 였던 것이다.
하얀색 위에 하얀색(알파)를 올려놓으니 당연히 보일리가 없는 것이었다..
해결방법은 간단했다. 테마를 @android:style/Theme.Material.Light.DarkActionBar으로 바꾸면서 해결되었다.
앞으로를 뷰가 잘 보이지 않을때는 다른 뷰에 겹쳐서 그런건 아닐까 생각해보자.
'Android' 카테고리의 다른 글
Java finished with non-zero exit value 2 - Android Gradle (0) | 2015.08.28 |
---|---|
스크롤뷰가 아닌 곳에서 스크롤 동작을 구현해보자! (2) | 2015.02.05 |
Notification을 통한 Activity 중복 실행 문제. (0) | 2015.01.21 |
Activity에서 onPause() 전에 무조건 onUserLeaveHint() 가 수행될 경우. (0) | 2015.01.21 |
AndroidStudio 설치하기 (0) | 2015.01.14 |
앱을 나갔다 왔을때 비밀번호를 입력하는 엑티비티 수행후 원래 동작으로 하던 도중 생긴 문제.
사용자가 앱을 나갔음을 알때는 Activity의 onUserLeaveHint()로 찾게 되는데 이게 다른 액티비티로 넘어갈때도 onPause()전에 onUserLeaveHint()를 수행하게 된다.
MainActivity
AActivity
해당 로그는 이렇게 나온다.
MainActivity에서 AActivity로 갈때 Intent.FLAG_ACTIVITY_NO_USER_ACTION을 추가했을때
AActivity에서 BActivity로 갈때 Intent.FLAG_ACTIVITY_NO_USER_ACTION을 추가했을때
둘다 Intent.FLAG_ACTIVITY_NO_USER_ACTION을 추가했을때
결과를 정리하면
ParentActivity에서 ChildActivity를 부를때 Intent에 No_User_Action을 추가하면
ParentActivity가 onPause() 되기전에 onUserLeaveHint()가 호출되지 않는다!
ParentActivity에서 home key나 recent key를 누를경우는 정상적으로 onUserLeaveHint()가 호출된다.
안드로이드 레퍼런스에서 설명되어 있는 FLAG_ACTIVITY_NO_USER_ACTION는 다음과 같다.
If set, this flag will prevent the normal onUserLeaveHint() callback from occurring on the current frontmost activity before it is paused as the newly-started activity is brought to the front.
설정할 경우, 이 플래그는 새로운 액티비티(자식)가 앞으로 와서 가장 최근의 액티비티(부모)가 paused하기 전에 발생하는 onUserLeaveHint() 콜백을 방지한다.
Typically, an activity can rely on that callback to indicate that an explicit user action has caused their activity to be moved out of the foreground. The callback marks an appropriate point in the activity's lifecycle for it to dismiss any notifications that it intends to display "until the user has seen them," such as a blinking LED.
일반적으로 사용자의 행동으로 인해 해당 액티비티가 foreground에서 background로 이동했다는 것을 알리기 위해 onUserLeaveHint()콜백에 의존한다.
이 콜백은 액티비티 라이프사이클 안에서 사용자가 그들을 볼때까지 보여지는 것으로 계획되어 있던 알림(LED 깜빡이기 등)을 지우기 위한 적당한 지점을 표시한다.
p.s.) 알림을 지우는 조건이 어떤 Activity를 통해서 알림내용을 보는것 이라면 해당 액티비티의 onUserLeaveHint()에서 알림을 지우라는 뜻 같다.
If an activity is ever started via any non-user-driven events such as phone-call receipt or an alarm handler, this flag should be passed to Context.startActivity, ensuring that the pausing activity does not think the user has acknowledged its notification.
만약 액티비티가 전화 수신 혹은 알람 같은 사용자가 하지 않은 이벤트를 통해서 시작 된다면, 이 플래그는 Context.startActivity를 통해 전달된다. 일시정지된 액티비티는 사용자가 그 통지를 인정했다고 생각하지 않는다.
Constant Value: 262144 (0x00040000)
http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NO_USER_ACTION
'Android' 카테고리의 다른 글
왜 스크롤뷰가 나타나지 않는거야! (0) | 2015.01.30 |
---|---|
Notification을 통한 Activity 중복 실행 문제. (0) | 2015.01.21 |
AndroidStudio 설치하기 (0) | 2015.01.14 |
미디어 컨트롤 로그 분석 (0) | 2014.08.13 |
JakeWharton/Android-ViewPagerIndicator 사용하기 (0) | 2014.08.04 |
한 프로젝트에 같은 라이브러리가 두번 참조됐을때 뜨는 에러.
프로젝트를 진행하면서
appcompat_v7과 viewpager-with-indicator을 둘다 사용하게 되면서 둘다 android-support-v4.jar를 참조하는데 android-support-v4.jar의 버전이 다르기 때문에 생기는 오류 같다.
일단 방법으로는 하나를 지우거나... 근데 둘다 외부 라이브러리 프로젝트 이기 때문에 하나를 지울순 없다.
android-support-v4.jar를 둘다 최신버전으로 업데이트 하는 방법이 있다.
방법은 프로젝트 우클릭 -> Android Tools -> Add Support Library 로 업데이트 하면 해결!
안드로이드는 수시로 업데이트가 나오기 때문에 이런점은 좀 불편한듯...
'Android' 카테고리의 다른 글
Activity에서 onPause() 전에 무조건 onUserLeaveHint() 가 수행될 경우. (0) | 2015.01.21 |
---|---|
AndroidStudio 설치하기 (0) | 2015.01.14 |
미디어 컨트롤 로그 분석 (0) | 2014.08.13 |
JakeWharton/Android-ViewPagerIndicator 사용하기 (0) | 2014.08.04 |
[펌]Log 를 테스트시에는 보이고 배포시에는 안보이도록 자동 처리 (0) | 2014.08.04 |