一对一直播系统源码,Flexbox+ReclyclerView实现流式布局

一对一直播系统源码,Flexbox+ReclyclerView实现流式布局实现的相关代码

布局

activity_main.xml

 

1
<?xml version="1.0" encoding="utf-8"?><br><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"<br>    android:layout_width="match_parent"<br>    android:layout_height="match_parent"><br>    <androidx.recyclerview.widget.RecyclerView<br>        android:id="@+id/rv_Flexbox"<br>        android:layout_width="match_parent"<br>        android:layout_height="match_parent"/><br></LinearLayout>

​MainActivity

 

1
package com.example.myapplication;<br>import androidx.appcompat.app.AppCompatActivity;<br>import androidx.recyclerview.widget.RecyclerView;<br>import android.os.Bundle;<br>import android.util.Log;<br>import android.view.View;<br>import com.google.android.flexbox.FlexDirection;<br>import com.google.android.flexbox.FlexWrap;<br>import com.google.android.flexbox.FlexboxLayoutManager;<br>import com.google.android.flexbox.JustifyContent;<br>import java.util.ArrayList;<br>import java.util.List;<br>public class MainActivity extends AppCompatActivity {<br>    private RecyclerView rv_Flexbox;<br>    private List<String> list_data;<br>    private FlexBoxAdapter fAdapter;<br>    @Override<br>    protected void onCreate(Bundle savedInstanceState) {<br>        super.onCreate(savedInstanceState);<br>        setContentView(R.layout.activity_main);<br>        rv_Flexbox = (RecyclerView)findViewById(R.id.rv_Flexbox);<br>        FlexboxLayoutManager flexboxLayoutManager = new FlexboxLayoutManager(this);<br>        //flexDirection 属性决定主轴的方向(即项目的排列方向)。类似 LinearLayout 的 vertical 和 horizontal。<br>        flexboxLayoutManager.setFlexDirection(FlexDirection.ROW);//主轴为水平方向,起点在左端。<br>        //flexWrap 默认情况下 Flex 跟 LinearLayout 一样,都是不带换行排列的,但是flexWrap属性可以支持换行排列。<br>//        flexboxLayoutManager.setFlexWrap(FlexWrap.WRAP);//按正常方向换行<br>        //justifyContent 属性定义了项目在主轴上的对齐方式。<br>//        flexboxLayoutManager.setJustifyContent(JustifyContent.FLEX_START);//交叉轴的起点对齐。<br>        rv_Flexbox.setLayoutManager(flexboxLayoutManager);<br>        list_data = new ArrayList<>();<br>        list_data.add("小米手机");<br>        list_data.add("平衡車");<br>        list_data.add("无人机");<br>        list_data.add("神舟笔记本电脑");<br>        list_data.add("小鹏汽车");<br>        list_data.add("特斯拉");<br>        fAdapter = new FlexBoxAdapter(this,list_data);<br>//        fAdapter.notifyDataSetChanged();<br>        rv_Flexbox.setAdapter(fAdapter);<br>        fAdapter.setOnItemClickLitener(new FlexBoxAdapter.OnItemClickLitener() {<br>            @Override<br>            public void OnItemClick(View view, int positon) {<br>                Log.e("wy", "position: "+positon+"  data:" + list_data.get(positon));<br>            }<br>        });<br>    }<br>}

FlexBoxAdapter

 

1
package com.example.myapplication;<br>import android.content.Context;<br>import android.view.LayoutInflater;<br>import android.view.View;<br>import android.view.ViewGroup;<br>import android.widget.TextView;<br>import androidx.annotation.NonNull;<br>import androidx.recyclerview.widget.RecyclerView;<br>import java.util.List;<br>public class FlexBoxAdapter extends RecyclerView.Adapter<FlexBoxAdapter.myHolder> {<br>    private Context mContext;<br>    private List<String> list_data;<br>    private LayoutInflater inflater;<br>    public FlexBoxAdapter(Context mContext, List<String> list_data) {<br>        this.mContext = mContext;<br>        this.list_data = list_data;<br>        this.inflater = LayoutInflater.from(mContext);<br>    }<br>    @NonNull<br>    @Override<br>    public myHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {<br>        View view = inflater.inflate(R.layout.fragment_rv_item,viewGroup,false);<br>        return new myHolder(view);<br>    }<br>    @Override<br>    public void onBindViewHolder(@NonNull final myHolder myHolder, int i) {<br>        myHolder.tv_title.setText(list_data.get(i));<br>        // 如果设置了回调,则设置点击事件<br>        if (mOnItemClickLitener != null)<br>        {<br>            myHolder.itemView.setOnClickListener(new View.OnClickListener()<br>            {<br>                @Override<br>                public void onClick(View v)<br>                {<br>                    int pos = myHolder.getLayoutPosition();<br>                    mOnItemClickLitener.OnItemClick(myHolder.itemView, pos);<br>                }<br>            });<br>        }<br>    }<br>    @Override<br>    public int getItemCount() {<br>        return list_data.size();<br>    }<br>    class myHolder extends RecyclerView.ViewHolder<br>    {<br>        TextView tv_title;<br>        public myHolder(@NonNull View itemView) {<br>            super(itemView);<br>            tv_title = (TextView)itemView.findViewById(R.id.tv_title);<br>        }<br>    }<br>    /**<br>     * 定义点击每项的接口<br>     */<br>    public interface OnItemClickLitener<br>    {<br>        void OnItemClick(View view, int positon);<br>    }<br>    private OnItemClickLitener mOnItemClickLitener;<br>    public void setOnItemClickLitener(OnItemClickLitener mOnItemClickLitener)<br>    {<br>        this.mOnItemClickLitener = mOnItemClickLitener;<br>    }<br>}

drawable下

flex_item_bg.xml

 

1
<?xml version="1.0" encoding="utf-8"?><br><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"><br>    <!-- 填充--><br>    <solid android:color="#00000000"/><br>    <!-- 描边 --><br>    <stroke<br>        android:width="1dp"<br>        android:color="#7F7F7F" /><br>    <!-- 圆角 --><br>    <corners<br>        android:radius="2dp" /><br></shape>

以上就是 一对一直播系统源码,Flexbox+ReclyclerView实现流式布局实现的相关代码,更多内容欢迎关注之后的文章

 

posted @   云豹科技-苏凌霄  阅读(171)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示