이 라이브러리는 MaterialUp.com에 게시된 필터 개념을 구현한 것입니다.
이는 FloatingActionButton의 애니메이션을 BottomSheetDialog로 구현하기 쉽게 만듭니다.
그래들
앱 수준 build.gradle 파일에 종속성을 추가합니다.
dependencies {
implementation ' io.github.krupen:fabulousfilter:0.0.6 '
}
AAH_FabulousFragment
확장하는 조각을 만듭니다.
public class MySampleFabFragment extends AAH_FabulousFragment {
public static MySampleFabFragment newInstance() {
MySampleFabFragment f = new MySampleFabFragment();
return f;
}
@Override
public void setupDialog(Dialog dialog, int style) {
View contentView = View.inflate(getContext(), R.layout.filter_sample_view, null);
RelativeLayout rl_content = (RelativeLayout) contentView.findViewById(R.id.rl_content);
LinearLayout ll_buttons = (LinearLayout) contentView.findViewById(R.id.ll_buttons);
contentView.findViewById(R.id.btn_close).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
closeFilter("closed");
}
});
//params to set
setAnimationDuration(600); //optional; default 500ms
setInterpolator(new AccelerateDecelerateInterpolator()); // optional
setPeekHeight(300); // optional; default 400dp
setCallbacks((Callbacks) getActivity()); //optional; to get back result
setAnimationListener((AnimationListener) getActivity()); //optional; to get animation callbacks
setViewgroupStatic(ll_buttons); // optional; layout to stick at bottom on slide
setViewPager(vp_types); //optional; if you use viewpager that has scrollview
setViewMain(rl_content); //necessary; main bottomsheet view
setMainContentView(contentView); // necessary; call at end before super
super.setupDialog(dialog, style); //call super at last
}
}
상위 요소 AAH_FilterView
가 있는 조각에 대한 보기를 만듭니다.
<com.allattentionhere.fabulousfilter.AAH_FilterView
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">
<RelativeLayout
android:id="@+id/rl_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:background="@color/orange"
android:visibility="invisible"
tools:ignore="MissingPrefix"
tools:visibility="visible">
<LinearLayout
android:id="@+id/ll_buttons"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_alignParentBottom="true"
android:background="@color/brown"
android:orientation="horizontal"
android:weightSum="2">
</LinearLayout>
</RelativeLayout>
</com.allattentionhere.fabulousfilter.AAH_FilterView>
아래와 같이 FloatingActionButton을 클릭하면 조각이 시작됩니다.
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MySampleFabFragment dialogFrag = MySampleFabFragment.newInstance();
dialogFrag.setParentFab(fab);
dialogFrag.show(getSupportFragmentManager(), dialogFrag.getTag());
}
});
애니메이션 종료 후 표시할 바텀 시트의 ViewGroup을 지정하는 파라미터입니다. 모든 ViewGroup(LinearLayout/FrameLayout 등)이 될 수 있습니다.
setViewMain(relativelayout_content);
이 매개변수는 대화 상자의 확장된 보기를 지정합니다.
setMainContentView(contentDialogView);
이 매개변수는 애니메이션 변환 및 크기 조정의 애니메이션 지속 시간을 milliseconds
로 설정합니다.
setAnimationDuration(600); // default 500ms
이 매개변수는 Fab 애니메이션에 대한 보간기를 설정하는 데 사용됩니다.
setInterpolator(new AccelerateDecelerateInterpolator());
이 매개변수는 dp
단위로 하단 시트의 엿보기 높이를 설정합니다.
setPeekHeight(300); // default 400dp
이 매개변수는 AAH_FabulousFragment
에서 이를 호출한 구성요소로 콜백을 가져오는 데 사용됩니다.
setCallbacks((Callbacks) getActivity());
이를 사용하려면 호출 구성 요소(활동/조각 등)에서 콜백을 구현합니다. 예:
public class MainSampleActivity extends AppCompatActivity implements AAH_FabulousFragment.Callbacks {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_sample);
}
@Override
public void onResult(Object result) {
if (result.toString().equalsIgnoreCase("swiped_down")) {
//do something or nothing
} else {
//handle result
}
}
}
이 매개변수는 애니메이션 콜백을 가져오는 데 사용됩니다.
setAnimationListener((AnimationListener) getActivity());
이를 사용하려면 호출 구성 요소(활동/조각 등)에서 AnimationListener를 구현합니다. 예:
public class MainSampleActivity extends AppCompatActivity implements AAH_FabulousFragment.AnimationListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_sample);
}
@Override
public void onOpenAnimationStart() {
//do something on open animation start
}
@Override
public void onOpenAnimationEnd() {
//do something on open animation end
}
@Override
public void onCloseAnimationStart() {
//do something on close animation start
}
@Override
public void onCloseAnimationEnd() {
//do something on close animation start
}
}
이 매개변수는 사용자가 슬라이드할 때 바텀 시트의 보기를 정적으로 만드는 데 사용됩니다. 모든 ViewGroup(LinearLayout/FrameLayout 등)이 될 수 있습니다.
setViewgroupStatic(linearlayout_buttons);
BottomSheetDialog는 스크롤이 포함된 다중 보기를 지원하지 않으므로 이 매개변수는 ViewPager에서 스크롤을 지원하는 데 사용됩니다.
setViewPager(viewPager);
저작권 2017 Krupen Ghetiya
Apache 라이센스 버전 2.0("라이센스")에 따라 라이센스가 부여되었습니다. 라이센스를 준수하는 경우를 제외하고는 이 파일을 사용할 수 없습니다. 다음에서 라이센스 사본을 얻을 수 있습니다.
http://www.apache.org/licenses/LICENSE-2.0
해당 법률에서 요구하거나 서면으로 동의하지 않는 한, 라이선스에 따라 배포되는 소프트웨어는 명시적이든 묵시적이든 어떠한 종류의 보증이나 조건 없이 "있는 그대로" 배포됩니다. 라이선스에 따른 허가 및 제한 사항을 관리하는 특정 언어는 라이선스를 참조하세요.