美文网首页完整项目
常用开源框架分类总结

常用开源框架分类总结

作者: s酸菜 | 来源:发表于2017-03-09 13:29 被阅读1183次

    暂时没写完,我会继续完善的。

    基本控件

    APP底部Tab布局

    TabLayout+ViewPager 简单实现app底部Tab布局

    TabLayout+ViewPager
    • 这种实现方式中,TabLayout和ViewPager可以相互绑定,还能实现拦截。例如:在点击沙师弟的时候进行判断,如果登录已经登录就切换到沙师弟fragment,否则跳转到登录页面。
      • 相互绑定
    mViewpager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener
                    (mTabLayout));
            mTabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener
                    (mViewpager));
    
    • 切换拦截
    View userCenter = View.inflate(this, R.layout.navigator_tab_icon_layout, null);
            TabLayout.Tab tabUserCenter = tabLayout.newTab();
            tabUserCenter.setCustomView(userCenter);
            userCenter.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (UIUtils.isLogin()) {
                        //已登录,切换到用户中心
                        mViewPager.setCurrentItem(3, false);
                        tabUserCenter.select();
                    } else {
                        //未登录,跳转登录页面
                        startActivity(new Intent(MainActivity.this,LoginActivity.class));
                    }
                }
            });
    

    Android Support 25中BottomNavigationView与ViewPager结合实现material Tab标准效果

    BottomNavigationView
    • 这种实现方式需要配合另外一个功能效果最好,Vector Asset 点这里了解Vector,tab限制3-5个,当个数超过5个的时候会抛异常,下面是源码片段
    public final class BottomNavigationMenu extends MenuBuilder {
        public static final int MAX_ITEM_COUNT = 5;
    
        public BottomNavigationMenu(Context context) {
            super(context);
        }
    
        @Override
        public SubMenu addSubMenu(int group, int id, int categoryOrder, CharSequence title) {
            throw new UnsupportedOperationException("BottomNavigationView does not support submenus");
        }
    
        @Override
        protected MenuItem addInternal(int group, int id, int categoryOrder, CharSequence title) {
            if (size() + 1 > MAX_ITEM_COUNT) {
                throw new IllegalArgumentException(
                        "Maximum number of items supported by BottomNavigationView is " + MAX_ITEM_COUNT
                                + ". Limit can be checked with BottomNavigationView#getMaxItemCount()");
            }
            return super.addInternal(group, id, categoryOrder, title);
        }
    }
    

    下拉刷新

    android-Ultra-Pull-To-Refresh 廖祜秋

    android-Ultra-Pull-To-Refresh
    • 该控件是我最喜欢的控件之一,可以随意定制下拉刷新头,该项目介绍还提到另外一个加载更多的控件,暂时只支持ListView、GridView,还不支持RecyclerView。

    SwipeRefreshLayout
    google官方控件

    SwipeRefreshLayout

    轮播图

    ConvenientBanner

    • 一个不错的轮播图控件,支持多种动画特效,如果首页使用类似ListView这种分布局实现的方式注意重复启动轮播图。会导致多次启动轮播图。设置一个tag来判断是否启动。


      ConvenientBanner

    Android-Coverflow

    Android-Coverflow.gif

    右滑退出

    SwipeBack

    • 可以用来做成类似于微信右滑动关闭当前页面的功能。


      SwipeBack

    相册图片相关

    PhotoView
    DragPhotoView 基于PhotoView实现的仿微信朋友圈查看大图功能

    • 体验了一下,效果和微信朋友圈的效果有一拼。


      DragPhotoView

    ImagePicker

    • 一个关于相册图片选择库,类似于微信选择相册,内部有集成6.0权限问题。


      ImagePicker

    RecyclerView

    XRecyclerView

    • 对RecyclerView支持上拉加载和下拉刷新的控件。


      XRecyclerView
    • 一些RecyclerView的动画特效库

    RecyclerView Animators
    UltimateRecyclerView
    Paginate 侵入式的loadMore

    标签相关

    FlowLayout

    • CSDN博客之星张鸿洋的一个开源库,流式布局类型的标签库。


      flowlayout.gif

    AndroidTagGroup

    • 另一个流式布局的标签库。


      AndroidTagGroup.jpeg

    Toast相关

    SuperToasts

    SuperToasts_Banner.png

    新手引导

    GuideView

    GuideView.png

    GuideView-master

    GuideView-master.gif

    键盘相关

    WeChatPswKeyboard

    WeChatPswKeyboard.gif

    AndroidPicker

    • iOS有个3D滚动的控件,Android这边也有,仿照iOS的效果,差不多都是基于一个叫做WheelView的控件实现的。
    Android_Picker.gif

    音视频

    JieCaoVideoPlayer

    作者貌似有嫂子情节,该开源框架集成了一个播放器应该有的技能,只需要简单的几部就可以实现一个视频播放,不好的地方就是很多控件没有放开,需要自己去实现,而且不能实现缓存功能。JCVideoPlayerStandard.java是一个标准播放器的代码,如果需要自定义播放器的可以仿照这个类里面的写法。不过复制代码过来的时候注意里面的资源前面的包名去掉。

    GSYVideoPlayer

    然而这个作者是个猫控。。。在JieCaoVideoPlayer基础上进行重构的,支持缓存,很多控件有放开,随意显示与隐藏,一键静音功能等。如果需要自定义播放器UI和部分功能跟JieCaoVideoPlayer一样的做法。

    GSYVideoPlayer

    动画特效

    SwipeCardsView

    • 仿探探拖拽左滑不喜欢右滑动喜欢,继承LinearLayout实现的拖拽功能。配合基于TextureView的视频播放器可以实现单个卡片视频播放,类似于秒拍的热榜页面。如果是SurfaceView会出现拖动的时候有黑底。


      SwipeCardsView

    CardSlidePanel

    • 如丝滑般流畅,类似于楼上的拖拽,只是他是采用的ViewDragHelper类来处理拖拽。


      CardSlidePanel

    ENViewsDemo

    • 这个项目中有一些关于搜索,视频播放,下载进度等动画特效。用起来很不错。
    ENViews_o_play.gif

    框架模式

    相关文章

      网友评论

      本文标题:常用开源框架分类总结

      本文链接:https://www.haomeiwen.com/subject/egykgttx.html