网上的源码实现不太全,自己写一份,详细实现原理在实际代码应用填坑过后再总结吧。
GitHub源码下载:
https://github.com/Yalantis/GuillotineMenu-Android
AS—>open
报错
在修改了一下dependencies添加ButterKnife和GuillotineMenu依赖后依然无法解决,所以干脆直接新建一个project,在里面部署,
开发环境:Android Studio 3.0.1
gradle 4.1-all
applicationId “com.test.testt”
minSdkVersion>=21(原因在于有个组件需要至少21才支持,忘了是啥了)
android {
compileSdkVersion 26
defaultConfig {
applicationId "com.test.testt"
minSdkVersion 21
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
默认添加MainActivity.java和activity_main.xml
添加ButterKnife 8.4.0依赖
https://blog.youkuaiyun.com/qq_39587209/article/details/79677279
添加GuillotineMenu依赖
allprojects { repositories { google() jcenter() maven { url "https://jitpack.io" } } }
dependencies {
……
compile 'com.github.Yalantis:GuillotineMenu-Android:1.2'
}
java代码目录根据源码新建“activity”package,部署相关资源
导入GuillotineMenu源码中/main/assets/fonts/canaro_extra_bold.otf, App.java、guillotine.xml、
相关Themes,drawable,style,color,dimen等
代码实现
package com.test.testt.activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import com..test.testt.R;
import com.yalantis.guillotine.animation.GuillotineAnimation;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* Created by Ricardo on 2018/3/25.
*/
public class MainActivity extends AppCompatActivity {
@BindView(R.id.content_hamburger)
ImageView contentHamburger;
@BindView(R.id.toolbar)
Toolbar toolbar;
@BindView(R.id.root)
FrameLayout root;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
if (toolbar!= null) {
setSupportActionBar(toolbar);
getSupportActionBar().setTitle(null);
}
//弹出的菜单
View guillotineMenu = LayoutInflater.from(this).inflate(R.layout.guillotine, null);
root.addView(guillotineMenu);
// 添加弹出的菜单
//GuillotineBuilder的第一个参数为菜单的View,第二个参数为关闭菜单的View也就是菜单布局中的按钮,第三个参数为打开菜单的View也就是主页面中的按钮
new GuillotineAnimation.GuillotineBuilder(guillotineMenu, guillotineMenu.findViewById(R.id.guillotine_hamburger), contentHamburger)
// .setStartDelay(RIPPLE_DURATION)
.setActionBarViewForAnimation(toolbar)
.build()
.close();//close()关闭菜单,open()打开菜单
}
}
效果图就不放了,希望能帮助到你吧~