开源库guillotine使用解析

转载请注明出处:王亟亟的大牛之路
最近在忙跳槽的事,导致好多天没敲代码,昨天正好看到这个库终于搞通然后就写篇文章吧(之前Gradle怎么都有问题,真是坑)
看多了千篇一律的左右抽屉形式的主Menu和Content部分,看这个菜单还是一种新感觉吧,话不多说先上效果图。


大致就是按左上角的红色/蓝色按钮然后显示菜单和主内容。

Git上的项目,多数是Gradle建包的所以就配合吧,包很简单,一个Lib包一个Sample的项目包。(拿来一族表示,能用就行,好,来看看怎么用)

要使用这个库要写一个Application类并且在manifest里注册这个类
ps:用过SlidingMenu的小伙伴一定知道,他们都要一个类似的这个类

public class App extends Application {
    private static final String CANARO_EXTRA_BOLD_PATH = "fonts/canaro_extra_bold.otf";
    public static Typeface canaroExtraBold;

    @Override
    public void onCreate() {
        super.onCreate();
        initTypeface();
    }

    private void initTypeface() {
        canaroExtraBold = Typeface.createFromAsset(getAssets(), CANARO_EXTRA_BOLD_PATH);

    }
}

大牛还写了一个自定义的TextView其实,这个类有没有无所谓了,我们使用的时候可以无视他

public class CanaroTextView extends TextView {
    public CanaroTextView(Context context) {
        this(context, null);
    }

    public CanaroTextView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public CanaroTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        setTypeface(App.canaroExtraBold);
    }

}

主Activity
这里大牛用了一个注解来解决他的FindViewById的事,类库地址http://jakewharton.github.io/butterknife/,这里不做解释,不过看了看还是蛮简单的,可以以后在项目中试用下

public class MainActivity extends AppCompatActivity {
    private static final long RIPPLE_DURATION = 250;

    @InjectView(R.id.toolbar)
    Toolbar toolbar;
    @InjectView(R.id.root)
    FrameLayout root;
    @InjectView(R.id.content_hamburger)
    View contentHamburger;
    Button testbuttonbutton;
    @InjectView(R.id.contentbutton)
    Button contentbutton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity);
        ButterKnife.inject(this);

        if (toolbar != null) {
            setSupportActionBar(toolbar);
            getSupportActionBar().setTitle(null);
        }

        View guillotineMenu = LayoutInflater.from(this).inflate(R.layout.guillotine, null);
        root.addView(guillotineMenu);

        new GuillotineAnimation.GuillotineBuilder(guillotineMenu, guillotineMenu.findViewById(R.id.guillotine_hamburger), contentHamburger)
                .setStartDelay(RIPPLE_DURATION)
                .setActionBarViewForAnimation(toolbar)
                .build();
        testbuttonbutton =(Button)guillotineMenu.findViewById(R.id.testbutton);
        listener();
    }

    private void listener(){
        testbuttonbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"menuButton",Toast.LENGTH_SHORT).show();
            }
        });
        contentbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"contentbutton",Toast.LENGTH_SHORT).show();
            }
        });
    }
}

逻辑:在主页面吐司一个“contentbutton”,然后在菜单页面吐司一个“menuButton”。
我们根本不需要对展示层做什么修改,照搬用就行了,很方便。

manifest文件

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.yalantis.guillotine.sample">

    <application
        android:name=".App"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"

        android:theme="@style/AppTheme">

        <activity
            android:name=".activity.MainActivity"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

源码地址:http://yunpan.cn/ccNJpEzA4NZGd 访问密码 7a65
谢谢大家

时间: 2024-09-20 01:12:37

开源库guillotine使用解析的相关文章

