Drawer Arrow Drawable(meun-icon-to-back-arrow)使用,仿知乎菜单栏界面
一、什么是Drawer Arrow Drawable
Drawer Arrow Drawable 其实就是一个抽屉侧滑菜单栏,只不过加入了很酷炫的meun-icon-to-back-arrow动画效果,如下图所示
二、Drawer Arrow Drawable的实现原理
设计方法:
我的想法是:如果我能生成每条线末端的移动曲线,我就能随抽屉(drawer)的滑动,根据参数t简单地计算出每条路径(path)上的点,
然后只需从curveA上的点M向curveB上的N绘制一条直线即可。
为了生成这些曲线,我需要一个适合取用的点的集合案例。我首先想到我应该在打开抽屉的时候,从我的设备上录制视频,分成N帧。但是我突然
想到:抽屉滑动时的插值器会使得这些帧不能均匀分布。不用太复杂,我只是粗略地移动抽屉,然后对每一步截屏。
这儿,我把所有的图像放在Adobe Illustrator上,并用一条向量追踪一条线(方便缩放:6pt等于6px),这是一个劳动密集型的过程,
充满了大量的错误;毕竟,六个像素加抗锯齿是一种低精度,相对于要使用到的数学方法
三、Drawer arrow Drawable的使用
[java] view plaincopyprint?
- package com.example.ldrawertest;
-
- import com.example.ldrawerlibrary.ActionBarDrawerToggle;
- import com.example.ldrawerlibrary.DrawerArrowDrawable;
- import android.annotation.SuppressLint;
- import android.app.ActionBar;
- import android.app.Activity;
- import android.content.Intent;
- import android.content.res.Configuration;
- import android.net.Uri;
- import android.os.Bundle;
- import android.support.v4.widget.DrawerLayout;
- import android.view.MenuItem;
- import android.view.View;
- import android.widget.AdapterView;
- import android.widget.ArrayAdapter;
- import android.widget.ListView;
-
-
- public class MainActivity extends Activity {
-
- private DrawerLayout mDrawerLayout;
- private ListView mDrawerList;
- private ActionBarDrawerToggle mDrawerToggle;
- private DrawerArrowDrawable drawerArrow;
- private boolean drawerArrowColor;
-
- @SuppressLint("NewApi")
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
-
- ActionBar ab = getActionBar();
-
- ab.setDisplayHomeAsUpEnabled(true);
-
- ab.setHomeButtonEnabled(true);
-
-
- mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
-
- &nb