Diese Bibliothek ist die Implementierung des auf MaterialUp.com veröffentlichten Filterkonzepts.
Dadurch lässt sich die Animation von FloatingActionButton zu BottomSheetDialog einfach implementieren.
Gradle
Fügen Sie die Abhängigkeit zu Ihrer build.gradle-Datei auf App-Ebene hinzu:
dependencies {
implementation ' io.github.krupen:fabulousfilter:0.0.6 '
}
Erstellen Sie ein Fragment, das AAH_FabulousFragment
erweitert:
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
}
}
Erstellen Sie eine Ansicht für das Fragment, das das übergeordnete Element AAH_FilterView
hat:
<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>
Starten Sie das Fragment durch Klicken auf den FloatingActionButton wie folgt:
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MySampleFabFragment dialogFrag = MySampleFabFragment.newInstance();
dialogFrag.setParentFab(fab);
dialogFrag.show(getSupportFragmentManager(), dialogFrag.getTag());
}
});
Dieser Parameter gibt die ViewGroup des unteren Blatts an, das nach Ende der Animation angezeigt werden soll. Es kann sich um eine beliebige ViewGroup (LinearLayout/FrameLayout usw.) handeln:
setViewMain(relativelayout_content);
Dieser Parameter gibt die vergrößerte Ansicht für den Dialog an:
setMainContentView(contentDialogView);
Dieser Parameter legt die Animationsdauer der Übersetzungs- und Skalierungsanimation in milliseconds
fest:
setAnimationDuration(600); // default 500ms
Dieser Parameter wird verwendet, um den Interpolator für Fab-Animationen festzulegen:
setInterpolator(new AccelerateDecelerateInterpolator());
Dieser Parameter legt die Spitzenhöhe des unteren Blatts in dp
fest:
setPeekHeight(300); // default 400dp
Dieser Parameter wird verwendet, um einen Rückruf von AAH_FabulousFragment
an die Komponente zu erhalten, die ihn aufgerufen hat:
setCallbacks((Callbacks) getActivity());
Um es zu verwenden, implementieren Sie den Rückruf in der aufrufenden Komponente (Aktivität/Fragment usw.), Beispiel:
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
}
}
}
Dieser Parameter wird verwendet, um Animationsrückrufe abzurufen.
setAnimationListener((AnimationListener) getActivity());
Um es zu verwenden, implementieren Sie den AnimationListener in der aufrufenden Komponente (Aktivität/Fragment usw.), Beispiel:
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
}
}
Dieser Parameter wird verwendet, um die Ansicht im unteren Blatt statisch zu machen, wenn der Benutzer es verschiebt. Es kann sich um eine beliebige ViewGroup (LinearLayout/FrameLayout usw.) handeln:
setViewgroupStatic(linearlayout_buttons);
Dieser Parameter wird verwendet, um das Scrollen in ViewPager zu unterstützen, da BottomSheetDialog nicht mehrere Ansichten mit Scrollen unterstützt:
setViewPager(viewPager);
Copyright 2017 Krupen Ghetiya
Lizenziert unter der Apache-Lizenz, Version 2.0 (die „Lizenz“); Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden. Eine Kopie der Lizenz erhalten Sie unter
http://www.apache.org/licenses/LICENSE-2.0
Sofern nicht durch geltendes Recht vorgeschrieben oder schriftlich vereinbart, wird die im Rahmen der Lizenz vertriebene Software „WIE BESEHEN“ und OHNE GEWÄHRLEISTUNGEN ODER BEDINGUNGEN JEGLICHER ART, weder ausdrücklich noch stillschweigend, vertrieben. Die spezifische Sprache, die die Berechtigungen und Einschränkungen im Rahmen der Lizenz regelt, finden Sie in der Lizenz.