iOS5系统API和5个开源库的JSON解析速度测试

   iOS5系统API和5个开源库的JSON解析速度测试 iOS5新增了JSON解析的API,我们将其和其他五个开源的JSON解析库进行了解析速度的测试,下面是测试的结果和工程代码附件.   我们选择的测试对象包含下面的这几个框架,其中NSJSONSerialization是iOS5系统新增的JSON解析的API,需要iOS5的环境,如果您在更低的版本进行测试,应该屏蔽相应的代码调用.   - [SBJSON (json-framework)](http://code.google.com/p

Java中使用开源库JSoup解析HTML文件实例_java

HTML是WEB的核心,互联网中你看到的所有页面都是HTML,不管它们是由JavaScript,JSP,PHP,ASP或者是别的什么WEB技术动态生成的.你的浏览器会去解析HTML并替你去渲染它们.不过如果你需要自己在Java程序中解析HTML文档并查找某些元素,标签,属性或者检查某个特定的元素是否存在的话,那又该如何呢?如果你已经使用Java编程多年了,我相信你肯定试过去解析XML,也使用过类似DOM或者SAX这样的解析器,不过很有可能你从未进行过任何的HTML解析的工作.更讽刺的是,在Jav

开源库Undobar简单使用解析

转载请注明出处:王亟亟的大牛之路 最近不忙在翻Git的时候发现这个自定义吐司(Toast)的开源库,就写这篇博文我分享给大家,话不多说线上截图(貌似很多截屏录像的APP都掏ROOT,测试机懒得弄,有知道其他方法的小伙伴帮忙推荐哈) 一些自定义的吐司和Animation,在不适用Dialog想用吐司省立的时候还是一个不错的选择哦! 包目录 一个Demo包,一个Lib包,Lib包里的东西其实不多,可以把它抠出来放在自己的项目目录里,就可读性稍微更高点. 举例分析: 这是其中一个效果的Activity

C++开源库,欢迎补充。

C++在"商业应用"方面,曾经是天下第一的开发语言,但这一桂冠已经被java抢走多年.因为当今商业应用程序类型,已经从桌面应用迅速转移成 Web应 用.当Java横行天下之后,MS又突然发力,搞出C#语言,有大片的曾经的C++程序员,以为C++要就此沉沦,未料,这三年来,C++的生命力突然被 严重地增强了.主力原因就是开源的软件.基础软件(比如并发原生支持,比如Android必定要推出原生的SDK).各种跨平台应用的出现.   开源C++库必须具有以下特点:必须是成熟的产品.跨平台的产

站在巨人的肩膀上,C++开源库大全

程序员要站在巨人的肩膀上,C++拥有丰富的开源库,这里包括:标准库.Web应用框架.人工智能.数据库.图片处理.机器学习.日志.代码分析等.   标准库 C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分. Standard Template Library:标准模板库 C POSIX library : POSIX系统的C标准库规范 ISO C++ Standards Committee :C++标准委员会 框架 C++通用框架

Android非常有用的开源库介绍整理

Android开源库 自己一直很喜欢Android开发,就如博客副标题一样,我想做个好的App. 在摸索过程中,GitHub上搜集了很多很棒的Android第三方库,推荐给在苦苦寻找的开发者,而且我会不定期的更新这篇文章. 本文的其他贡献者: ____sky____ 感谢~ 我的GitHub Android下的优秀开发库数不胜数,在本文中,我列举的多是开发流程中最常用的一些.如果你还想了解更多的Android开源库,可以查看我的GitHub Star,过滤Java选项,每一个库都是我认真查看或者

2015 年度 Android 开发者必备的 5 个开源库

本文讲的是2015 年度 Android 开发者必备的 5 个开源库, 在2014年6月,我们发表了一篇关于5 个顶级 Android 开源库的文章,我们一直在用,并且相信每个 Android 开发者都应该了解这些开源库.从那之后,Android 方面已经发生了很多变化,所以我们写了这篇文章,我们最喜欢的5个开源库的更新版. 下面是更新列表: 1. Retrofit 当涉及到实现 REST APIs 时,Retrofit 仍是我们的最爱. 他们的网站上写着: "Retrofit 将 REST A

Linux 后台开发工作中常用的开源库

后台开发,语言主要是 c 和 c++ , 这里简单罗列一下工作中用的很频繁的那些开源软件 1. OpenSSL openssl OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法.常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用. 下载地址: https://www.openssl.org/source/ 2.TinyXML tinyxml 简单,高效,灵活的一套操作 XML 文件的开源库. 下载地址: http://www.grinninglizar

【Alljoyn】Alljoyn学习笔记五 AllJoyn开源技术基础概念解析

AllJoyn开源技术基础概念解析 摘要: 总线(Bus) 实现P2P通信的基础 AllJoyn 的底层协议类似于D-Bus,相当于是跨设备分布式的 D-Bus 总线附件(Bus Attachment) 每一个连接到总线上的Alljoyn应用程序被称为总线附件,可用C++或Java编写 每个总线附件 ... 总线(Bus) 实现P2P通信的基础 AllJoyn 的底层协议类似于D-Bus,相当于是跨设备分布式的 D-Bus总线附件(Bus Attachment) 每一个连接到总线上的Alljoy