Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 북한살둘레길
- 소프시스 밤부 좌식 엑슬 테이블
- T자형인재
- 한달브런치북만들기
- 한달어스
- 브런치작가되기
- 좌식테이블
- 캐치마인드
- 지지않는다는말
- 한단어의힘
- 리얼하다
- 프래그먼트
- 베드트레이
- 함수형 프로그래밍
- 테트리스
- 끝말잇기
- 슬기로운 온라인 게임
- 목적중심리더십
- 1일1커밋
- 아비투스
- 한달독서
- 커스텀린트
- 자취필수템
- 베드테이블
- 면접
- 어떻게 나답게 살 것인가
- 목적 중심 리더십
- 재택근무
- 소프시스
- 안드로이드
Archives
- Today
- Total
정상에서 IT를 외치다
[Android, ConstraintSet] ConstraintSet 을 통한 애니메이션 본문
반응형
안녕하세요.
이번에 드디어 ConstraintLayout 을 공부해서 실무에 적용해 보았습니다.
제가 느낀 바로는 RelativeLayout 대신에 ConstraintLayout 을 사용하면 보다 효과적으로 UI 를 적용할 수 있을 것 같습니다.
여기서 ConstraintSet 을 통한 애니메이션 적용이 재밌어서 포스팅을 해볼까 합니다.
아래 예제는 http://www.kmshack.kr/tag/constraintset/ 를 보며 조금씩 추가해 보았습니다.
화면은 MainActivity 1개와 xml 2개 (activity_main, activity_main_2) 를 아래와 같이 만드시면 됩니다.
MainActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val constraintSet1 = ConstraintSet()
constraintSet1.clone(constraintLayout)
val constraintSet2 = ConstraintSet()
constraintSet2.clone(this, R.layout.activity_main_2)
var changed = false
button.setOnClickListener {
/*val transition = AutoTransition()
transition.duration = 1000
TransitionManager.beginDelayedTransition(constraintLayout, transition)*/
TransitionManager.beginDelayedTransition(constraintLayout)
val constraint = if (changed) constraintSet1 else constraintSet2
constraint.applyTo(constraintLayout)
changed = !changed
textView.text = changed.toString()
}
}
}
애니메이션 효과를 위 주석처럭 TransitionManger.beginDelayedTrainsition(constraintLayout, transition)
와 같이 설정하여 커스텀 할 수 있습니다.
참고로 위 코드는 kotlin-extensions 를 사용하여 따로 뷰 선언을 할 필요가 없습니다.
constraintSet1.clone(constraintLayout)
에서 변수 constraintLayout 은 activity_main 에 있는 ConstraintLayout 의 id 입니다.
activity_main
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
android:id="@+id/constraintLayout"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ImageView
android:id="@+id/image"
android:layout_width="0dp"
android:layout_height="200dp"
android:background="@color/colorAccent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"/>
<TextView
android:id="@+id/textView"
android:text="Hello World"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"/>
<Button
android:id="@+id/button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="animate"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
</android.support.constraint.ConstraintLayout>
activity_main_2
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ImageView
android:id="@+id/image"
android:layout_width="0dp"
android:layout_height="200dp"
android:background="@color/colorAccent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<TextView
android:id="@+id/textView"
android:text="Hello World"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="100dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
</android.support.constraint.ConstraintLayout>
activity_main 과 activity_main_2 에서 imageView, TextView 에 애니메이션 효과를 주었습니다.
여기서 중요한 것은 효과를 줄 두 View 의 id 를 동일하게 해줘야 움직인다는 것입니다.
반응형
'안드로이드' 카테고리의 다른 글
[Android, RxEventBus] Rx를 사용한 EventBus (0) | 2018.05.10 |
---|---|
[Android, Retrofit, RxJava2] RxJava2 을 사용한 Retrofit 통신 (0) | 2018.05.08 |
[Android, SpannableStringBuilder] textview 에서 문자 일부 수정 하기 (0) | 2018.04.20 |
[Android, EventBus] 이벤트 버스 사용법 (2) | 2018.04.18 |
[Android, BroadcastReceiver] BroadcastReceiver 사용법 (0) | 2018.04.14 |
Comments