关于
在本篇开始之前,我发现之前以为的在fragment中使用轮播图在切换的过程中会导致重新加载banner的问题,其实是因为我使用的开启事务里面的replace方法调用了remove,导致碎片被移除,自然就banner也销毁了。上一篇请看主界面绘制、加载轮播图、减少apk体积( 简易音乐 五)
本想着主界面代码简洁一点,经过这次重构,主界面代码增加了一部分,但是还好,我们现在看下运行效果。
效果
因为我用的一个工具网站视频转GIF(免费),只支持15秒及以内转换,所以很多时候比较仓促,也懒得搞两段,,理解一下,按着教程来不会差的:
添加Api接口
/**
* 每日推荐歌单*/
@GET("recommend/resource")
Observable<RecommendListBean> getRecommendPlayList();
添加对应实体类RecommendListBean
:
/**
* 首页推荐歌单的ban
* Created By Tobey on 2021/7/01
*/
public class RecommendListBean {
private int code;
private boolean featureFirst;
private boolean haveRcmdSongs;
private List<RecommendBean> recommend;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public boolean isFeatureFirst() {
return featureFirst;
}
public void setFeatureFirst(boolean featureFirst) {
this.featureFirst = featureFirst;
}
public boolean isHaveRcmdSongs() {
return haveRcmdSongs;
}
public void setHaveRcmdSongs(boolean haveRcmdSongs) {
this.haveRcmdSongs = haveRcmdSongs;
}
public List<RecommendBean> getRecommend() {
return recommend;
}
public void setRecommend(List<RecommendBean> recommend) {
this.recommend = recommend;
}
public static class RecommendBean {
private long id;
private int type;
private String name;
private String copywriter;
private String picUrl;
private long playcount;
private long createTime;
private CreatorBean creator;
private int trackCount;
private long userId;
private String alg;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCopywriter() {
return copywriter;
}
public void setCopywriter(String copywriter) {
this.copywriter = copywriter;
}
public String getPicUrl() {
return picUrl;
}
public void setPicUrl(String picUrl) {
this.picUrl = picUrl;
}
public long getPlaycount() {
return playcount;
}
public void setPlaycount(long playcount) {
this.playcount = playcount;
}
public long getCreateTime() {
return createTime;
}
public void setCreateTime(long createTime) {
this.createTime = createTime;
}
public CreatorBean getCreator() {
return creator;
}
public void setCreator(CreatorBean creator) {
this.creator = creator;
}
public int getTrackCount() {
return trackCount;
}
public void setTrackCount(int trackCount) {
this.trackCount = trackCount;
}
public long getUserId() {
return userId;
}
public void setUserId(long userId) {
this.userId = userId;
}
public String getAlg() {
return alg;
}
public void setAlg(String alg) {
this.alg = alg;
}
public static class CreatorBean {
private String backgroundImgIdStr;
private Object remarkName;
private boolean mutual;
private long userId;
private long avatarImgId;
private int djStatus;
private boolean followed;
private String backgroundUrl;
private long backgroundImgId;
private String detailDescription;
private boolean defaultAvatar;
private Object expertTags;
private int accountStatus;
private int vipType;
private int province;
private int gender;
private String avatarUrl;
private int authStatus;
private int userType;
private String nickname;
private long birthday;
private int city;
private String avatarImgIdStr;
private String description;
private String signature;
private int authority;
public String getBackgroundImgIdStr() {
return backgroundImgIdStr;
}
public void setBackgroundImgIdStr(String backgroundImgIdStr) {
this.backgroundImgIdStr = backgroundImgIdStr;
}
public Object getRemarkName() {
return remarkName;
}
public void setRemarkName(Object remarkName) {
this.remarkName = remarkName;
}
public boolean isMutual() {
return mutual;
}
public void setMutual(boolean mutual) {
this.mutual = mutual;
}
public long getUserId() {
return userId;
}
public void setUserId(long userId) {
this