首页

<赞>android 侧边栏菜单+动画效果 示例源码下载

java

2020-7-17

package yalantis.com.sidemenu.sample;

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.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.animation.AccelerateInterpolator;
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.sidemenu.interfaces.Resourceble;
import yalantis.com.sidemenu.interfaces.ScreenShotable;
import yalantis.com.sidemenu.model.SlideMenuItem;
import yalantis.com.sidemenu.sample.fragment.ContentFragment;
import yalantis.com.sidemenu.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.content_music;
    private LinearLayout linearLayout;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        contentFragment = ContentFragment.newInstance(R.drawable.content_music);
        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.BUILDING, R.drawable.icn_1);
        list.add(menuItem);
        SlideMenuItem menuItem2 = new SlideMenuItem(ContentFragment.BOOK, R.drawable.icn_2);
        list.add(menuItem2);
        SlideMenuItem menuItem3 = new SlideMenuItem(ContentFragment.PAINT, R.drawable.icn_3);
        list.add(menuItem3);
        SlideMenuItem menuItem4 = new SlideMenuItem(ContentFragment.CASE, R.drawable.icn_4);
        list.add(menuItem4);
        SlideMenuItem menuItem5 = new SlideMenuItem(ContentFragment.SHOP, R.drawable.icn_5);
        list.add(menuItem5);
        SlideMenuItem menuItem6 = new SlideMenuItem(ContentFragment.PARTY, R.drawable.icn_6);
        list.add(menuItem6);
        SlideMenuItem menuItem7 = new SlideMenuItem(ContentFragment.MOVIE, R.drawable.icn_7);
        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);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (drawerToggle.onOptionsItemSelected(item)) {
            return true;
        }
        switch (item.getItemId()) {
            case R.id.action_settings:
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    private ScreenShotable replaceFragment(ScreenShotable screenShotable, int topPosition) {
        this.res = this.res == R.drawable.content_music ? R.drawable.content_films : R.drawable.content_music;
        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);
    }
}

