【Android】 레이아웃을 접는 View를 만들었다 - ExpandableLayout
11676 단어 안드로이드도서관자바ExpandableLayout
개요
최근에 View 클래스를 만들어 놀고 있습니다.
하나 전 정도의 GooglePlay의 앱 설명문으로 사용되고 있었던,
접이식 레이아웃이 어떤 느낌으로 구현할 수 있을지 흥미가 있었으므로, 시험에 만들어 보았다.
소개
ExpandableLayout
레이아웃의 요소를 접을 수 있는 View
ExpandableLayout
레이아웃의 요소를 접을 수 있는 View
특징
사용법
Gradle 종속성에 ExpandableLayout 추가
repositories {
maven {
url 'http://chuross.github.com/maven-repository/'
}
}
dependencies {
compile 'com.github.chuross:expandablelayout:1.0.3'
}
GithubPage의 개인 maven-repository에 올리고 있기 때문에, repositories에의 추가도 잊지 않고
XML 레이아웃에 작성
<dev.chuross.library.ExpandableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- ExpandableLayoutの中に自由なViewを入れる -->
</dev.chuross.library.ExpandableLayout>
기본 이것만으로 사용할 수 있습니다.
ExpandableLayout에 속성 추가
이름
금형
설명
보충
exl_collapse_height
dimention
접을 때 ExpandableLayout의 높이 지정
exl_collapse_target_id와 함께 사용할 수 없습니다.
exl_collapse_target_id
참조
접을 때 ExpandableLayout의 높이를 계산할 ViewID 지정
지정하면 ID로 지정한 View까지를 자동 계산하여 축소
exl_collapse_padding
dimention
접을 때 ExpandableLayout의 높이에 여백 추가
exl_duration
integer
접을 때/열 때 애니메이션의 시간 지정
exl_expanded
부울
View 생성시에 열린 상태로 한다
접는 작업
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ExpandableLayout expandableLayout = (ExpandableLayout)findViewById(R.id.layout_expandable);
expandableLayout.expand();// 開く
expandableLayout.collapse();// 折りたたむ
expandableLayout.expand(false);// アニメーション無しで開く
expandableLayout.collapse(false);// アニメーション無しで折りたたむ
}
보충
exl_collapse_height와 exl_collapse_target_id의 차이
exl_collapse_height
repositories {
maven {
url 'http://chuross.github.com/maven-repository/'
}
}
dependencies {
compile 'com.github.chuross:expandablelayout:1.0.3'
}
<dev.chuross.library.ExpandableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- ExpandableLayoutの中に自由なViewを入れる -->
</dev.chuross.library.ExpandableLayout>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ExpandableLayout expandableLayout = (ExpandableLayout)findViewById(R.id.layout_expandable);
expandableLayout.expand();// 開く
expandableLayout.collapse();// 折りたたむ
expandableLayout.expand(false);// アニメーション無しで開く
expandableLayout.collapse(false);// アニメーション無しで折りたたむ
}
exl_collapse_height와 exl_collapse_target_id의 차이
exl_collapse_height
exl_collapse_target_id
layout_height=WRAP_CONTENT
의 경우와 같이, 가변하는 요소를 대상으로 접을 때의 높이를 조정하고 싶을 때에 사용하면 좋다 exl_collapse_padding의 사용 장소
exl_collapse_target_id의 예
이런 식으로 지정하면 @+id/two의 View의 선두까지가 접혀진다
<dev.chuross.library.ExpandableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:exl_collapse_target_id="@+id/two">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<View
android:id="@+id/one"
android:layout_width="match_parent"
android:layout_height="120dp" />
<View
android:id="@+id/two"
android:layout_width="match_parent"
android:layout_height="200dp" />
</LinearLayout>
</dev.chuross.library.ExpandableLayout>
exl_collapse_target_id의 예 (exl_collapse_padding과 결합 된 예)
이런 느낌으로 쓰면 @+id/two의 View가 절반 보이는 상태로 접히게 된다
(@+id/two의 View의 선두로부터 100dp 더한 위치까지를 접도록 계산하기 위해서)
<dev.chuross.library.ExpandableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:exl_collapse_target_id="@+id/two"
app:exl_collapse_padding="100dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<View
android:id="@+id/one"
android:layout_width="match_parent"
android:layout_height="120dp" />
<View
android:id="@+id/two"
android:layout_width="match_parent"
android:layout_height="200dp" />
</LinearLayout>
</dev.chuross.library.ExpandableLayout>
접을 때 애니메이션 변경
내부적으로는 애니메이션 동작에 Scroller를 사용하고 있으므로, Interpolator 를 변경하는 것으로 동작을 변경할 수 있다
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ExpandableLayout expandableLayout = (ExpandableLayout)findViewById(R.id.layout_expandable);
expandableLayout.setInterpolator(new BounceInterpolator());
}
커스터마이즈도 가능하지만, 표준으로 준비되어 있는 것은 이쪽에서 확인하면 좋을 것 같다
라이센스
Apache License 2.0
Reference
이 문제에 관하여(【Android】 레이아웃을 접는 View를 만들었다 - ExpandableLayout), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/chuross/items/81328feff73f55f9022e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【Android】 레이아웃을 접는 View를 만들었다 - ExpandableLayout), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/chuross/items/81328feff73f55f9022e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)