Skip to content

Nitish33/CoolNavigationBar

Repository files navigation

CoolNavigationBar

Cool Menu

In this project i have implement a menu using view pager. I first tried it will Navigation bar , so the name of the project.
To implement this menu , i have used view pager. First and third page are the menu page , and second page is our content
frame.

When we slide our page , say left to right. when first menu appear. What i have done is.

  • Set the page translation of first page (one with negative position offset) to 0
  • Resize The content page
  • Shift the content page to align to parent right
  • Implementing Page Transformation

    PageTransformer is the interface which will control all our transformation.


    @Override public void transformPage(@NonNull View page, float position) {
        if(position<-1)
            page.setAlpha(0);
        else if(position>1)
            page.setAlpha(0);
    
        else page.setAlpha(1);
    
    
        if(page.getId() == R.id.menu){
            page.setTranslationX(-position*page.getWidth());
        }
    
        else if(page.getId() == R.id.content){
    
            if(position>0) {
    
                float pos = Math.abs(position);
                float scale = Math.max(.5f, 1 - pos);
                page.setScaleY(scale);
                page.setScaleX(scale);
    
                float pageWidth = page.getWidth();
                float pageScaleWidth = scale * pageWidth;
                float deltaWidth = pageWidth - pageScaleWidth;
    
                page.setTranslationX((1 - position) * page.getWidth() - pageScaleWidth - deltaWidth / 2);
    
    
                Log.e(TAG, "transformpage : content" + page.getWidth() + " " + deltaWidth
                        + "  " + pageScaleWidth);
    
            }
    
            else if(position<0){
                float pos = Math.abs(position);
                float scale = Math.max(.5f, 1 - pos);
                page.setScaleY(scale);
                page.setScaleX(scale);
    
                float pageWidth = page.getWidth();
                float pageScaleWidth = scale * pageWidth;
                float deltaWidth = pageWidth - pageScaleWidth;
    
                page.setTranslationX(-position* page.getWidth()-deltaWidth/2);
    
    
                Log.e(TAG, "transformpage : content" + page.getWidth() + " " + deltaWidth
                        + "  " + pageScaleWidth);
    
            }
        }
    
        else if(page.getId() == R.id.menu2){
            page.setTranslationX(-position*page.getWidth());
            Log.e(TAG, "transformPage: menu 2" );
        }
        else
        Log.e(TAG,"something wrong");
    }
    

    About

    No description, website, or topics provided.

    Resources

    Stars

    Watchers

    Forks

    Releases

    No releases published

    Packages

    No packages published

    Languages