هذه المكتبة هي تطبيق لمفهوم التصفية المنشور على موقع 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 (LinearLayout/FrameLayout وما إلى ذلك):
setViewMain(relativelayout_content);
تحدد هذه المعلمة العرض المضخم لمربع الحوار:
setMainContentView(contentDialogView);
تحدد هذه المعلمة مدة الرسوم المتحركة للترجمة وحجم الرسوم المتحركة بالمللي milliseconds
:
setAnimationDuration(600); // default 500ms
تُستخدم هذه المعلمة لتعيين المُحرف للرسوم المتحركة الرائعة:
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);
يتم استخدام هذه المعلمة لدعم التمرير في ViewPager لأن BottomSheetDialog لا يدعم طرق عرض متعددة مع التمرير:
setViewPager(viewPager);
حقوق الطبع والنشر 2017 كروبن غيتيا
مرخص بموجب ترخيص Apache، الإصدار 2.0 ("الترخيص")؛ لا يجوز لك استخدام هذا الملف إلا وفقًا للترخيص. يمكنك الحصول على نسخة من الترخيص على
http://www.apache.org/licenses/LICENSE-2.0
ما لم يكن ذلك مطلوبًا بموجب القانون المعمول به أو تم الاتفاق عليه كتابيًا، يتم توزيع البرامج الموزعة بموجب الترخيص على أساس "كما هي"، دون ضمانات أو شروط من أي نوع، سواء كانت صريحة أو ضمنية. راجع الترخيص لمعرفة الأذونات والقيود التي تحكم اللغة المحددة بموجب الترخيص.