New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

com.github.kaichunlin.transition:transition

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

com.github.kaichunlin.transition:transition

Allows the easy creation of animated transition effects when the state of Android UI has changed

  • 0.8.1
  • Source
  • Maven
  • Socket score

Version published
Maintainers
1
Source

android-transition

Android-Transition allows the easy creation of view transitions that reacts to user inputs. The library is designed to be general enough such that the same transition can be applied to differnt UI components like Drawer, SlidingUpPanel, ViewPager, ObservableScrollView (work in progress), etc., as long as appropriate adapter is used.

Changelog

Core module has been updated to 0.8.1 to fix incorrect position on some devices when transiting MenuItem. On Android Studio update Gradle dependency to:

compile 'com.github.kaichunlin.transition:core:0.8.1'

Download from Google Play

Get it on Google Play

The app on Google Play may not be the latest version.

Features

Integration

The simplest way to integrate Android-Transition is to grab them from Maven Central or jCenter. On Android Studio, add the code below to Gradle dependencies:

compile 'com.github.kaichunlin.transition:core:0.8.1'

Adapters that adapts to UI components not found in Android framework or Android Support Library are provided as their own libraries, the table below is the list of libraries:

LibraryFunctionDescription in build.gradle
coreProvides core transition function and adapterscom.github.kaichunlin.transition:core:0.8.1
slidinguppanelAndroidSlidingUpPanel Adaptercom.github.kaichunlin.transition:slidinguppanel:0.8.0

As an example, if an app requires both the core & slidinguppanel libraries, then build.gradle will look like below:

 dependencies {
   //other dependencies
   ...

   compile 'com.github.kaichunlin.transition:core:0.8.1'
   compile 'com.github.kaichunlin.transition:slidinguppanel:0.8.0'
 }

Usage

The app/ folder is a sample app containing dozens of examples.

Two steps to apply transition to any View (sample code):
  1. Use the appropriate adapter:
DrawerListenerAdapter mDrawerListenerAdapter = new DrawerListenerAdapter(mDrawerToggle, R.id.drawerList);
mDrawerListenerAdapter.setDrawerLayout(mDrawerLayout);
  1. Add desired transition to the adapter, ViewTransitionBuilder is used to build the transition:
mDrawerListenerAdapter.addTransition(
ViewTransitionBuilder.transit(findViewById(R.id.big_icon)).rotation(0f, 360f).scaleX(1f, 0.2f).scaleY(1f, 0f).translationX(200f));

Three steps to apply transition to a MenuItem (sample code):
  1. Use the appropriate adapter that extends MenuBaseAdapter:
  DrawerListenerAdapter mDrawerListenerAdapter = new DrawerListenerAdapter(mDrawerToggle, R.id.drawerList);
  mDrawerListenerAdapter.setDrawerLayout(mDrawerLayout);
  1. Let the adapter manage the creation of options menu:
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
      mDrawerListenerAdapter.onCreateOptionsMenu(this, menu);

      return super.onCreateOptionsMenu(menu);
  }
  1. Add desired transition to the adapter, MenuItemTransitionBuilder is used to build the transition:
  //shared configuration
  MenuItemTransitionBuilder builder = MenuItemTransitionBuilder.transit(toolbar).alpha(1f, 0.5f).scale(1f, 0f).cascade(0.3f).visibleOnStartAnimation(true).invalidateOptionOnStopTransition(this, true);
  // create a transition to be used when the drawer transits from the closed state to the opened state 
  // notice that in most situations clone() should be used, i.e. builder.clone(), to prevent builder picking up effects that should only apply to a single transition 
  MenuItemTransition mShrinkClose = builder.translationX(0, 30).build();
  // create a reverse transition to be used when the drawer transits from the opened state to the closed state 
  MenuItemTransition mShrinkOpen = builder.reverse().translationX(0, 30).build();
  //tells adapter the transition and the menu options for both the opened and closed states
  mDrawerListenerAdapter.setupOptions(this, new MenuOptionConfiguration(mShrinkOpen, R.menu.drawer), new MenuOptionConfiguration(mShrinkClose, R.menu.main));

Misc
  • To clear all transitions from an adapter:

      mDrawerListenerAdapter.clearTransition();
    
  • Share a common builder (sample code):

    //calling adapter(mSlidingUpPanelLayoutAdapter) means that when builder.build() is called, the resultant transition will automatically be added to mSlidingUpPanelLayoutAdapter
    ViewTransitionBuilder baseBuilder = ViewTransitionBuilder.transit().interpolator(mInterpolator).adapter(mSlidingUpPanelLayoutAdapter).rotationX(42f).scale(0.8f).translationYAsFractionOfHeight(-0.5f);
    
    //calls clone() so any modification will not be propagated to other transitions build from the same builder
    //adds a transition to view R.id.content_bg
    baseBuilder.clone().target(findViewById(R.id.content_bg)).build();
    
    //apply the same transition effect to a different view (R.id.content)
    baseBuilder.clone().target(findViewById(R.id.content)).build();
    
  • Delay transition evaluation until layout is complete, this is required if a view's position/dimension is used in the evaluation, in such a case ViewUtil provides a helper function (sample code):

      ViewUtil.executeOnGlobalLayout(findViewById(R.id.rotate_slide), new ViewTreeObserver.OnGlobalLayoutListener() {
        public void onGlobalLayout() {
          //create ViewTransitionBuilder here
        }
      });
    

FAQs

Package last updated on 27 May 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc