package com.example.administrator.taobao;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.android.vlayout.DelegateAdapter;
import com.alibaba.android.vlayout.VirtualLayoutManager;
import com.alibaba.android.vlayout.layout.GridLayoutHelper;
import com.alibaba.android.vlayout.layout.LinearLayoutHelper;
import com.alibaba.android.vlayout.layout.OnePlusNLayoutHelper;
import com.bumptech.glide.Glide;
import com.chad.library.adapter.base.BaseViewHolder;
import com.sunfusheng.marqueeview.MarqueeView;
import com.youth.banner.Banner;
import com.youth.banner.BannerConfig;
import com.youth.banner.Transformer;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
@SuppressWarnings("all")
public class MainActivity extends AppCompatActivity {
//不同类型的ViewType
int VIEW_TYPE_BANNER = 1;
int VIEW_TYPE_APP = 2;
int VIEW_TYPE_NEWS = 3;
int VIEW_TYPE_GOOD_TITLE = 4;
int VIEW_TYPE_GOOD_THUMB = 5;
//横幅位
String[] bannerUrls = {"https://img-blog.csdnimg.cn/03f90fd773d846de926b335276b9bdc6.gif", "https://img-blog.csdnimg.cn/03f90fd773d846de926b335276b9bdc6.gif"};
//应用位
String[] appTitles = {"天猫", "聚划算", "天猫国际", "外卖", "天猫超市", "充值中心", "飞猪旅行", "领金币", "拍卖", "分类"};
int[] appIcons = {R.mipmap.ic_tian_mao, R.mipmap.ic_ju_hua_suan, R.mipmap.ic_tian_mao_guoji, R.mipmap.ic_waimai, R.mipmap.ic_chaoshi, R.mipmap.ic_voucher_center, R.mipmap.ic_travel, R.mipmap.ic_tao_gold, R.mipmap.ic_auction, R.mipmap.ic_classify};
//新闻位
String[] newsUrls1 = {"天猫超市最近发大活动啦,快来抢", "没有最便宜,只有更便宜!"};
String[] newsUrls2 = {"天猫超市最近发大活动啦,快来抢", "没有最便宜,只有更便宜!"};
//商品位
int[] goodTitles = {R.mipmap.item1, R.mipmap.item2, R.mipmap.item3, R.mipmap.item4, R.mipmap.item5};
int[] goodThumbs = {R.mipmap.flashsale1, R.mipmap.flashsale2, R.mipmap.flashsale3, R.mipmap.flashsale4};
RecyclerView recyclerView;
List<DelegateAdapter.Adapter> subAdapters = new LinkedList();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
recyclerView = findViewById(R.id.recycler);
//1.设置总布局管理器
VirtualLayoutManager layoutManager = new VirtualLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
//2.设置回收池大小(相同类型的View可以复用,防止多次创建ItemView)
RecyclerView.RecycledViewPool viewPool = new RecyclerView.RecycledViewPool();
viewPool.setMaxRecycledViews(0, 10);
recyclerView.setRecycledViewPool(viewPool);
//3.逐个设置子模块适配器
addBannerAdapter();
addAppAdapter();
addNewsAdapter();
addGoodAdapter();
//4.设置总适配器
DelegateAdapter mainAdapter = new DelegateAdapter(layoutManager, true);
mainAdapter.setAdapters(subAdapters);
recyclerView.setAdapter(mainAdapter);
}
//添加子适配器:商品位
private void addGoodAdapter() {
for (int i = 0; i < goodTitles.length; i++) {
//商品标题
int goodTitle = goodTitles[i];
LinearLayoutHelper linearLayoutHelper = new LinearLayoutHelper();
SubAdapter titleAdapter = new SubAdapter(this, linearLayoutHelper, R.layout.vlayout_title, 1, VIEW_TYPE_GOOD_TITLE) {
@Override
public void onBindViewHolder(BaseViewHolder holder, int position) {
super.onBindViewHolder(holder, position);
holder.setImageResource(R.id.iv, goodTitle);
}
};
subAdapters.add(titleAdapter);
//商品列表
OnePlusNLayoutHelper onePlusNLayoutHelper = new OnePlusNLayoutHelper(4);
onePlusNLayoutHelper.setBgColor(Color.WHITE);
SubAdapter girdAdapter = new SubAdapter(this, onePlusNLayoutHelper, R.layout.vlayout_image, 4, VIEW_TYPE_GOOD_THUMB) {
@Override
public void onBindViewHolder(BaseViewHolder holder, int position) {
super.onBindViewHolder(holder, position);
int item = goodThumbs[position];
ImageView iv = holder.getView(R.id.iv);
Glide.with(getApplicationContext()).load(item).into(iv);
}
};
subAdapters.add(girdAdapter);
}
}
//添加子适配器:新闻位
private void addNewsAdapter() {
LinearLayoutHelper linearLayoutHelper = new LinearLayoutHelper();
SubAdapter newsAdapter = new SubAdapter(this, linearLayoutHelper, R.layout.vlayout_news, 1, VIEW_TYPE_NEWS) {
@Override
public void onBindViewHolder(BaseViewHolder holder, int position) {
super.onBindViewHolder(holder, position);
MarqueeView marqueeView1 = holder.getView(R.id.marqueeView1);
MarqueeView marqueeView2 = holder.getView(R.id.marqueeView2);
marqueeView1.startWithList(Arrays.asList(newsUrls1));
marqueeView2.startWithList(Arrays.asList(newsUrls2));
marqueeView1.startWithList(Arrays.asList(newsUrls1), R.anim.anim_bottom_in, R.anim.anim_top_out);
marqueeView2.startWithList(Arrays.asList(newsUrls2), R.anim.anim_bottom_in, R.anim.anim_top_out);
}
};
subAdapters.add(newsAdapter);
}
//添加子适配器:应用位
private void addAppAdapter() {
GridLayoutHelper gridLayoutHelper = new GridLayoutHelper(5);
gridLayoutHelper.setBgColor(Color.WHITE);
SubAdapter appAdapter = new SubAdapter(this, gridLayoutHelper, R.layout.vlayout_menu, 10, VIEW_TYPE_APP) {
@Override
public void onBindViewHolder(BaseViewHolder holder, int position) {
super.onBindViewHolder(holder, position);
holder.setText(R.id.tv_menu_title_home, appTitles[position] + "");
holder.setImageResource(R.id.iv_menu_home, appIcons[position]);
}
};
subAdapters.add(appAdapter);
}
//添加子适配器:横幅位
private void addBannerAdapter() {
LinearLayoutHelper linearLayoutHelper = new LinearLayoutHelper();
SubAdapter bannerAdapter = new SubAdapter(this, linearLayoutHelper, R.layout.vlayout_banner, 1, VIEW_TYPE_BANNER) {
@Override
public void onBindViewHolder(BaseViewHolder holder, int position) {
super.onBindViewHolder(holder, position);
Banner banner = holder.getView(R.id.banner);
banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR);
banner.setImageLoader(new GlideImageLoader());
banner.setImages(Arrays.asList(bannerUrls));
banner.setBannerAnimation(Transformer.DepthPage);
banner.isAutoPlay(true);
banner.setDelayTime(5000);
banner.setIndicatorGravity(BannerConfig.CENTER);
banner.start();
}
};
subAdapters.add(bannerAdapter);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
阿里VLayout.zip
共61个文件
png:35个
xml:14个
java:3个
需积分: 5 3 下载量 114 浏览量
2022-04-09
11:34:57
上传
评论
收藏 3.37MB ZIP 举报
温馨提示
以淘宝首页为例,介绍阿里VirtualLayout库的使用方法
资源详情
资源评论
资源推荐
收起资源包目录
阿里VLayout.zip (61个子文件)
demo-ui
gradlew.bat 2KB
gradlew 5KB
gradle.properties 87B
app
src
main
res
mipmap-xxxhdpi
ic_launcher.png 9KB
ic_launcher_round.png 15KB
drawable
ic_launcher_background.xml 6KB
mipmap-hdpi
ic_launcher.png 3KB
ic_launcher_round.png 5KB
drawable-v24
ic_launcher_foreground.xml 2KB
values
colors.xml 309B
strings.xml 72B
styles.xml 392B
mipmap-xxhdpi
ic_chaoshi.png 22KB
ic_tao_gold.png 21KB
ic_waimai.png 27KB
item5.png 405KB
ic_news.png 16KB
item3.png 357KB
flashsale1.png 94KB
ic_launcher.png 5KB
home2.png 71KB
home4.png 90KB
ic_travel.png 22KB
ic_classify.png 17KB
flashsale2.png 59KB
home1.png 78KB
flashsale4.png 88KB
ic_tian_mao.png 17KB
ic_ju_hua_suan.png 23KB
item4.png 573KB
img_title_bar.png 48KB
ic_auction.png 18KB
item1.png 440KB
flashsale3.png 74KB
ic_voucher_center.png 20KB
ic_tian_mao_guoji.png 20KB
ic_launcher_round.png 6KB
img_wo_tao_wojia.png 403KB
item2.png 328KB
mipmap-mdpi
ic_launcher.png 2KB
ic_launcher_round.png 3KB
mipmap-xhdpi
ic_launcher.png 4KB
ic_launcher_round.png 7KB
mipmap-anydpi-v26
ic_launcher_round.xml 276B
ic_launcher.xml 276B
layout
vlayout_menu.xml 872B
vlayout_image.xml 252B
activity_main.xml 761B
vlayout_title.xml 380B
vlayout_news.xml 2KB
vlayout_banner.xml 411B
java
com
example
administrator
taobao
MainActivity.java 8KB
SubAdapter.java 1KB
GlideImageLoader.java 399B
AndroidManifest.xml 1KB
build.gradle 1KB
gradle
wrapper
gradle-wrapper.jar 53KB
gradle-wrapper.properties 205B
local.properties 67B
settings.gradle 13B
build.gradle 1KB
共 61 条
- 1
命运之手
- 粉丝: 461
- 资源: 102
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0