Posted by
Tell Me How
on
- Get link
- Google+
- Other Apps
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
dependencies { compile 'com.github.Yalantis:OfficialFoldingTabBar.Android:v0.9' }It’s very simple. On Android we have the @menu resource type. We can think of FoldingTabBar as a menu. Let’s create our menu file:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/ftb_menu_nearby" android:icon="@drawable/ic_nearby_icon" android:title="Nearby"/> <item android:id="@+id/ftb_menu_new_chat" android:icon="@drawable/ic_new_chat_icon" android:title="Chat"/> <item android:id="@+id/ftb_menu_profile" android:icon="@drawable/ic_profile_icon" android:title="Profile"/> <item android:id="@+id/ftb_menu_settings" android:icon="@drawable/ic_settings_icon" android:title="Settings"/> </menu>Looks good. This is the menu that you’re using for dialogs, toolbar menus, or the navigation drawer.
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:id="@+id/activity_main" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/colorAccent" tools:context="client.yalantis.com.foldingtabbarandroid.MainActivity"> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v4.view.ViewPager> <client.yalantis.com.foldingtabbar.FoldingTabBar android:id="@+id/folding_tab_bar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="@dimen/activity_horizontal_margin" android:layout_centerInParent="true" android:layout_alignParentBottom="true" app:menu="@menu/menu_tab_bar"/> </RelativeLayout>As you can see, we have some custom attributes. The main and required attribute is app:menu – here you can link your menu file to our component.
tabBar.setOnFoldingItemClickListener(new FoldingTabBar.OnFoldingItemSelectedListener() { @Override public boolean onFoldingItemSelected(@NotNull MenuItem item) { switch (item.getItemId()) { case R.id.ftb_menu_nearby: mViewPager.setCurrentItem(0); break; case R.id.ftb_menu_new_chat: mViewPager.setCurrentItem(1); break; case R.id.ftb_menu_profile: mViewPager.setCurrentItem(2); break; case R.id.ftb_menu_settings: mViewPager.setCurrentItem(3); break; } return false; } });The second works when a user presses the home button:
tabBar.setOnMainButtonClickListener(new FoldingTabBar.OnMainButtonClickedListener() { @Override public void onMainButtonClicked() { } });We created two interfaces instead of one because this corresponds with the Interface Segregation principle (from SOLID).
mData = mMenu.visibleItems.map { initAndAddMenuItem(it) }Also, note that we’ve used forEach instead of for loops.
rotationAnimator.addUpdateListener { valueAnimator -> val value = valueAnimator.animatedValue as Float mainImageView.rotation = value }Really beautiful, isn’t it?
val scalingAnimator = ValueAnimator.ofInt(mSize, destWidth).apply { addUpdateListener(scaleAnimator) addListener(rollUpListener) }
internal class CustomBounceInterpolator(val amplitude: Double = 0.1, val frequency: Double = 0.8) : Interpolator { override fun getInterpolation(time: Float): Float { return (-1.0 * Math.exp(-time / amplitude) * Math.cos(frequency * time) + 1).toFloat() } }That’s all about the technologies. If you've have any problem then you can download this library with demo.
Comments
Post a Comment