当前位置:   article > 正文

android DrawerLayout实现仿QQ侧滑菜单_安卓仿qq侧滑

安卓仿qq侧滑
公司要做一侧滑菜单,和QQ类似的侧滑菜单效果。利用DrawerLayout实现效果比较好。实现比较简单。
  1. drawerLayout.setDrawerListener(new DrawerListener() {
  2. @Override
  3. public void onDrawerStateChanged(int newState) {
  4. }
  5. @Override
  6. public void onDrawerSlide(View drawerView, float slideOffset) {
  7. View mContent = drawerLayout.getChildAt(0);
  8. View mMenu = drawerView;
  9. float scale = 1 - slideOffset;
  10. float rightScale = 0.8f + scale * 0.2f;
  11. if (drawerView.getTag().equals("LEFT")) {
  12. float leftScale = 1 - 0.3f * scale;
  13. ViewHelper.setScaleX(mMenu, leftScale);
  14. ViewHelper.setScaleY(mMenu, leftScale);
  15. ViewHelper.setAlpha(mMenu, 0.6f + 0.4f * (1 - scale));
  16. ViewHelper.setTranslationX(mContent, mMenu.getMeasuredWidth() * (1 - scale));
  17. ViewHelper.setPivotX(mContent, 0);
  18. ViewHelper.setPivotY(mContent, mContent.getMeasuredHeight() / 2);
  19. mContent.invalidate();
  20. ViewHelper.setScaleX(mContent, rightScale);
  21. ViewHelper.setScaleY(mContent, rightScale);
  22. } else {
  23. ViewHelper.setTranslationX(mContent, -mMenu.getMeasuredWidth() * slideOffset);
  24. ViewHelper.setPivotX(mContent, mContent.getMeasuredWidth());
  25. ViewHelper.setPivotY(mContent, mContent.getMeasuredHeight() / 2);
  26. mContent.invalidate();
  27. ViewHelper.setScaleX(mContent, rightScale);
  28. ViewHelper.setScaleY(mContent, rightScale);
  29. }
  30. }
  31. @Override
  32. public void onDrawerOpened(View drawerView) {
  33. }
  34. @Override
  35. public void onDrawerClosed(View drawerView) {
  36. drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.RIGHT);
  37. }
  38. });

布局代码:
/
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/id_drawerLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/sidebar_bg" >

    <LinearLayout
        android:id="@+id/id_center_linear"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
         >
    </LinearLayout>
<!-- 需注意设置tag为LEFT -->
    <LinearLayout
        android:id="@+id/id_left_menu"
        android:layout_width="250dp"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        android:orientation="horizontal"
        android:tag="LEFT"
        >
    </LinearLayout>
</android.support.v4.widget.DrawerLayout>
效果图:

录屏有点问题,见谅!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/279422
推荐阅读
相关标签
  

闽ICP备14008679号