دستور زیر را به فایل build.gradle پروژه خود اضافه کنید و اجازه دهید اندروید استودیو کتابخانه را دانلود نماید.
repositories {
maven { url "https://jitpack.io" }
}
compile 'com.github.jaouan:viewsfrom:1.0.0'
نحوه کار
در ویو خود یک لایه ایجاد کنید و آیتم ها را در داخل آن مطابق طراحیتان قرار دهید و سپس توسط جاوا اشاره گری برای آن تعریف کنید و بشکل زیر استفاده کنید.
ساده ترین حالت برای اعمال انیمیشن بر روی تمامی آیتم های داخل یک لایه
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.layout);
Views
.from(linearLayout) // لایه مورد نظر
.withVisibility(View.VISIBLE) // حالت پایانی آیتم ها بعد اعمال انیمیشن
.animateWith(getBaseContext(), android.R.anim.slide_in_left) // انیمیشن مورد نظر را از این طریق می توانید ست کنید
.withDelayBetweenEachChild(1000) // مقدار تاخیر در اجرای انیمیشن بر روی آیتم های داخل لایه مورد نظر
.start(); // شروع اعمال انیمیشن
اعمال انیمیشن بر روی تمامی ادیت تکست هایی که تگ example را دارا هستند.
Views.from(myFirstLinearLayout, mySecondLinearLayout) // انتخاب لایه ها
.withType(EditText.class) // تنظیم نوع ویو در این مثال ادیت تکست
.withTag("example") // تنظیم تگ مورد نظر
.animateWith(context, R.anim.my_awesome_animation) // انیمیشن مورد نظر
.forEach((view, index, count) -> {
view.setVisibility(View.VISIBLE);
});
مثالی برای نمایش تمامی امکانات
// Defines root views of your views finder.
Views.from(groupView1 /*, groupView2, ...*/)
// Basics filters.
.withTag("abc" /*, "efg", ...*/)
.withTagRegex("[a-z]*" /*, "anotherRegex", ...*/)
.withId(R.id.my_wonderful_id, /*, R.id.my_another_id, ...*/)
.withType(TextView.class /*, EditText.class, ...*/)
.withVisibility(View.GONE /*, View.INVISIBLE, ...*/)
// Negate "with*" filters by prefixing with "not" method.
not().withId(R.id.one_more_id /*, R.id.gimme_more_id*/)
// Custom filter.
.filteredWith((view) -> {
return /* your own filter */;
})
// Exclude views.
.excludeView(myView1 /*, myViews2, ... */)
// Options.
.includingFromViews()
.excludingChildsFromFilteredGroupViews()
// Concate with a new views finder, with its own filters and options.
.andFrom(group2)
.withTag("xyz")
// Order views.
.orderedBy((view1, view2) -> {
return /* your own comparator */;
}
// And animate them all !
.animateWith(context, R.anim.my_awesome_animation)
.withDelayBetweenEachChild(250)
.withViewsVisibilityBeforeAnimation(View.INVISIBLE)
.withEndAction(() -> {
Log.i("ViewsFromLibExample", "It's finally over.");
})
.start();
در کل این کتابخانه 3 امکان مهم را برای شما مهیا می کند. پیدا کردن ویو ها , پیمایش بین ویو ها و ست کردن انیمیشن به ویو ها.
پیدا کردن ویو ها
Views.from(groupView)
.find();
پیمایش بین ویوها
Views.from(groupView)
.forEach((view, index, count) -> {});
ست کردن انیمیشن
Views.from(groupView)
.animateWith(() -> {
return /* your animation instance */;
})
// or
// .animateWith(context, R.anim.my_awesome_animation)
.withDelayBetweenEachChild(250)
.withViewsVisibilityBeforeAnimation(View.INVISIBLE)
.withEndAction(() -> {})
.start();
نکته
در صورتی که نیاز به اجرا دوباره انیمیشن ها شدید از view animator استفاده می کنید به شکل زیر
// First call.
ViewsAnimator viewsAnimator = Views.from(groupView)
.animateWith(context, R.anim.my_awesome_animation)
.start();
// Second call.
myButton.setOnClickListener((view) -> {
viewsAnimator.start();
});