常用開(kāi)源框架分類(lèi)總結(jié)

暫時(shí)沒(méi)寫(xiě)完,我會(huì)繼續(xù)完善的。

基本控件

APP底部Tab布局

TabLayout+ViewPager 簡(jiǎn)單實(shí)現(xiàn)app底部Tab布局

TabLayout+ViewPager
  • 這種實(shí)現(xiàn)方式中,TabLayout和ViewPager可以相互綁定,還能實(shí)現(xiàn)攔截。例如:在點(diǎn)擊沙師弟的時(shí)候進(jìn)行判斷,如果登錄已經(jīng)登錄就切換到沙師弟fragment,否則跳轉(zhuǎn)到登錄頁(yè)面。
    • 相互綁定
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()) {
                    //已登錄,切換到用戶(hù)中心
                    mViewPager.setCurrentItem(3, false);
                    tabUserCenter.select();
                } else {
                    //未登錄,跳轉(zhuǎn)登錄頁(yè)面
                    startActivity(new Intent(MainActivity.this,LoginActivity.class));
                }
            }
        });

Android Support 25中BottomNavigationView與ViewPager結(jié)合實(shí)現(xiàn)material Tab標(biāo)準(zhǔn)效果

BottomNavigationView
  • 這種實(shí)現(xiàn)方式需要配合另外一個(gè)功能效果最好,Vector Asset 點(diǎn)這里了解Vector,tab限制3-5個(gè),當(dāng)個(gè)數(shù)超過(guò)5個(gè)的時(shí)候會(huì)拋異常,下面是源碼片段
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
  • 該控件是我最喜歡的控件之一,可以隨意定制下拉刷新頭,該項(xiàng)目介紹還提到另外一個(gè)加載更多的控件,暫時(shí)只支持ListView、GridView,還不支持RecyclerView。

SwipeRefreshLayout
google官方控件

SwipeRefreshLayout

輪播圖

ConvenientBanner

  • 一個(gè)不錯(cuò)的輪播圖控件,支持多種動(dòng)畫(huà)特效,如果首頁(yè)使用類(lèi)似ListView這種分布局實(shí)現(xiàn)的方式注意重復(fù)啟動(dòng)輪播圖。會(huì)導(dǎo)致多次啟動(dòng)輪播圖。設(shè)置一個(gè)tag來(lái)判斷是否啟動(dòng)。


    ConvenientBanner

Android-Coverflow

Android-Coverflow.gif

右滑退出

SwipeBack

  • 可以用來(lái)做成類(lèi)似于微信右滑動(dòng)關(guān)閉當(dāng)前頁(yè)面的功能。


    SwipeBack

相冊(cè)圖片相關(guān)

PhotoView
DragPhotoView 基于PhotoView實(shí)現(xiàn)的仿微信朋友圈查看大圖功能

  • 體驗(yàn)了一下,效果和微信朋友圈的效果有一拼。


    DragPhotoView

ImagePicker

  • 一個(gè)關(guān)于相冊(cè)圖片選擇庫(kù),類(lèi)似于微信選擇相冊(cè),內(nèi)部有集成6.0權(quán)限問(wèn)題。


    ImagePicker

RecyclerView

XRecyclerView

  • 對(duì)RecyclerView支持上拉加載和下拉刷新的控件。


    XRecyclerView
  • 一些RecyclerView的動(dòng)畫(huà)特效庫(kù)

RecyclerView Animators
UltimateRecyclerView
Paginate 侵入式的loadMore

標(biāo)簽相關(guān)

FlowLayout

  • CSDN博客之星張鴻洋的一個(gè)開(kāi)源庫(kù),流式布局類(lèi)型的標(biāo)簽庫(kù)。


    flowlayout.gif

AndroidTagGroup

  • 另一個(gè)流式布局的標(biāo)簽庫(kù)。


    AndroidTagGroup.jpeg

Toast相關(guān)

SuperToasts

SuperToasts_Banner.png

新手引導(dǎo)

GuideView

GuideView.png

GuideView-master

GuideView-master.gif

鍵盤(pán)相關(guān)

WeChatPswKeyboard

WeChatPswKeyboard.gif

AndroidPicker

  • iOS有個(gè)3D滾動(dòng)的控件,Android這邊也有,仿照iOS的效果,差不多都是基于一個(gè)叫做WheelView的控件實(shí)現(xiàn)的。
Android_Picker.gif

音視頻

JieCaoVideoPlayer

作者貌似有嫂子情節(jié),該開(kāi)源框架集成了一個(gè)播放器應(yīng)該有的技能,只需要簡(jiǎn)單的幾部就可以實(shí)現(xiàn)一個(gè)視頻播放,不好的地方就是很多控件沒(méi)有放開(kāi),需要自己去實(shí)現(xiàn),而且不能實(shí)現(xiàn)緩存功能。JCVideoPlayerStandard.java是一個(gè)標(biāo)準(zhǔn)播放器的代碼,如果需要自定義播放器的可以仿照這個(gè)類(lèi)里面的寫(xiě)法。不過(guò)復(fù)制代碼過(guò)來(lái)的時(shí)候注意里面的資源前面的包名去掉。

GSYVideoPlayer

然而這個(gè)作者是個(gè)貓控。。。在JieCaoVideoPlayer基礎(chǔ)上進(jìn)行重構(gòu)的,支持緩存,很多控件有放開(kāi),隨意顯示與隱藏,一鍵靜音功能等。如果需要自定義播放器UI和部分功能跟JieCaoVideoPlayer一樣的做法。

GSYVideoPlayer

動(dòng)畫(huà)特效

SwipeCardsView

  • 仿探探拖拽左滑不喜歡右滑動(dòng)喜歡,繼承LinearLayout實(shí)現(xiàn)的拖拽功能。配合基于TextureView的視頻播放器可以實(shí)現(xiàn)單個(gè)卡片視頻播放,類(lèi)似于秒拍的熱榜頁(yè)面。如果是SurfaceView會(huì)出現(xiàn)拖動(dòng)的時(shí)候有黑底。


    SwipeCardsView

CardSlidePanel

  • 如絲滑般流暢,類(lèi)似于樓上的拖拽,只是他是采用的ViewDragHelper類(lèi)來(lái)處理拖拽。


    CardSlidePanel

ENViewsDemo

  • 這個(gè)項(xiàng)目中有一些關(guān)于搜索,視頻播放,下載進(jìn)度等動(dòng)畫(huà)特效。用起來(lái)很不錯(cuò)。
ENViews_o_play.gif

框架模式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容