接入方式 - yidianzixun/YdNewsFeedsSDK_Android GitHub Wiki

4.接入场景

4.1 多频道多列表的形式

NewsPortalFragment

SDK目前支持接入方采用多TAB的形式接入,SDK已经对NewsPortalFragment进行封装,接入方只需将NewsPortalFragment放置在对应的container容器中即可,具体调用方式可以参考:com.yidian.geek.page.NewsPortalActivity,接入代码如下:

fragmentNavi = new NewsPortalFragment();
getSupportFragmentManager().beginTransaction()
                .replace(R.id.portal_container, fragmentNavi)
                .commitNowAllowingStateLoss();

4.2 自定义单频道、单列表的形式

NewsListFragment

NewsListFragment为单列表的Fragment,接入方式示例具体参考:com.yidian.geek.page. NewsListActivity NewsListFragment支持展示自定义的频道列表,接入方需要在构造NewsListFragment传入需要配置的频道名称及是ViewPager中接入,如:

fragment = NewsListFragment.newInstance("视频集锦", false);
getSupportFragmentManager().beginTransaction()
        .replace(R.id.portal_container, fragment)
        .commitNowAllowingStateLoss();

NewsListFragment.newInstance(String channelName, boolean inViewPager)参数含义:

参数   描述
String channelName 频道名称
boolean inViewPager NewsListFragment是否是在ViewPager中集成,如集成在ViewPager,传入true,否则传入false

注意事项:

在使用NewsListFragment单列表接入的情况下,如果是接入在ViewPager中的话,需要注意:

1、NewsListFragment.newInstance方法的第二个参数需要设置成true,否则会出现一些问题

2、如果接入方式是采用接入方自己的Fragment包装了NewsListFragment的话,需要在接入方的包装的Fragment的setUserVisibleHint方法中调用下NewsListFragment的setUserVisibleHint方法,不然和1一样会出现一些问题,如:

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        newlistFragment.setUserVisibleHint(isVisibleToUser);
    }

4.3 View的形式接入

NewsEmbedFragment

NewsEmbedFragment支持接入方将信息流插入在接入方的布局中,接入方可根据自己的实际场景需要使用该Fragment。 NewsEmbedFragment的构造需要传入频道名及信息流列表卡片的数量,如:

fragment = NewsEmbedFragment.newInstance("推荐", 1);
getSupportFragmentManager().beginTransaction()
        .replace(R.id.portal_container, fragment)
        .commitNowAllowingStateLoss();

具体使用方式请参考:com.yidian.geek.page.NewsViewActivity

4.4 SDK对外暴露方法

SDK提供对外暴露接口或方法的方式,辅助开发者实现一些功能.

4.4.1 外部刷新方法

开发者接入多频道列表或单频道列表过程中,可能需要通过点击底部Tab或者其他的方式进行信息流刷新操作,目前SDK对外暴露刷新方法来帮助开发者实现刷新操作。

方法   描述
public void refreshCurrentChannel() 对所处的当前频道进行刷新操作。在接入NewsPortalFragment或NewsListFragment时可以调用此Fragment的refreshCurrentChannel方法。

4.4.2 滑动到顶部

开发者可调用此方法将列表滑动到顶部

方法   描述
public void scrollToTopPosition() 将信息流列表滑动到顶部。在接入NewsPortalFragment或NewsListFragment时可以调用此Fragment的scrollToTopPosition方法。

4.4.3 判断当前列表是否在最顶部

方法   描述
public boolean isScrollToTopPosition() 判断当前所在位置是否在信息流最顶部。在接入NewsPortalFragment或NewsListFragment时可以调用此Fragment的isScrollToTopPosition方法。

4.4.4 多频道接入时,切换频道回调频道名信息

考虑到在使用NewsPortalFragment多频道接入方式时,接入方可能需要切换频道时的频道名信息,以便数据统计使用。SDK提供了接口调用来支持接入方完成此操作,接入代码如下:

   NewsFeedsSDK.getInstance().setReportInterface(new IReportInterface() {

            @Override
            public void onPageSelected(String channelPageName) {
                Toast.makeText(getApplicationContext(), channelPageName, Toast.LENGTH_SHORT).show();
            }
        });