Banner 实现轮播图
导入依赖
implementation 'com.youth.banner:banner:1.4.10'
布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.youth.banner.Banner
android:layout_width="match_parent"
android:layout_height="230dp"
android:id="@+id/my_Banner">
</com.youth.banner.Banner>
</LinearLayout>
activity
public class MainActivity extends AppCompatActivity {
Banner banner;
ArrayList<String> imgUrl = new ArrayList<>();
ArrayList<String> title = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
banner = findViewById(R.id.my_Banner);
banner.setOnBannerListener(new OnBannerListener() {
@Override
public void OnBannerClick(int position) {
Toast.makeText(MainActivity.this, ""+position, Toast.LENGTH_SHORT).show();
}
});
getData();
}
private void getData() {
OkGo.<String>get("http://vueshop.glbuys.com/api/home/index/slide?token=1ec949a15fb709370f").execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
String body = response.body();
try {
JSONObject jsonObject = new JSONObject(body);
JSONArray data = jsonObject.getJSONArray("data");
for (int i = 0; i < data.length(); i++){
JSONObject jsonObject1 = data.getJSONObject(i);
String image = jsonObject1.getString("image");
String t = jsonObject1.getString("title");
imgUrl.add("http:"+image);
title.add(t);
}
banner.setBannerStyle(BannerConfig.NUM_INDICATOR_TITLE);//数字加标题
banner.setImages(imgUrl);
banner.setBannerTitles(title);
banner.setImageLoader(new ImageLoader() {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
Glide.with(context).load((String) path).into(imageView);
}
});
banner.setDelayTime(1500);//每隔1.5秒自动走一次
banner.start();
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
}
FlycoTabLayout
导入依赖
implementation 'com.flyco.tablayout:FlycoTabLayout_Lib:2.0.2@aar'
主布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/frame_layout"
android:layout_above="@id/common_tab_layout">
</FrameLayout>
<com.flyco.tablayout.CommonTabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:id="@+id/common_tab_layout"
app:tl_textSelectColor="#2196F3"
app:tl_textUnselectColor="#272525"
android:scrollbarStyle="@null">
</com.flyco.tablayout.CommonTabLayout>
</RelativeLayout>
fragment布局略。。。
CustomTabEntity接口的实现类
public class MyBottomTab implements CustomTabEntity {
private String title;
private int selected;
private int unselected;
public MyBottomTab(String title, int selected, int unselected) {
this.title = title;
this.selected = selected;
this.unselected = unselected;
}
@Override
public String getTabTitle() {
return title;
}
@Override
public int getTabSelectedIcon() {
return selected;
}
@Override
public int getTabUnselectedIcon() {
return unselected;
}
}
activity
public class MainActivity extends AppCompatActivity {
CommonTabLayout commonTabLayout;
ArrayList<CustomTabEntity> arrayList = new ArrayList<>();
MyFragment01 myFragment01;
MyFragment02 myFragment02;
MyFragment03 myFragment03;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
commonTabLayout = findViewById(R.id.common_tab_layout);
arrayList.add(new MyBottomTab("首页",R.mipmap.shouye_selected,R.mipmap.shouye_unselected));
arrayList.add(new MyBottomTab("音乐",R.mipmap.faxian_selected,R.mipmap.faxian_unselected));
arrayList.add(new MyBottomTab("我的",R.mipmap.wode_selected,R.mipmap.wode_unselected));
commonTabLayout.setTabData(arrayList);
myFragment01 = new MyFragment01();
myFragment02 = new MyFragment02();
myFragment03 = new MyFragment03();
getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout,myFragment01).commit();
commonTabLayout.setOnTabSelectListener(new OnTabSelectListener() {
@Override
public void onTabSelect(int position) {
if (position == 0){
getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout,myFragment01).commit();
}else if (position == 1){
getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout,myFragment02).commit();
}else if (position == 2){
getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout,myFragment03).commit();
}
commonTabLayout.hideMsg(position);
}
@Override
public void onTabReselect(int position) {
}
});
commonTabLayout.showDot(2);//显示小红点
commonTabLayout.showMsg(1,100);//显示未读消息
}
}