安卓新手教学,学习微信首页消息布局-RecyclerView(详解)

大家是不是都对微信首页的布局感兴趣呢?以下是用上一篇写的演示
微信首页布局
那么今天我们就来讲解上一篇的用法,不懂的可以评论或者私信问
上一篇基本用法因为上一篇属于新增的控件,安卓将上一篇定义在支持库里。若要使用上一篇第一步是要在build.gradle中添加对应的依赖库。添加上一篇依赖库在app/build.gradle中的属国闭包添加以下内容:
实现com。安卓。支持:回收视图-v 7:27。1 .1 ‘然后点击顶部的立即同步进行同步
修改activity_main.xml由于上一篇不是内置在系统软件开发工具包(软件开发工具包)中,需要把其完整的包名路径写出来
新建水果类Fruit { private String name private int imageId public Fruit(String name,int imageId){ this。name=名称;this.imageId=imageId}公共字符串getName(){ return name;} public int getImageId(){ return imageId;}}新建fruit_item.xml创建图片来显示水果图片,文本视图来显示水果名字。
新增适配器水果适配器为上一篇新增适配器水果适配器,并让其继承于回收查看.适配器,把泛型指定为水果适配器。取景框。
公共类水果适配器扩展回收查看.适配器{个人分发名单制造商列表静态类取景器扩展回收查看.view holder { ImageView水果图像;TextView fruitname public View holder(View View View){ super(View);水果图片=(ImageView)查看。findviewbyid(r . id。水果_图片);果名=(TextView)视图。findviewbyid(r . id。果名);} }公共水果适配器(列表水果列表){ mFruitList=水果列表;} @ Override public View holder oncreate View holder(View group parent,int View type){ View View View=layout inflater。来自(父母。获取上下文()).inflate(R.layout.fruit_item,parent,false);云台=新取景框(视图);退货单持有者;} @ Override public void onBindViewHolder(view holder holder,int position){ Fruit Fruit=mfruitlist。get(位置);持有人。水果形象。设置图像资源(水果。getimageid());持有人。果名。settext(水果。getname());} @ Override public int getItemCount(){ return mfruitlist。size();}定义内部类取景框,并继承回收查看.取景框。传入的视角参数通常是上一篇子项的最外层布局。
水果适配器构造函数,用于把要展示的数据源传入,并赋予值给全局变量制造商列表。水果适配器继承回收查看.适配器。因为必须重写onCreateViewHolder(),onBindViewHolder()和getItemCount()三个方法onCreateViewHolder()用于创建取景器实例,并把加载的布局传入到构造函数去,再把取景器实例返回onBindViewHolder()则是用于对子项的数据进行赋值,会在每个子项被滚动到屏幕内时执行位置。得到当前项的水果实例getItemCount()返回上一篇的子项数目。修改MainActivity.javapublic类主要活动扩展了app compat activity { private List水果列表=new ArrayList();@ Override protected void onCreate(Bundle savedInstanceState){ super。onCreate(savedInstanceState);setContentView(r . layout。活动_主);init水果();回收器视图回收器视图=(回收器视图)findViewById(r . id。recycler _ view);LinearLayoutManager布局管理器=new LinearLayoutManager(this);回收视图。setlayoutmanager(布局管理器);水果适配器adapter=新水果适配器(水果列表);回收视图。设置适配器(适配器);} private void init fruits(){ for(int I=0;I 2;i ) {水果苹果=新水果(‘苹果可拉伸的。apple _ pic);fruitList.add(苹果);水果香蕉=新水果(‘香蕉可拉伸的。香蕉_ pic);fruitList.add(香蕉);水果橙=新水果(“橙色”,r . drawable。orange _ pic);fruitList.add(橙色);水果西瓜=新水果(‘西瓜R.drawable。西瓜_ pic);fruitList.add(西瓜);水果梨=新水果(‘梨可拉伸的。pear _ pic);水果清单。加(梨);水果葡萄=新水果(‘葡萄可拉伸的。葡萄_ pic);fruitList.add(葡萄);水果菠萝=新水果(‘菠萝R.drawable。菠萝_ pic);fruitList.add(菠萝);水果草莓=新水果(‘草莓可拉伸的。草莓_ pic);fruitList.add(草莓);水果樱桃=新水果(“樱桃”,r . drawable。cherry _ pic);fruitList.add(樱桃);水果芒果=新水果(‘芒果可拉伸的。芒果_ pic);fruitList.add(芒果);} } }布局经理用于指定上一篇的布局方式100 .linearrayoutmanager指的是线性布局。运行效果:
修改上一篇显示效果横向滚动修改fruit_item.xml把线性布局改成垂直排列,因为水果名字长度不一样,把宽度改为100分贝。图片和带边框的都改为水平居中
修改MainActivity.java @ Override protected void onCreate(Bundle saved instancestate){ super。onCreate(savedInstanceState);setContentView(r . layout。活动_主);init水果();回收器视图回收器视图=(回收器视图)findViewById(r . id。recycler _ view);LinearLayoutManager布局管理器=new LinearLayoutManager(this);布局管理器。设置方向(LinearLayoutManager .横向);回收视图。setlayoutmanager(布局管理器);水果适配器adapter=新水果适配器(水果列表);回收视图。设置适配器(适配器);}通过调用setOrientation()把布局的排列方向改为水平排列。得益于上一篇的设计,我们可以通过布局管理器实现各种不同的排列方式的布局。运行结果:
除了LinearLayoutManager,RecyclerView还提供了GridLayoutManager(网格布局)和StaggeredGridLayoutManager(瀑布流布局)
GridLayoutManagerGridLayoutManager(网格布局)
修改MainActivity.java修改MainActivity.java,把
LinearLayoutManager布局管理器=new LinearLayoutManager(this);布局管理器。设置方向(LinearLayoutManager .横向);换成GridLayoutManager布局管理器=new GridLayoutManager(this,5);GridLayoutManager(上下文上下文,int spanCount)
上下文:当前上下文,将用于访问资源spanCount int:网格中的列数(网格的列数)运行结果:
以上是上一篇的基本用法,以后会出高级用法

其他教程

动画中舞蹈动作是怎么画出来的?流畅的乐章后面是大量的原画。

2022-8-28 11:12:25

其他教程

3dmax汽车制作教程(3dmax汽车行驶动画教程)

2022-8-28 11:14:27

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索