资源下载此资源下载价格为3D币(VIP免费),请先
资源文件列表
ASide-Menu.Android-master/.gitignore , 365
ASide-Menu.Android-master/.gitmodules , 0
ASide-Menu.Android-master/.gradle/3.3/taskArtifacts/fileHashes.bin , 307369
ASide-Menu.Android-master/.gradle/3.3/taskArtifacts/fileSnapshots.bin , 1916687
ASide-Menu.Android-master/.gradle/3.3/taskArtifacts/taskArtifacts.bin , 89822
ASide-Menu.Android-master/.gradle/3.3/taskArtifacts/taskArtifacts.lock , 17
ASide-Menu.Android-master/.gradle/3.3/tasks/_app_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin , 26505
ASide-Menu.Android-master/.gradle/3.3/tasks/_app_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock , 17
ASide-Menu.Android-master/.gradle/3.3/tasks/_app_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin , 19690
ASide-Menu.Android-master/.gradle/3.3/tasks/_app_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock , 17
ASide-Menu.Android-master/.gradle/3.3/tasks/_library_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin , 23863
ASide-Menu.Android-master/.gradle/3.3/tasks/_library_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock , 17
ASide-Menu.Android-master/.gradle/3.3/tasks/_library_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin , 19200
ASide-Menu.Android-master/.gradle/3.3/tasks/_library_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock , 17
ASide-Menu.Android-master/.idea/compiler.xml , 686
ASide-Menu.Android-master/.idea/copyright/profiles_settings.xml , 76
ASide-Menu.Android-master/.idea/gradle.xml , 679
ASide-Menu.Android-master/.idea/libraries/appcompat_v7_23_1_1.xml , 591
ASide-Menu.Android-master/.idea/libraries/CircularReveal_1_0_4.xml , 429
ASide-Menu.Android-master/.idea/libraries/library_2_4_0.xml , 520
ASide-Menu.Android-master/.idea/libraries/support_annotations_23_1_1.xml , 507
ASide-Menu.Android-master/.idea/libraries/support_v4_23_1_1.xml , 735
ASide-Menu.Android-master/.idea/misc.xml , 1737
ASide-Menu.Android-master/.idea/modules.xml , 500
ASide-Menu.Android-master/.idea/runConfigurations.xml , 564
ASide-Menu.Android-master/.idea/workspace.xml , 218700
ASide-Menu.Android-master/app/.gitignore , 7
ASide-Menu.Android-master/app/app.iml , 8615
ASide-Menu.Android-master/app/build/generated/source/buildConfig/androidTest/debug/yalantis/com/sidemenu/sample/test/BuildConfig.java , 473
ASide-Menu.Android-master/app/build/generated/source/buildConfig/debug/yalantis/com/sidemenu/sample/BuildConfig.java , 463
ASide-Menu.Android-master/app/build/generated/source/r/debug/android/support/v7/appcompat/R.java , 85159
ASide-Menu.Android-master/app/build/generated/source/r/debug/yalantis/com/sidemenu/R.java , 85661
ASide-Menu.Android-master/app/build/generated/source/r/debug/yalantis/com/sidemenu/sample/R.java , 380631
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-af.json , 15823
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-am.json , 15817
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-ar.json , 15825
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-az-rAZ.json , 15198
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-bg.json , 15827
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-bn-rBD.json , 15999
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-ca.json , 15827
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-cs.json , 15825
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-da.json , 15821
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-de.json , 15825
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-el.json , 15829
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-en-rAU.json , 15989
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-en-rGB.json , 15989
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-en-rIN.json , 15989
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-es-rUS.json , 15997
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-es.json , 15825
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-et-rEE.json , 15997
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-eu-rES.json , 15993
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-fa.json , 15827
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-fi.json , 15821
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-fr-rCA.json , 15998
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-fr.json , 15829
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-gl-rES.json , 15995
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-gu-rIN.json , 15993
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-h320dp-v13.json , 1024
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-h720dp-v13.json , 1024
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-hdpi-v4.json , 1086
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-hi.json , 15826
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-hr.json , 15825
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-hu.json , 15829
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-hy-rAM.json , 15993
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-in.json , 15827
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-is-rIS.json , 15987
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-it.json , 15823
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-iw.json , 15819
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-ja.json , 15813
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-ka-rGE.json , 15994
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-kk-rKZ.json , 15992
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-km-rKH.json , 15991
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-kn-rIN.json , 15996
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-ko.json , 15809
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-ky-rKG.json , 15993
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-land.json , 4912
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-large-v4.json , 10423
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-ldltr-v21.json , 1030
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-ldrtl-v23.json , 1030
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-lo-rLA.json , 15989
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-lt.json , 15829
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-lv.json , 15827
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-mk-rMK.json , 14413
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-ml-rIN.json , 15999
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-mn-rMN.json , 15991
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-mr-rIN.json , 15996
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-ms-rMY.json , 15995
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-my-rMM.json , 15998
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-nb.json , 15817
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-ne-rNP.json , 15999
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-nl.json , 15829
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-pa-rIN.json , 15989
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-pl.json , 15826
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-port.json , 1008
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-pt-rBR.json , 15997
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-pt-rPT.json , 15997
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-pt.json , 15829
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-ro.json , 15829
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-ru.json , 15827
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-si-rLK.json , 15993
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-sk.json , 15823
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-sl.json , 15826
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-sq-rAL.json , 15993
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-sr.json , 15827
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-sv.json , 15825
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-sw.json , 15823
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-sw600dp-v13.json , 6532
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-ta-rIN.json , 15995
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-te-rIN.json , 15997
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-th.json , 15823
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-tl.json , 15831
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-tr.json , 15823
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-uk.json , 15825
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-ur-rPK.json , 15993
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-uz-rUZ.json , 15206
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-v11.json , 14429
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-v12.json , 3483
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-v14.json , 8334
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-v17.json , 12197
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-v18.json , 1003
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-v21.json , 70057
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-v22.json , 3480
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-v23.json , 5053
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-vi.json , 15828
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-w360dp-v13.json , 1024
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-w480dp-v13.json , 1807
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-w500dp-v13.json , 1024
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-w600dp-v13.json , 1807
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-w720dp-v13.json , 1024
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-w820dp-v13.json , 949
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-xlarge-land-v4.json , 1042
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-xlarge-v4.json , 7293
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-zh-rCN.json , 15975
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-zh-rHK.json , 15975
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-zh-rTW.json , 15975
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values-zu.json , 15827
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/multi/values.json , 387899
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/single/anim.json , 3728
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/single/color-v11.json , 888
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/single/color-v23.json , 404
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/single/color.json , 3614
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/single/drawable-hdpi-v4.json , 742
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/single/drawable-hdpi.json , 21270
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/single/drawable-ldrtl-hdpi.json , 1688
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/single/drawable-ldrtl-mdpi.json , 1688
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/single/drawable-ldrtl-xhdpi.json , 1696
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/single/drawable-ldrtl-xxhdpi.json , 1704
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/single/drawable-ldrtl-xxxhdpi.json , 1712
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/single/drawable-mdpi-v4.json , 742
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/single/drawable-mdpi.json , 21270
ASide-Menu.Android-master/app/build/intermediates/blame/res/debug/single/drawable-v21.json , 832
最多只能显示150条信息!
没有账号? 忘记密码?

社交账号快速登录