728x90
반응형
버튼을 만들면 깜박깜박한 효과가 전부였던 나.
물결처럼 흐르는 애니메이션이 있는 버튼처럼 만들어 보고 싶었다.
그.래.서.
내가 한번 해보겠다!
특별한 설정없이 저런 애니메이션 효과를 주고싶다면
간단하게 레이아웃에서 설정할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".content.barcode.BarcodeFragment"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="@dimen/dp_40" android:gravity="center"> <ImageView android:layout_width="@dimen/dp_80" android:layout_height="@dimen/dp_80" android:scaleType="fitCenter" android:clickable="true" android:src="@drawable/ic_action_home_normal" android:background="?android:attr/selectableItemBackground"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="@dimen/dp_40" android:gravity="center"> <ImageView android:layout_width="@dimen/dp_80" android:layout_height="@dimen/dp_80" android:scaleType="fitCenter" android:clickable="true" android:src="@drawable/ic_action_home_normal" android:background="?android:attr/selectableItemBackgroundBorderless"/> </LinearLayout> </LinearLayout> | cs |
background를 보자.
영상에서 봤을 때, 위 이미지는 부드럽게 배경색이 바뀌는 효과가 있었다.
이것은 selectableItemBackground 이다.
그리고 아래 이미지처럼 퍼지는 효과는 selectableItemBackgroundBorderless 이다.
참고로 이미지에 클릭효과를 주려면 android:clickable 옵션을 넣어야 한다.
다만 아래 이미지 효과는 색상이 다르다.
위 이미지 효과는 기본으로 세팅된 색상에 영향을 받는다.
하지만 아래는 커스터마이징을 해서 색상을 변경한 것이다.
자세히보면 커스터마이징 된 것은 둥그런 모양으로 물결을 만든다.
Ripple 리소스로 이런 표현이 가능하다.
다만 api level 21 이후에 적용가능하기 때문에 drawable에서 분리하여 표현해야 한다.
ripple_sample.xml
1 2 3 4 | <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/cyon_a500"> </ripple> | cs |
drawable-v21/selector_click_ripple.xml
1 2 3 | <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/ripple_sample" /> </selector> | cs |
drawable/selector_click_ripple.xml
1 2 3 4 | <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="false" android:drawable="@color/white" /> <item android:drawable="@color/grey_800_" /> </selector> | cs |
위와 같이 준비하면 리소스는 준비가 된 것이다.
v21 미만의 경우에는 깜박깜박하는 효과만 나타나게 된다.
이제 이 리소스를 style.xml에 넣어보자.
Activity에 적용된 theme를 보고 style에 적용하면된다.
selectableItemBackgroundBorderless로 아래 예시에는 나와 있지만
android:selectableItemBackground로도 가능하다.
AndroidManifest.xml
1 2 3 4 | <activity android:name=".content.SampleActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:theme="@style/Theme.SampleTheme" /> | cs |
styles.xml
1 2 3 4 5 6 7 8 | <style name="Theme.SampleTheme" parent="Theme.Design.Light.NoActionBar" > <item name="android:windowBackground">@android:color/white</item> <item name="android:colorPrimary">@color/colorPrimary</item> <item name="android:colorPrimaryDark">@color/colorPrimaryDark</item> <item name="android:colorAccent">@color/colorAccent</item> <!-- 생략 --> <item name="android:selectableItemBackgroundBorderless">@drawable/selector_click_ripple</item> </style> | cs |
참고자료
728x90
반응형
'Android, iOS' 카테고리의 다른 글
Zxing. 커스텀하여 사용하기 (1) | 2018.09.21 |
---|---|
Found data binding errors. import는 하셨습니까? (0) | 2018.08.10 |
날짜 데이터를 String으로 받았다. Format은? Sorting은? (0) | 2018.08.06 |
Databinding을 사용하여 RecyclerView를 달아보자 (0) | 2018.08.02 |
Toolbar를 내 맘대로 만들고 싶드아아아ㅏㅏㅏ (0) | 2018.07.31 |
Comment