Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Different Fragment , different toolbar and menu... #52

Closed
emadph opened this issue Sep 10, 2016 · 4 comments
Closed

Different Fragment , different toolbar and menu... #52

emadph opened this issue Sep 10, 2016 · 4 comments

Comments

@emadph
Copy link

emadph commented Sep 10, 2016

hey
4 fragment and 4 different side menu all in view pager (navigation Tab Bar)
side menus Were defined in each fragment.
now how close side menus in each fragment after fragment change.

Piece of my code in fragment...

  View rootView = getActivity().getLayoutInflater().inflate(R.layout.fragment_homepage, container,
            false);
    setHasOptionsMenu(true);

    menuFragment = MenuFragment.newInstance(R.drawable.about);
    getActivity().getSupportFragmentManager().beginTransaction()
            .replace(R.id.content_frame, menuFragment)
            .commit();
    drawerLayout = (DrawerLayout) rootView.findViewById(R.id.drawer_layout);
    drawerLayout.setScrimColor(getResources().getColor(android.R.color.transparent));

    linearLayout = (LinearLayout) rootView.findViewById(R.id.left_drawer);
    linearLayout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            drawerLayout.closeDrawers();
        }
    });

    viewAnimator = new ViewAnimator<>((ActionBarActivity) getActivity(), list, menuFragment, drawerLayout, this);

    toolbar = (Toolbar) rootView.findViewById(R.id.toolbar);
    title_toolbar = (TextView) toolbar.findViewById(R.id.title_toolbar);
    ((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);


    ((AppCompatActivity) getActivity()).getSupportActionBar().setHomeButtonEnabled(false);
  ((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    ((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayShowTitleEnabled(false);

    drawerToggle = new ActionBarDrawerToggle(
            getActivity(),                  /* host Activity */
            drawerLayout,         /* DrawerLayout object */
            toolbar,  /* nav drawer icon to replace 'Up' caret */
            R.string.hello_world,  /* "open drawer" description */
            R.string.action_Settings  /* "close drawer" description */
    ) {

        /** Called when a drawer has settled in a completely closed state. */
        public void onDrawerClosed(View view) {
            super.onDrawerClosed(view);
            linearLayout.removeAllViews();
            linearLayout.invalidate();
        }

        @Override
        public void onDrawerSlide(View drawerView, float slideOffset) {
            super.onDrawerSlide(drawerView, slideOffset);
            if (slideOffset > 0.6 && linearLayout.getChildCount() == 0)
                viewAnimator.showMenuContent();
        }

        /** Called when a drawer has settled in a completely open state. */
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);

        }
    };
    drawerLayout.setDrawerListener(drawerToggle);

    createMenuList();
    drawerToggle.syncState();
@TeeRawk
Copy link
Contributor

TeeRawk commented Sep 28, 2016

Hello, i assume you want to close every drawer after some event. You should call drawerLayout.closeDrawers() in every fragment on event.

@Eddy2017
Copy link

Eddy2017 commented Dec 13, 2016

Please i need your help to display each clic button to this proper view instead two views with pictures.
This is my code for main activity. Please show me what to do, i'm a real beginner.
Thanks a lot for your reply.

package yalantis.com.sample;

import android.content.DialogInterface;
import android.content.res.Configuration;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.animation.AccelerateInterpolator;
import android.widget.Button;
import android.widget.LinearLayout;

import java.util.ArrayList;
import java.util.List;

import io.codetail.animation.SupportAnimator;
import io.codetail.animation.ViewAnimationUtils;
import yalantis.com.sexocard.interfaces.Resourceble;
import yalantis.com.sexocard.interfaces.ScreenShotable;
import yalantis.com.sexocard.model.SlideMenuItem;
import yalantis.com.sexocard.sample.fragment.ContentFragment;
import yalantis.com.sexocard.util.ViewAnimator;

public class MainActivity extends AppCompatActivity implements ViewAnimator.ViewAnimatorListener {

private DrawerLayout drawerLayout;
private ActionBarDrawerToggle drawerToggle;
private List<SlideMenuItem> list = new ArrayList<>();
private ContentFragment contentFragment;
private ViewAnimator viewAnimator;
private int res = R.drawable.backmain;
private LinearLayout linearLayout;


Button button;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


contentFragment = ContentFragment.newInstance(R.drawable.backmain);
    getSupportFragmentManager().beginTransaction()
            .replace(R.id.content_frame, contentFragment)
            .commit();

    drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawerLayout.setScrimColor(Color.TRANSPARENT);
    linearLayout = (LinearLayout) findViewById(R.id.left_drawer);
    linearLayout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            drawerLayout.closeDrawers();
        }
    });


    setActionBar();
    createMenuList();
    viewAnimator = new ViewAnimator<>(this, list, contentFragment, drawerLayout, this);}



