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);
}
}
资源文件列表
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条信息!
