最近公司让我又新写一个项目,然后里面有个侧换抽屉效果,我进行了编写优化感觉效果比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 按钮点击效果 imageview button imagebutton均可
  2. 学习笔记-Android单项选择效果实现
  3. Android通过selector改变界面状态
  4. 组件化实践记录——在library module的manifest中使用applicatio
  5. Android(安卓)Market的 Loading效果
  6. Android基于ViewFilpper实现文字LED显示效果示例
  7. Android有用代码片段(三)
  8. 一个不错的启动菜单显示屏动画效果
  9. Cocos2d-x for android 使用Box2d报错解决

随机推荐

  1. Android中对NFC的实现代码分布在如下几个
  2. android 使控件透明
  3. Android(安卓)存储选项之 ContentProvide
  4. android定位布局
  5. Android(安卓)Camera 使用小结
  6. android layout_weight了解
  7. android自定义view属性
  8. Android修改自己程序字体的方法详解
  9. 由Android想到的事情
  10. Android(安卓)常用组件,的常用类型