private void createMenuList() {
    SlideMenuItem menuItem0 = new SlideMenuItem(ContentFragment.CLOSE, R.drawable.icn_close);
    list.add(menuItem0);
    SlideMenuItem menuItem = new SlideMenuItem(ContentFragment.GAME, R.drawable.controller);
    list.add(menuItem);
    SlideMenuItem menuItem2 = new SlideMenuItem(ContentFragment.SETTINGS, R.drawable.settings);
    list.add(menuItem2);
    SlideMenuItem menuItem3 = new SlideMenuItem(ContentFragment.RULE, R.drawable.rule);
    list.add(menuItem3);
    SlideMenuItem menuItem4 = new SlideMenuItem(ContentFragment.SHARE, R.drawable.share);
    list.add(menuItem4);
    SlideMenuItem menuItem5 = new SlideMenuItem(ContentFragment.RATE, R.drawable.rate);
    list.add(menuItem5);
    SlideMenuItem menuItem6 = new SlideMenuItem(ContentFragment.ABOUT, R.drawable.about);
    list.add(menuItem6);
    SlideMenuItem menuItem7 = new SlideMenuItem(ContentFragment.RELEASE, R.drawable.ic_release);
    list.add(menuItem7);
}


private void setActionBar() {
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    drawerToggle = new ActionBarDrawerToggle(
            this,                  /* host Activity */
            drawerLayout,         /* DrawerLayout object */
            toolbar,  /* nav drawer icon to replace 'Up' caret */
            R.string.drawer_open,  /* "open drawer" description */
            R.string.drawer_close  /* "close drawer" description */
    ) {

        /** Called when a drawer has settled in a completely closed state. */
        public void onDrawerClosed(View view) {
            super.onDrawerClosed(view);
            linearLayout.removeAllViews();
            linearLayout.invalidate();
        }

        @Override
        public void onDrawerSlide(View drawerView, float slideOffset) {
            super.onDrawerSlide(drawerView, slideOffset);
            if (slideOffset > 0.6 && linearLayout.getChildCount() == 0)
                viewAnimator.showMenuContent();
        }

        /** Called when a drawer has settled in a completely open state. */
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
        }
    };
    drawerLayout.setDrawerListener(drawerToggle);
}

@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    drawerToggle.syncState();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    drawerToggle.onConfigurationChanged(newConfig);
}


private ScreenShotable replaceFragment(ScreenShotable screenShotable, int topPosition) {
    this.res = this.res == R.drawable.backmain ? R.drawable.body : R.drawable.backmain;
    View view = findViewById(R.id.content_frame);
    int finalRadius = Math.max(view.getWidth(), view.getHeight());
    SupportAnimator animator = ViewAnimationUtils.createCircularReveal(view, 0, topPosition, 0, finalRadius);
    animator.setInterpolator(new AccelerateInterpolator());
    animator.setDuration(ViewAnimator.CIRCULAR_REVEAL_ANIMATION_DURATION);

    findViewById(R.id.content_overlay).setBackgroundDrawable(new BitmapDrawable(getResources(), screenShotable.getBitmap()));
    animator.start();
    ContentFragment contentFragment = ContentFragment.newInstance(this.res);
    getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, contentFragment).commit();
    return contentFragment;
}

@Override
public ScreenShotable onSwitch(Resourceble slideMenuItem, ScreenShotable screenShotable, int position) {
    switch (slideMenuItem.getName()) {
        case ContentFragment.CLOSE:
            return screenShotable;
        default:
            return replaceFragment(screenShotable, position);
    }
}

@Override
public void disableHomeButton() {
    getSupportActionBar().setHomeButtonEnabled(false);

}

@Override
public void enableHomeButton() {
    getSupportActionBar().setHomeButtonEnabled(true);
    drawerLayout.closeDrawers();

}

@Override
public void addViewToContainer(View view) {
    linearLayout.addView(view);
}



@Override
public void onBackPressed() {
    //Pop up pour quitter l'application, j'en suis fier!!!
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Are you sure you want to exit?")
            .setCancelable(false)
            .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    MainActivity.this.finish();
                }
            })
            .setNegativeButton("No", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    dialog.cancel();
                }
            });
    AlertDialog alert = builder.create();
    alert.show();

}

}

@warko-san
Copy link
Contributor

Hi, @Eddy2017! Can you please provide more information what exactly you want to achieve?

@PenzK PenzK closed this as completed Jan 23, 2017
@arpitabadwaik
Copy link

I want to add different headerview in navigation view when specific page is selected in viewpager. Please help me..

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants