接入方式 - 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();
}
});