ConstraintSet 은 ConstraintLayout 의 각 뷰들에 대한 Constraint 정보를 담고있는 배열
레이아웃 구성시 각 뷰에 constraint 를 기술하지만 실제 데이터는 부모 ConstraintLayout 의 ConstraintSet 에 저장된다.
동적으로 코드에서 구성시 ConstraintSet 를 생성해 기존 데이터를 clone 하거나 새로 값을 입력 후 ConstraintLayout 에 적용 시켜주면 된다.
https://developer.android.com/reference/android/support/constraint/ConstraintSet
직접 설정하기
ConstraintSet mConstraintSet = new ConstraintSet();
// 두 뷰간에 constraint 생성
mConstraintSet.connect( R.id.view1, ConstraintSet.RIGHT, R.id.view2, ConstraintSet.LEFT );
// 뷰의 layoutparam을 constraintset 을 이용해 변경
ConstraintLayout.LayoutParams;
// = new ConstraintLayout.LayoutParams( ConstraintLayout.LayoutParams source);
// = new ConstraintLayout.LayoutParams( Context c, AttributeSet attr );
// = new ConstraintLayout.LayoutParams( ViewGroup.LayoutParams source );
mConstraintSet.applyToLayoutParams( R.id.view, ConstraintLayout.LayoutParams params );
// 특정 뷰에 constrint 적용
mConstraintSet.constraintWidth( R.id.view, ConstraintSet.MATCH_CONSTRAINT )
mConstraintSet.setDimensionRatio( R.id.view, "H,1:2" )
mConstraintSet.constraintPercentWidth( int viewID, float percent );
// 기존 constraint 제거
mConstraintSet.clear( R.id.view, ConstraintSet.END )
// constraint layout 에 constraitset 반영
mConstraintSet.applyTo( binding.constraintLayout )
기존 레이아웃의 constraintset 얻기
ConstraintSet mConstraintSet = new ConstraintSet();
mConstraintSet.clone( context, R.layout.constraintLayout );
바인딩된 레이아웃 객체에서 constraintset 얻기
MyActivityBinding binding = DataBindingUtil.setContentView( context, R.layout.activity );
ConstraintLayout mLayout = binding.constraintLayout;
ConstraintSet mConstraintSet = new ConstraintSet();
mConstraintSet.clone( mLayout );
ConstraintSet 적용시 transition 효과 사용
MyActivityBinding binding = DataBindingUtil.setContentView( context, R.layout.activity );
ConstraintLayout mLayout = binding.constraintLayout;
val transition = ChangeBounds()
transition.duration = 200L
TransitionManager.beginDelayedTransition( mLayout, transition );
mConstraintSet.applyTo( mLayout );
'프로그래밍 > Android' 카테고리의 다른 글
[Android] EGL : 2 - 텍스처 (0) | 2020.03.02 |
---|---|
[Android] EGL : 1 - 기본 구성 (0) | 2020.03.02 |
안드로이드 ndk 테스트 코드 (0) | 2020.02.20 |
[Android] gson , 복합적인 요소의 파싱 (0) | 2019.09.23 |
[Android] gradle android 빌드 구성 (0) | 2019.09.17 |
Gradle Kotlin, AndroidX 설정 (0) | 2019.08.17 |
[Android] androidX Camera (0) | 2019.07.15 |
[Android] Retrofit (0) | 2019.04.11 |
[Android] Data Binding Library (0) | 2019.03.31 |
String 리소스에 html 태그 넣기 (0) | 2014.04.29 |