1.一对一语音聊天APP源码开发时,使用RecycleView来展示多视图内容,在Adpater中实现getItemViewType()。

@Override
public int getItemViewType(int position) {
    int type = mList.get(position).getType();
//一对一语音聊天APP源码图片
    if (type == IMG) {
        return IMG;
//一对一语音聊天APP源码视频
    } else if (type == VIDEO) {
        return VIDEO;
//一对一语音聊天APP源码语音
    } else if (type == VOICE) {
        return VOICE;
    }
//一对一语音聊天APP源码文本
    return super.getItemViewType(position);
}

2.一对一语音聊天系统中根据viewType,创建不同类型的ViewHolder。

@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    if (viewType == IMG) {
        return new ImgVh(mInflater.inflate(R.layout.item_dynamic_img, parent, false));
    } else if (viewType == VIDEO) {
        return new VideoVh(mInflater.inflate(R.layout.item_dynamic_video, parent, false));
    } else if (viewType == VOICE) {
        return new VoiceVh(mInflater.inflate(R.layout.item_dynamic_voice, parent, false));
    }
    return new Vh(mInflater.inflate(R.layout.item_dynamic_text, parent, false));
}

3.一对一语音聊天系统中分别在ViewHolder中做相应处理。
//语音类型设置数据

void setData(DynamicBean bean, int position, Object payload) {
    super.setData(bean, position, payload);
    mVoiceView.setTag(bean);
    bean.setPosition(position);
    if (payload == null) {
        mTvTime.setText(bean.getLength() + "s");
    }
    //是否在播放
    if (bean.isVoicePlaying()) {
        if (mAnimationDrawable != null) {
            mAnimationDrawable.start();
        }
    } else {
        if (mAnimationDrawable != null) {
            mAnimationDrawable.stop();
        }
    }
}

4**.一对一语音聊天系统**中列表滑动监听,判断当前位置类型,如为视频则做播放处理。

@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
    super.onAttachedToRecyclerView(recyclerView);
    mLayoutManager = (LinearLayoutManager) mRecyclerView.getLayoutManager();
    mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);
            if (newState == 0) {
                play();//一对一语音聊天APP源码视频播放处理
                voiceCheck();//一对一语音聊天APP源码语音是否在播放等处理
            }
        }

        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            if (mFirstPlay) {
                mFirstPlay = false;
                play();
            }
        }
    });
}

以上就是一个无限循环列表样式,向上到第一个的时候,再往上滑动就出现最后一条内容,这样的情况.往下就是最后一条之后出现第二条信息,这就是一对一语音聊天APP源码开发时最主要的实现功能。
声明:本篇文章为小编原创文章,转载请注明出处及作者。