最近公司让我又新写一个项目,然后里面有个侧换抽屉效果,我进行了编写优化感觉效果比Android原生的流畅很多,交互也很好,因此在此记录一下,效果图如下:

废话少说上源码:主页面Activity: 

public class MainActivity extends BaseActivity implements DrawerLayout.DrawerListener {    @BindView(R.id.iv_title_back)    ImageView ivTitleBack;    @BindView(R.id.card_view)    CardView cardView;    @BindView(R.id.drawer_layout)    DrawerLayout mDrawerLayout;    @Override    protected int getLayout() {        return R.layout.activity_main;    }    @Override    protected void initView(Bundle var1) {        mDrawerLayout.setScrimColor(Color.TRANSPARENT);        ivTitleBack.setOnClickListener(v -> mDrawerLayout.openDrawer(GravityCompat.START));        mDrawerLayout.addDrawerListener(this);    }    @Override    public void onDrawerSlide(@NonNull View drawerView, float slideOffset) {        View mContent = mDrawerLayout.getChildAt(0);        float scale = 1 - slideOffset;        float rightScale = 0.8f + scale * 0.2f;        float leftScale = 0.5f + slideOffset * 0.5f;        drawerView.setAlpha(leftScale);        drawerView.setScaleX(leftScale);        drawerView.setScaleY(leftScale);        mContent.setPivotX(0);        mContent.setPivotY(mContent.getHeight() * 1 / 2);        mContent.setScaleX(rightScale);        mContent.setScaleY(rightScale);        mContent.setTranslationX(drawerView.getWidth() * slideOffset);    }    @Override    public void onDrawerOpened(@NonNull View drawerView) {        cardView.setRadius(20);    }    @Override    public void onDrawerClosed(@NonNull View drawerView) {        cardView.setRadius(0);    }    @Override    public void onDrawerStateChanged(int newState) {        cardView.setRadius(20);    }}

DrawerLayout 就是侧滑布局,通过监听侧滑来动态设置cardview的透明偏移等。

这是main_xml:

<?xml version="1.0" encoding="utf-8"?>                                                                            

ImageView作为里面的黑色妹子图片 固定背景,CardView的作用是为了有那种阴影效果,看上去有立体感,删掉也不影响。 这个就是侧滑fragment:

public class MenuFragment extends BaseFragment {    @BindView(R.id.iv_head)    ImageView ivHead;    @Override    protected int getLayout() {        return R.layout.fragment_menu;    }    @Override    protected void initView() {        GlideUtil.loadCircleHeadImage(getContext(),R.drawable.head,ivHead);    }    @Override    protected void lazyLoad() {    }}

MainActivity和MenuFragment都是进行高度抽离的Base,所以看上去也很简洁,以上就是这个效果实现的全部代码,有需要BaseActivity和BaseFragment的话私我!

更多相关文章

  1. 学习笔记-Android单项选择效果实现
  2. android 按钮点击效果 imageview button imagebutton均可
  3. Android ImageView图片拖动效果
  4. 一个不错的启动菜单显示屏动画效果
  5. Android基于ViewFilpper实现文字LED显示效果示例
  6. Android 仿滴滴首页嵌套滑动效果
  7. 如何创建QuickAction在Android对话 类似于苹果的效果
  8. Android--修改ListView的点击效果
  9. Android滚动多TAB悬浮头效果

随机推荐

  1. 详解C++ 多态公有继承
  2. c语言中什么是逗号运算符并举例
  3. strcpy函数的作用是什么?
  4. C++如何简单输出当前日期时间
  5. c语言中合法标识符有哪些
  6. C语言有几种注释方式
  7. C++在构造函数中使用new时,需要注意这些事
  8. 在什么语言中字符串以\0标志字符串的结
  9. 声明动态数组的语句怎么写
  10. 详解C++虚成员函数和动态联编