`

Android 侧边栏开发的方法

阅读更多
看到人人网的客户端,不管是ios还是android都有好看的侧边栏滑动的效果,点击上部的按钮可以滑动展开侧边的目录。觉得这个效果比较炫,所以研究了一下实现的方法。关于滑动,实现的思路大概有两种, 一种是利用ScrollView的滑动效果来做,另外一种就是直接使用Animation来作了。
1、使用ScrollView来实现
ScrollView的使用是规则是,当View的Size大于屏幕的边界的时候就可以滚动。实际上,ScrollView并不仅仅只能做这些事情,我们可以对它的属性进行一些设置,让它摇身一变成为我们想要的侧边栏:关掉Scroll Bar,去掉Edge的效果,这样ScrollView看起来就和普通的View没有太大的区别了,接下来的工作就是在ScrollView中填充两个View,一个是我们所需要的侧边栏,另一个就是程序的主内容了,当侧边栏出现的时候主内容要被挤到屏幕外面去。难点来了,这样的要求在layout文件中是定义不出来的。这里我们选择动态的生成这两个View并动态的根据屏幕的大小加载到ScrollView中去。
  @Override
public void onGlobalLayout() {
    parent.getViewTreeObserver().removeGlobalOnLayoutListener(this);
 
    w = scrollView.getMeasuredWidth();
    h = scrollView.getMeasuredWidth();
 
    LayoutInflater inlfater = LayoutInflater.from(parent.getContext());
    app = inlfater.inflate(R.layout.slide_app, null);
    menu = inlfater.inflate(R.layout.slide_menu, null);
    parent.addView(menu, (int) (rate * w), h);
    parent.addView(app, w, h);
}

通过这样 动态的加载我们可以想象此时View的状态应该是app和menu这两个View并排的出现在ScrollView中,这样我们只要控制ScrollVIew的滑动就可以控制在屏幕中显示的内容了。
@Override
public void onClick(View v) {
    if (slideOut) {
        // hide the menu
        System.out.println("hide ");
        scrollView.smoothScrollBy((int) (-rate * w), 0);
    } else {
        // show menu
        System.out.println("show ");
        scrollView.smoothScrollBy((int) (rate * w), 0);
    }
 
    slideOut = !slideOut;
}
 

基本的效果已经实现了,但是LZ随后又发现了一个问题,就是表面上看到的ScrollView虽然是很正常的状态,但是不要忘了我们动态加载的View已经超过了屏幕的宽度,LZ尝试滑动屏幕发现居然是可以滑动的,这点肯定是不能接受的。LZ翻了一下API,找到一个WorkAround的方法,就是禁止ScrollView的touch事件,这样ScrollView就被阉割了不能接受用户的touch事件,自然就不能被滑动了。
到了这里,效果基本就实现了,但是LZ认为这样WorkAround的方式并不是很优雅,我们可以考虑另外一种实现方式。
2、使用动画来实现
Android提供动画的支持,我们可以快速的定义我们的动画,Android支持的动画中就包括滑动,那么这里我们可以把app和menu看作两个碟在一起的View,app遮盖menu。当我们要显示menu的时候只要把app用动画滑到指定的位置就可以了。
 @Override
public void onClick(View v) {
    final int w = app.getMeasuredWidth();
    final int h = app.getMeasuredHeight();
 
    Animation animation = null;
    if (slideOut) {
        // hide
        animation = new TranslateAnimation(0, -(w * rate), 0, 0);
    } else {
        // show
        animation = new TranslateAnimation(0, w * rate, 0, 0);
    }
 
    animation.setFillAfter(true);
    animation.setDuration(500);
    app.startAnimation(animation);
}

启动应用发现滑动效果是出来了,但是LZ发现一个很有意思的问题,当menu被滑出来之后,再点击app上的button没有反应了,而点击app原来那个button的位置却可以触发注册的点击事件。这是为什么呢?原来animation只是引起了app的位移,app的大小没有变化,所以不会触发重新布局app,所以我们看到的app是被移动了,但是它原来的sub view还在原来的地方,这时我们要手动的让app来重新布局,调用app的layout方法。
  @Override
public void onAnimationEnd(Animation animation) {
    if (!slideOut) {
        app.layout((int) (w * rate), 0, (int) (w * rate + w), h);
    } else {
        app.layout(0, 0, w, h);
    }
    app.clearAnimation();
    slideOut = !slideOut;
}

分享到:
评论

相关推荐

    android侧边栏demo

    综上所述,"android侧边栏demo"是一个学习Android应用开发中侧边栏实现的实例,涵盖了`DrawerLayout`的基本使用、菜单项设置、滑动监听、导航处理等核心知识点。通过这个demo,初学者可以快速掌握这一常见功能的实现...

    Android 侧边栏菜单demo

    以下是一些关于如何构建Android侧边栏菜单的关键知识点: 1. **布局设计**: - 使用`DrawerLayout`作为根布局,这是Android SDK提供的一个特殊视图,用于实现侧边栏效果。 - `DrawerLayout`有两个主要的子视图:...

    android侧边栏滑动效果实现

    总之,实现Android侧边栏滑动效果需要理解`DrawerLayout`的工作原理,合理布局XML文件,结合Java或Kotlin代码进行控制,并考虑手势响应、动画效果以及性能优化。遵循Material Design指导,能为用户提供一致且优质的...

    Android侧边栏效果

    首先,让我们详细了解一下Android侧边栏的设计和实现: 1. **Material Design 指南**: Android的侧边栏设计遵循Material Design规范,它强调了清晰的层次结构、明确的交互以及一致的视觉反馈。Material Design...

    android侧边栏效果

    在Android应用开发中,...总之,实现Android侧边栏效果需要对手势检测、布局设计、动画以及状态管理有深入理解。通过"TestSideShowApp"实例,你可以看到这些知识点是如何结合在一起的,从而提升自己的Android开发技能。

    android 侧边栏 demo

    在Android应用开发中,侧边栏(Sidebar)通常被称为抽屉式导航(Drawer Navigation),是很多应用程序的标准设计元素。它允许用户通过从屏幕边缘滑动来显示或隐藏一个包含导航选项的面板。在这个"android 侧边栏 ...

    Android侧边栏滑动

    在Android应用开发中,侧边栏滑动(通常...通过这个小demo,你将有机会实践以上所有知识点,从而理解并掌握Android侧边栏滑动的设计和实现。通过不断实践和调整,你将能够创造出符合自己需求的侧滑菜单,提升用户体验。

    Android 自定义侧边栏列表

    这篇博文中,作者`Crystal_xing`分享了关于自定义Android侧边栏列表的封装方法,让我们一起深入探讨这个主题。 首先,自定义侧边栏列表通常涉及到以下几个核心组件和概念: 1. **DrawerLayout**:Android官方提供...

    android 侧边栏

    总结,Android侧边栏的实现涉及多个组件和设计原则。理解这些概念并熟练应用,可以帮助开发者创建具有优秀用户体验的Android应用。通过`NavigationView`、`DrawerLayout`以及自定义布局,开发者可以灵活地构建自己的...

    android 侧边栏实现 slidingmenu

    在Android应用开发中,侧边栏(Sidebar)是一种常见的设计元素,它通常作为导航菜单,让用户可以方便地访问应用的不同功能。SlidingMenu是实现这种效果的一个流行库,它可以为你的应用添加类似Google Now或者...

    Android实现侧边栏滑动源码

    在Android应用开发中,侧边栏(Sidebar)或者抽屉式导航(Drawer Layout)是一种常见的设计模式,它允许用户从屏幕边缘滑动...这个源码资源是学习Android侧边栏滑动机制的一个好起点,有助于提升你的Android开发技能。

    Android开发--滑动侧边栏

    首先,我们从Android侧边栏的基础开始。侧边栏(Sidebar)或抽屉布局(DrawerLayout)是Android应用设计中的一种组件,它允许用户从屏幕边缘滑出一个隐藏的菜单,提供更多的导航选项或者功能。在Android SDK中,`...

    Android-Android各种侧边栏总结

    Android 各种侧边栏总结

    Android侧边栏滑动【两个源码】

    本文将深入探讨Android侧边栏滑动的实现原理,并基于提供的两个源码进行解析。 首先,Android侧边栏滑动主要依赖于手势检测和布局动画。在Android SDK中,我们可以使用`GestureDetector`类来检测用户的滑动手势,...

    android 侧边栏 抽屉效果

    在Android应用开发中,侧边栏(SideBar)或抽屉效果(Drawer Effect)是一种常见的设计模式,它允许用户通过从屏幕边缘滑动来显示一个包含导航选项的菜单。这种设计通常用于实现主屏幕与多个功能模块之间的切换,...

    android侧边栏的滑动,以及实现启动另外的Activity与更换布局

    本篇文章将重点讲解如何实现Android侧边栏的滑动效果,以及在侧边栏点击后如何启动新的Activity或更换布局。 首先,我们来理解侧边栏的基本结构。侧边栏通常是一个自定义View,包含一个ListView或者RecyclerView,...

    Android 侧边栏滑动。。

    在Android应用开发中,侧边栏(Side Menu)是一种常见的设计模式,用于提供导航和功能选项。"Android 侧边栏滑动...通过研究这个示例,开发者能够快速掌握Android侧边栏滑动的实现方法,并将其应用于自己的应用中。

    Android 侧边栏快速索引

    总之,Android侧边栏快速索引是一项实用的功能,涉及到Android UI组件、适配器机制、手势识别和性能优化等多个方面。通过合理的设计和实现,可以极大地提升用户在浏览长列表时的效率和满意度。在实际开发中,开发者...

    android模仿人人客户端侧边栏

    在Android开发中,模仿这样的侧边栏可以提升应用的用户体验。以下将详细介绍如何使用碎片(Fragment)实现类似"人人"客户端的侧边栏。 首先,我们需要理解Android中的碎片概念。碎片是Android应用开发中的一个组件...

Global site tag (gtag.js) - Google Analytics