在android中的弧形边缘导航抽屉
我已经完成了不同的导航抽屉类型,如永久,持久 迷你变体,临时。在android中的弧形边缘导航抽屉
它们都是像下面那样的轮廓形状的矩形。
要求:我想创建一个导航抽屉具有弯曲边缘(在其右侧)。
让我们在我的资产净值看看。鉴于
<android.support.design.widget.NavigationView
android:background="#FFF"
android:id="@+id/nav_view"
android:layout_width="wrap_content" android:layout_height="match_parent"
android:layout_gravity="start" android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main" app:menu="@menu/activity_main_drawer"/>
它包含app:headerLayout
和app:menu
。如果我可以更改父亲NavigationView
边缘,那么app:headerLayout
和app:menu
将显示在其父边界内。我对吗 ?
更改android:background
对我无效。
怎么样在dimens.xml
添加dimen
是没有办法,我可以使用任何属性?
是否可以曲线导航抽屉的边缘(以编程方式或使用图像)?
如果是的话,任何指导将不胜感激。
最后,我决定为这种情况下创建库:https://github.com/rom4ek/ArcNavigationView,随意浏览并使用它:)它是基于Florent Champigny's ArcLayout,有一些调整,这要归功于他。
这个LIB超过建议的优点是,它是建立在从Android的设计库标准NavigationView
顶部,你可以使用它像往常一样,只是改变了类名。希望很快会在jcenter上公布。下面是一些截图:
感谢您的想法! :)
我认为这应该是被接受的答案,甚至在测试它的工作之前 - 你做了你应该得到的不仅仅是赏金:))也谢谢 –
忘记接受xoxo –
根据我的说法,为了达到这个目的,您必须使您自己的自定义类扩展ViewGroup(或FrameLayout),就像我们在DrawerLayout类中一样。
EX:
public class DrawerLayout extends ViewGroup implements DrawerLayoutImpl {
/*
..
*/
}
在您的自定义类,你可以使用Canvas和涂料来绘制您首选的形状。你可以重写这些方法以你的方式实现它。
然后你可以使用它自己的活动中:
MyDrawerLayout drawer = (MyDrawerLayout) findViewById(R.id.my_drawer_layout);
在你activity_file。XML:
<com.yourpackage.MyDrawerLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/my_drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<!-- .... -->
</com.yourpackage.MyDrawerLayout>
嘿谢谢你回答这个问题:) –
这可能库帮助你
如何使用:XML
<com.github.mzule.fantasyslide.FantasyDrawerLayout xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/fake" />// this image is part of home scren
<com.github.mzule.fantasyslide.SideBar
android:id="@+id/leftSideBar"
android:layout_width="200dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@color/colorPrimary"
app:maxTranslationX="66dp"> // This attribute is for curve
<!-- SideBar -->
</com.github.mzule.fantasyslide.SideBar>
JAVA:
SideBar leftSideBar = (SideBar) findViewById(R.id.leftSideBar);
leftSideBar.setFantasyListener(new SimpleFantasyListener() {
@Override
public boolean onHover(@Nullable View view) {
return false;
}
@Override
public boolean onSelect(View view) {
return false;
}
@Override
public void onCancel() {
}
});
顺便说一句,这不是一个项目的要求,我只是对它感兴趣..所以我不急于..将是伟大的创造这种导航!是不是?如果你有一个想法可以随意分享知识:)) –
有一个美丽的图书馆,当打开抽屉时具有弯曲的边缘效果,但不是静态的:)也许这对你很有趣https: //github.com/mxn21/FlowingDrawer – rom4ek
@ rom4ek虐待它试试感谢:)) –