یکی از روش های جذاب کردن طراحی های اپلیکیشنهای موبایل ساده سازی عملکردهای عمومی با افکت های خاص می باشد. مثلا در برنامه های مشهور مانند تلگرام شاهد بسته شدن صفحه چت با سوایپ کردن به سمت راست صفحه می شویم.شما با استفاده از این کتابخانه اندرویدی می توانید این امکان را به راحت ترین شکل ممکن پیاده سازی کنید.
سازگار با اندروید 2.1 به بالا
دستور زیر را به فایل build.gradle پروژه خود اضافه کنید و اجازه دهید اندروید استودیو کتابخانه را دانلود نماید.
compile 'com.jude:swipebackhelper:3.1.1'
نحوه پیاده سازی اکتیویتی با امکان بسته شدن بصورت سوایپ
1-ابتدا در styles.xml یک استایل متفاوت برای اکتیویتی هایی که میخوایید سوایپ را اعمال کنید بسازید. مانند کد زیر.
<style name="AppSecondTheme" parent="AppTheme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowAnimationStyle">@style/SlideRightAnimation</item>
</style>
توجه : در اکتیویتی که سوایپ اعمال نمی کنید کد زیر را به استایلش اضافه نکنید.
<item name="android:windowIsTranslucent">false</item>
2- یک کلاس پایه به اسم BaseActivity که از AppCompatActivity مشتق شده باشد ایجاد کنید و کد ها را مانند حالت زیر به آن اضافه کنید.
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SwipeBackHelper.onCreate(this);
SwipeBackHelper.getCurrentPage(this)
.setSwipeBackEnable(true)
.setSwipeSensitivity(0.5f)
.setSwipeRelateEnable(true);
//ViewServer.get(this).addWindow(this);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
SwipeBackHelper.onPostCreate(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
SwipeBackHelper.onDestroy(this);
//ViewServer.get(this).removeWindow(this);
}
public void onResume() {
super.onResume();
//ViewServer.get(this).setFocusedWindow(this);
}
}
3- تمامی کلاس های اکتیویتی خود را از BaseActivity مشتق کنید.
الف) در تابع onCreate() اکتیویتی هایی که میخواهید سوایپ نشود کدهای زیر را اضافه کنید.
SwipeBackHelper.getCurrentPage(this)
.setSwipeBackEnable(false);
SwipeBackHelper.getCurrentPage(this).setDisallowInterceptTouchEvent(true);
ب) کلاس هایی که می خوایید سوایپ شوند بصورت عادی از BaseActivity مشتق شوند کافی است.
برنامه را اجرا کنید و از افکت لذت ببرید.
تنظیم ویژگی های متفاوت در اکتیویتی ها
برای اعمال تغییرات کدهای موجود در onCreate() کلاس BaseActivity را ویرایش کنید.
نمونه کد ها به همراه توضیحات در ادامه می باشد.
SwipeBackHelper.getCurrentPage(this)//get current instance
.setSwipeBackEnable(true)// فعال کردن یا غیر فعال کردن
.setSwipeEdge(200)// مکان تشخیص سوایپ به 200 پیکسل از سمت چپ تغییر پیدا کند.
.setSwipeEdgePercent(0.2f)// مکان سوایپ به 20% سمت چپ تغییر پیدا کند.
.setSwipeSensitivity(0.5f)// میزان حساسیت به مقدار سوایپ کردن به سمت راست
.setScrimColor(Color.BLUE)// رنگ اعمال شده به لایه زیرین موقع سوایپ کردن
.setClosePercent(0.8f)// اگر بیشتر از 80% صفحه سوایپ بشود صفحه بسته می شود
.setSwipeRelateEnable(false)// افکت انتقال اکتیویتی قبلی و فعلی پشت سر هم
.setDisallowInterceptTouchEvent(true)//your view can hand the events first.default false;
.addListener(new SwipeListener() {
@Override
public void onScroll(float percent, int px) {
}
@Override
public void onEdgeTouch() {
}
@Override
public void onScrollToClose() {
}
});