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源码开发时最主要的实现功能。
声明:本篇文章为小编原创文章,转载请注明出处及作者。