主界面绘制、加载轮播图、减少apk体积( 简易音乐 五)
关于
本篇主要是主界面的绘制、包括底部菜单栏、首页轮播图(把所有东西都放本篇来讲会显得篇幅太长,而且思路不一定会清晰,本着解耦的想法,我会尽量把一些内容分开,以简易音乐文章系列之一形式出现,就比如Android三方框架banner实现轮播图、比如android实现沉浸式状态栏)
上一篇修改登录判断以及数据保存( 简易音乐 四)
本篇首页的底部菜单栏用的是RadioButton,轮播图用的是第三方banner+viewpager2,关于banner的详细使用可以参考这篇Android三方框架banner实现轮播图
效果图
底部导航栏菜单资源
图片链接:提取码:tf7x
可以看到几乎大部分都是.webp格式图片,如何转换可以参考Android使用.webp替换.jpeg与.png格式图片减少图片大小,好处就是图片大小锐减。
第一步,修改activity_main.xml布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/whitesmoke"
tools:context=".MainActivity">
<FrameLayout
android:id="@+id/frame_main"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="match_parent">
</FrameLayout>
<RadioGroup
android:id="@+id/rg_tabs"
android:layout_width="match_parent"
android:layout_height="54dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="5dp">
<RadioButton
android:id="@+id/rb_main"
style="@style/tab_RadioButton_normal"
android:drawableTop="@drawable/bottom_home_style"
android:text="@string/home_page"
/>
<RadioButton
android:id="@+id/rb_contact"
style="@style/tab_RadioButton_normal"
android:drawableTop="@drawable/bottom_me_style"
android:text="@string/me"
/>
<RadioButton
android:id="@+id/rb_me"
style="@style/tab_RadioButton_normal"
android:drawableTop="@drawable/bottom_topic_style"
android:text="@string/cloud"
/>
</RadioGroup>
</LinearLayout>
添加radiobutton的图片样式bottom_home_style.xml
,其他两个复制修改即可。:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:drawable="@mipmap/icon_home_select"/>
<item android:drawable="@mipmap/icon_home"/>
</selector>
在res/values/styles.xml下添加对应text1的tab_RadioButton_normal
主题:
<style name="tab_RadioButton_normal">
<item name="android:button">@null</item>
<item name="android:layout_weight">1</item>
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">match_parent</item>
<item name="android:background">@android:color/transparent</item>
<item name="android:gravity">center</item>
<item name="android:textColor">@drawable/bottom_text_style</item>
<item name="android:textSize">@dimen/dp_10</item>
<item name="android:drawablePadding">@dimen/dp_3</item>
</style>
其中text颜色选取样式bottom_text_style.xml
:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:color="@color/colorAccent"/>
<item android:color="@color/textGray"/>
<!--<color name="textGray">#707070</color>-->
</selector>
新增Fragment_main.java碎片
修改res/values/strings.xml文件:
<string name="app_name">简易音乐</string>
<!-- TODO: Remove or change this placeholder text -->
<string name="hello_blank_fragment">Hello blank fragment</string>
<string name="back"><</string>
<string name="home_page">发现</string>
<string name="me">我的</string>
<string name="cloud">云村</string>
<string name="day_recommend">每日推荐</string>
<string name="playlist">歌单</string>
<string name="rank">排行榜</string>
<string name="radio">电台</string>
<string name="live">直播</string>
<string name="fm">私人FM</string>
<string name="recommend_playlist">懂你的精选歌单</string>
<string name="playlist_playground">查看更多</string>
<string name="login_phone_number">手机号登录</string>
<string name="press_exit_again">再按一次退出应用</string>
<string name="input_phone">请输入手机号</string>
<string name="input_pwd">请输入密码</string>
<string name="login">立即登录</string>
<string name="login_title">登 录</string>
<string name="please_input_phonenumber">请输入手机号码</string>
<string name="please_input_phonenumber_correctly">请输入有效的电话号码</string>
<string name="please_input_pwd">请输入密码</string>
<string name="pwd_must_less_than_30">请输入小于30位的密码</string>
<string name="enter_correct_password">请正确输入密码</string>
<string name="search">搜索</string>
<string name="search_history">历史</string>
<string name="hot_search">热搜榜</string>
修改fragment_main.xml布局文件:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
xmlns:app="http://schemas.android.com/apk/res-auto"
>
<RelativeLayout
android:id="@+id/layout_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/content_main" />
<FrameLayout
android:id="@+id/fl_banner"
android:layout_below="@+id/content_main"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_95"
android:background="@color/colorPrimary" />
<com.youth.banner.Banner
android:id="@+id/banner"
android:background="@drawable/banner_background_style"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_160"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_15" />
</FrameLayout>
<LinearLayout
android:id="@+id/ll_function"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_74"
android:layout_below="@id/fl_banner"
android:layout_marginTop="@dimen/dp_15"
android:gravity="center"
android:orientation="horizontal"
android:paddingLeft="@dimen/dp_20"
android:paddingRight="@dimen/dp_20">
<RelativeLayout
android:id="@+id/rl_day_rec"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1">
<RelativeLayout
android:id="@+id/test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:id="@+id/text_fm"
android:layout_centerHorizontal="true"
android:text="9"
android:textColor="#333333"
android:textSize="@dimen/sp_12" />
<ImageView
android:id="@+id/iv_day_recommend"
android:layout_width="@dimen/dp_50"
android:layout_height="@dimen/dp_50"
android:background="@mipmap/ic_daily_recommend">
</ImageView>
</RelativeLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/test"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/dp_4"
android:text="@string/day_recommend"
android:textColor="#333333"
android:textSize="@dimen/sp_12" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_mine_fm"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1">
<ImageView
android:id="@+id/iv_mine_fm"
android:layout_width="@dimen/dp_50"
android:layout_height="@dimen/dp_50"
android:layout_centerHorizontal="true"
android:background="@mipmap/ic_mine_fm" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/iv_mine_fm"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/dp_4"
android:text="@string/fm"
android:textColor="#333333"
android:textSize="@dimen/sp_12" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_play_list"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1">
<ImageView
android:id="@+id/iv_playlist"
android:layout_width="@dimen/dp_50"
android:layout_height="@dimen/dp_50"
android:layout_centerHorizontal="true"
android:background="@mipmap/ic_playlist" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/iv_playlist"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/dp_4"
android:text="@string/playlist"
android:textColor="#333333"
android:textSize="@dimen/sp_12" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_rank"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1">
<ImageView
android:id="@+id/iv_rank"
android:layout_width="@dimen/dp_50"
android:layout_height="@dimen/dp_50"
android:layout_centerHorizontal="true"
android:background="@mipmap/ic_rank" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/iv_rank"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/dp_4"
android:text="@string/rank"
android:textColor="#333333"
android:textSize="@dimen/sp_12" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_live"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1">
<ImageView
android:id="@+id/iv_live"
android:layout_width="@dimen/dp_50"
android:layout_height="@dimen/dp_50"
android:layout_centerHorizontal="true"
android:background="@mipmap/ic_live" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/iv_live"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/dp_4"
android:text="@string/live"
android:textColor="#333333"
android:textSize="@dimen/sp_12" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_radio"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1">
<ImageView
android:id="@+id/iv_radio"
android:layout_width="@dimen/dp_50"
android:layout_height="@dimen/dp_50"
android:layout_centerHorizontal="true"
android:background="@mipmap/ic_radio" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/iv_radio"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/dp_4"
android:text="@string/radio"
android:textColor="#333333"
android:textSize="@dimen/sp_12" />
</RelativeLayout>
</LinearLayout>
<TextView
android:id="@+id/tv_gap"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_below="@id/ll_function"
android:layout_marginTop="@dimen/dp_12"
android:background="#f0f0f0" />
<RelativeLayout
android:id="@+id/rl_show_recommend_playlist"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_45"
android:layout_below="@id/tv_gap"
android:layout_marginTop="@dimen/dp_10">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_marginStart="@dimen/dp_25"
android:scaleX="1.1"
android:scaleY="1.1"
android:text="@string/recommend_playlist"
android:textColor="#333333"
android:textSize="@dimen/sp_18"
android:typeface="sans" />
<TextView
android:id="@+id/tv_playlist_playground"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="@dimen/dp_15"
android:background="@drawable/bg_playlist_playground"
android:paddingLeft="@dimen/dp_15"
android:paddingTop="@dimen/dp_8"
android:paddingRight="@dimen/dp_15"
android:paddingBottom="@dimen/dp_8"
android:text="@string/playlist_playground"
android:textColor="#353636"
android:textSize="@dimen/sp_11"
android:layout_alignParentRight="true"
android:layout_marginRight="@dimen/dp_15" />
</RelativeLayout>
<LinearLayout
android:id="@+id/recommend_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
</RelativeLayout>
</FrameLayout>
其中查看更多的text的样式bg_playlist_playground.xml
如下:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="@dimen/dp_20" />
<stroke
android:width="@dimen/dp_1"
android:color="#e6e6e6" />
</shape>
添加实体类与轮播图适配器
实体类通过GsonFormat插件生成的:
package com.tobey.jianyimusic.home.bean;
import org.litepal.annotation.Column;
import org.litepal.crud.LitePalSupport;
import java.io.Serializable;
import java.util.List;
/**
* 首页轮播图bean
* Created By Tobey on 2021/6/10
*/
public class banner_bean {
private int code;
private List<BannersBean> banners;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public List<BannersBean> getBanners() {
return banners;
}
public void setBanners(List<BannersBean> banners) {
this.banners = banners;
}
public static class BannersBean {
/**
* pic : http://p1.music.126.net/wtPhw_8mf71WE8Skz7laYA==/109951165299445032.jpg
* targetId : 0
* adid : null
* targetType : 3000
* titleColor : blue
* typeTitle : 独家策划
* url : https://music.163.com/m/at/5f4eff178c81c03a8f906e90
* adurlV2 : null
* exclusive : false
* monitorImpress : null
* monitorClick : null
* monitorType : null
* monitorImpressList : []
* monitorClickList : []
* monitorBlackList : null
* extMonitor : null
* extMonitorInfo : null
* adSource : null
* adLocation : null
* encodeId : 0
* program : null
* event : null
* video : null
* dynamicVideoData : null
* song : null
* bannerId : 1599390761322724
* alg : null
* scm : 1.music-homepage.homepage_banner_force.banner.1010304.968363584.null
* requestId :
* showAdTag : true
* pid : null
* showContext : null
* adDispatchJson : null
*/
private String pic;
private long targetId;
private Object adid;
private int targetType;
private String titleColor;
private String typeTitle;
private String url;
private Object adurlV2;
private boolean exclusive;
private Object monitorImpress;
private Object monitorClick;
private Object monitorType;
private Object monitorBlackList;
private Object extMonitor;
private Object extMonitorInfo;
private Object adSource;
private Object adLocation;
private String encodeId;
private Object program;
private Object event;
private Object video;
private Object dynamicVideoData;
private Object song;
private String bannerId;
private Object alg;
private String scm;
private String requestId;
private boolean showAdTag;
private Object pid;
private Object showContext;
private Object adDispatchJson;
private List<?> monitorImpressList;
private List<?> monitorClickList;
public String getPic() {
return pic;
}
public void setPic(String pic) {
this.pic = pic;
}
public long getTargetId() {
return targetId;
}
public void setTargetId(long targetId) {
this.targetId = targetId;
}
public Object getAdid() {
return adid;
}
public void setAdid(Object adid) {
this.adid = adid;
}
public int getTargetType() {
return targetType;
}
public void setTargetType(int targetType) {
this.targetType = targetType;
}
public String getTitleColor() {
return titleColor;
}
public void setTitleColor(String titleColor) {
this.titleColor = titleColor;
}
public String getTypeTitle() {
return typeTitle;
}
public void setTypeTitle(String typeTitle) {
this.typeTitle = typeTitle;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public Object getAdurlV2() {
return adurlV2;
}
public void setAdurlV2(Object adurlV2) {
this.adurlV2 = adurlV2;
}
public boolean isExclusive() {
return exclusive;
}
public void setExclusive(boolean exclusive) {
this.exclusive = exclusive;
}
public Object getMonitorImpress() {
return monitorImpress;
}
public void setMonitorImpress(Object monitorImpress) {
this.monitorImpress = monitorImpress;
}
public Object getMonitorClick() {
return monitorClick;
}
public void setMonitorClick(Object monitorClick) {
this.monitorClick = monitorClick;
}
public Object getMonitorType() {
return monitorType;
}
public void setMonitorType(Object monitorType) {
this.monitorType = monitorType;
}
public Object getMonitorBlackList() {
return monitorBlackList;
}
public void setMonitorBlackList(Object monitorBlackList) {
this.monitorBlackList = monitorBlackList;
}
public Object getExtMonitor() {
return extMonitor;
}
public void setExtMonitor(Object extMonitor) {
this.extMonitor = extMonitor;
}
public Object getExtMonitorInfo() {
return extMonitorInfo;
}
public void setExtMonitorInfo(Object extMonitorInfo) {
this.extMonitorInfo = extMonitorInfo;
}
public Object getAdSource() {
return adSource;
}
public void setAdSource(Object adSource) {
this.adSource = adSource;
}
public Object getAdLocation() {
return adLocation;
}
public void setAdLocation(Object adLocation) {
this.adLocation = adLocation;
}
public String getEncodeId() {
return encodeId;
}
public void setEncodeId(String encodeId) {
this.encodeId = encodeId;
}
public Object getProgram() {
return program;
}
public void setProgram(Object program) {
this.program = program;
}
public Object getEvent() {
return event;
}
public void setEvent(Object event) {
this.event = event;
}
public Object getVideo() {
return video;
}
public void setVideo(Object video) {
this.video = video;
}
public Object getDynamicVideoData() {
return dynamicVideoData;
}
public void setDynamicVideoData(Object dynamicVideoData) {
this.dynamicVideoData = dynamicVideoData;
}
public Object getSong() {
return song;
}
public void setSong(Object song) {
this.song = song;
}
public String getBannerId() {
return bannerId;
}
public void setBannerId(String bannerId) {
this.bannerId = bannerId;
}
public Object getAlg() {
return alg;
}
public void setAlg(Object alg) {
this.alg = alg;
}
public String getScm() {
return scm;
}
public void setScm(String scm) {
this.scm = scm;
}
public String getRequestId() {
return requestId;
}
public void setRequestId(String requestId) {
this.requestId = requestId;
}
public boolean isShowAdTag() {
return showAdTag;
}
public void setShowAdTag(boolean showAdTag) {
this.showAdTag = showAdTag;
}
public Object getPid() {
return pid;
}
public void setPid(Object pid) {
this.pid = pid;
}
public Object getShowContext() {
return showContext;
}
public void setShowContext(Object showContext) {
this.showContext = showContext;
}
public Object getAdDispatchJson() {
return adDispatchJson;
}
public void setAdDispatchJson(Object adDispatchJson) {
this.adDispatchJson = adDispatchJson;
}
public List<?> getMonitorImpressList() {
return monitorImpressList;
}
public void setMonitorImpressList(List<?> monitorImpressList) {
this.monitorImpressList = monitorImpressList;
}
public List<?> getMonitorClickList() {
return monitorClickList;
}
public void setMonitorClickList(List<?> monitorClickList) {
this.monitorClickList = monitorClickList;
}
}
}
轮播图使用的第三方,在项目build下添加(这里不做一些使用解释,其他用法可参考Android三方框架banner实现轮播图):
//banner
implementation 'io.github.youth5201314:banner:2.2.2'
implementation "androidx.viewpager2:viewpager2:1.0.0"
在工程build下添加仓库maven:
repositories {
google()
jcenter()
maven { url "https://jitpack.io" }
//主要这行
maven { url "https://s01.oss.sonatype.org/content/groups/public" }
}
编写TitleHolder
继承RecyclerView.ViewHolder
:
public class TitleHolder extends RecyclerView.ViewHolder {
public ImageView imageView;
public TextView textView;
public TitleHolder(@NonNull View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.bannerImage);
textView = itemView.findViewById(R.id.bannerTitle);
}
}
新增banner图片+标题的item布局文件banner_title_image.xml
:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/bannerImage"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop" />
<TextView
android:id="@+id/bannerTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center_vertical"
android:paddingRight="@dimen/dp_5"
android:paddingBottom="@dimen/dp_1"
android:singleLine="true"
android:textColor="#ffffff"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
编写ImageTitleAdapter
继承BannerAdapter
(三方banner里面的):
/**
* banner轮播图适配器 图片+标题
*/
public class ImageTitleAdapter extends BannerAdapter<banner_bean.BannersBean,TitleHolder> {
public Context mContext;
public ImageTitleAdapter(List<banner_bean.BannersBean> datas, Fragment_main fragment_main) {
super(datas);
mContext = fragment_main.getActivity();
}
@Override
public TitleHolder onCreateHolder(ViewGroup parent, int viewType) {
return new TitleHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.banner_title_image,parent,false));
}
@Override
public void onBindView(TitleHolder holder, banner_bean.BannersBean data, int position, int size) {
Glide.with(holder.imageView)
.load(data.getPic())
.thumbnail(Glide.with(holder.itemView).load(R.drawable.loading))
.apply(RequestOptions.bitmapTransform(new RoundedCorners(30)))
.into(holder.imageView);
holder.textView.setText(data.getTypeTitle());
holder.textView.setTextColor(data.getTitleColor().equals("red")?mContext.getResources().getColor(R.color.red):mContext.getResources().getColor(R.color.blue));
/* <color name="blue">#00BFFF</color>
<color name="red">#FF0000</color>*/
}
}
新增轮播图功能
修改ApiService.java类,添加轮播图请求接口方法:
/**
* 轮播图*/
@GET("banner")
Observable<banner_bean> getBanner(@Query("type") int type);
修改Fragment_main.java代码
public class Fragment_main extends BaseFragment {
@BindView(R.id.banner)
Banner banner;
@BindView(R.id.text_fm)
TextView textView_fm;4
List<banner_bean.BannersBean> list_banner ;
private static int potsition = 0
@Override
protected int getLayout() {
return R.layout.fragment_main;
}
@Override
protected void initView(View view) {
String date = Calendar.getInstance().get(Calendar.DAY_OF_MONTH) + "";
textView_fm.setText(date);
initData();
}
private void initData() {
//请求轮播图
RetrofitUtils.getmApi().getBanner(1)
.compose(RXHelper.observableIO2Main(getContext()))
.subscribe(new StaticMethodUtils.OnCallback<banner_bean>(){
@Override
public void onNext(banner_bean banner_bean) {
if (banner_bean.getCode() == 200){
updateBanner(banner_bean.getBanners());
}
}
@Override
public void onError(Throwable e) {
super.onError(e);
}
});
}
private void updateBanner(List<banner_bean.BannersBean> banners) {
if (banners !=null && banners.size() >0){
int i = banners.size();
list_banner = new ArrayList<>();
for (int j=0;j<i;j++){
banner_bean.BannersBean bannerBean = new banner_bean.BannersBean();
bannerBean.setUrl(banners.get(j).getUrl());
bannerBean.setPic(banners.get(j).getPic());
bannerBean.setTypeTitle(banners.get(j).getTypeTitle());
bannerBean.setTitleColor(banners.get(j).getTitleColor());
// bannerBean.setSong(banners.get(j).getSong());
list_banner.add(bannerBean);
}
banner.setIndicator(new RectangleIndicator(getActivity()))
.setIndicatorHeight(5)
.setIndicatorWidth(6,6)
.setIndicatorGravity(IndicatorConfig.Direction.CENTER)
.setAdapter(new ImageTitleAdapter(list_banner,this))
.addBannerLifecycleObserver(getActivity())//添加生命周期观察者
.setIntercept(false)
.setBannerRound(10f);
}
}
@Override
protected void setListener() {
}
@Override
public void onPause() {
super.onPause();
potsition = banner.getViewPager2().getCurrentItem();
}
@Override
public void onResume() {
super.onResume();
if (potsition != 0&&banner !=null){
banner.setStartPosition(potsition);
}
}
@Override
public void onDestroy() {
super.onDestroy();
if (list_banner_sq !=null){
list_banner_sq.clear();
list_banner_sq = null;
}
}
}
修改MainActivity.java代码
@Route(path = Config.ROUTE_HOME)
public class MainActivity extends BaseActivity {
@BindView(R.id.frame_main)
FrameLayout frameLayout_main;
@BindView(R.id.rb_main)
RadioButton rgMain;
@BindView(R.id.rg_tabs)
RadioGroup rgTabs;
private Login_Bean loginBean;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected BasePresenter onCreatePresenter() {
return null;
}
@Override
protected void initData() {
}
@Override
protected void initModule() {
rgTabs.check(R.id.rb_main);
changeFragment(new Fragment_main());
rgTabs.setOnCheckedChangeListener(mOnCheckedChangeListener);
}
private RadioGroup.OnCheckedChangeListener mOnCheckedChangeListener = new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
case R.id.rb_main:
changeFragment(new Fragment_main());
break;
case R.id.rb_contact:
break;
case R.id.rb_me:
changeFragment(new Fragment_center());
break;
}
}
};
private void changeFragment(BaseFragment fragment) {
//开启事务
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
//切换布局
transaction.replace(R.id.frame_main,fragment);
transaction.commit();
}
}
发现一个bug
详情参考文章 解决使用GsonFromat插件生成实体类后造成的一个bug
到此本篇内容介绍完毕,有问题欢迎批评指正,觉得不错的也请点个赞奥下一篇新增我的推荐歌单、通过ViewPager2+RadioGroup重构主界面( 简易音乐 六)