android朋友圈评论功能兼容沉浸式状态栏,九宫格图片显示
2017-07-24 16:29
891 查看
android朋友圈评论功能,沉浸式状态栏,九宫格图片显示器,上拉加载下拉刷新功能,可直接用到项目中
背景
在前两个项目开发过程中用到了朋友圈这个功能,包含了评论回复、九宫格图片及大图展示展示,上拉加载下拉刷新,RecyclerView和第三方封装的万能适配器,自己根据使用情况,做了一下总结,功能有:评论功能,沉浸式与软键盘评论框布局的完美显示,评论布局紧贴item下方显示
九宫格图片展示采用第三方 BGAPhotoPicker-Android
RecyclerView与第三方万能适配器 BaseRecyclerViewAdapterHelper
retrofit2与rxjava封装请求数据
表情与字符串间的转换
效果图
![](http://oor5869gg.bkt.clouddn.com/%E5%BD%95%E5%B1%8F%E4%B8%93%E5%AE%B6170724141918.gif)
朋友圈评论回复功能
评论布局采用NoTouchLinearLayout:
/*** 可以监听返回键点击事件的LinearLayout(解决了第一次点击返回按钮只隐藏键盘的问题)
*/
public class NoTouchLinearLayout extends LinearLayout { public NoTouchLinearLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public NoTouchLinearLayout(Context context, AttributeSet attrs) { super(context, attrs); } public NoTouchLinearLayout(Context context) { super(context); } private OnResizeListener mListener; public interface OnResizeListener { void OnResize(); } public void setOnResizeListener(OnResizeListener l) { mListener = l; } @Override public boolean onTouchEvent(MotionEvent event) { return true; } //返回键监听,点击返回按钮,键盘和该布局同时隐藏(解决了第一次点击返回按钮只隐藏键盘的问题) @Override public boolean dispatchKeyEventPreIme(KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { mListener.OnResize(); return true; } return super.dispatchKeyEventPreIme(event); } }
评论列表采用IRecyclerView:
继承自RecyclerView,作用是:在mainfest里设置 Android:windowSoftInputMode=”adjustResize”,软件盘弹出隐藏时改变布局的大小,即onSizeChanged()方法会被调用。用来监听RecyclerView布局改变,控制评论布局的显示与隐藏public class IRecyclerView extends RecyclerView {
public interface OnSizeChangedListener { public void onSizeChanged(); } private OnSizeChangedListener onSizeChangedListener; public void setOnSizeChangedListener(OnSizeChangedListener onSizeChangedListener) { this.onSizeChangedListener = onSizeChangedListener; } public IRecyclerView(Context context) { super(context); } public IRecyclerView(Context context, AttributeSet attrs) { super(context, attrs); } public IRecyclerView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); if (onSizeChangedListener != null) { onSizeChangedListener.onSizeChanged(); } } }
点击item的评论图标时 记录item的位置级父布局的高度,用来确定键盘弹出时,RecyclerView停留的位置,使评论布局刚好显示在当前item下方:
helper.setOnClickListener(R.id.CommentImageView, new View.OnClickListener() { @Override public void onClick(View view) { //获取点击的那个Item的高度 position = helper.getPosition();//记录点击的位置 isReply = false; mCommentEditText.setHint("评论" + item.getUser().getNickName() + ":"); viewHeight = ((View) view.getParent().getParent()).getHeight();//获取当前View父布局的父布局高度 showCommentLayout(); } });
布局大小变动后,设置RecyclerViewList要滑动停留的位置
//布局大小变动后,执行的方法 @Override public void onSizeChanged() { linearLayoutManager.scrollToPositionWithOffset(position, mRecyclerViewList.getBottom() - viewHeight);//计算键盘弹出时 mRecyclerViewList要滑动停留的位置 }
其中要实现的接口
public class CricleFragemnt extends BaseFragment implements IRecyclerView.OnSizeChangedListener, BaseQuickAdapter.RequestLoadMoreListener, SwipeRefreshLayout.OnRefreshListener, EasyPermissions.PermissionCallbacks, BGANinePhotoLayout.Delegate{ }
实现的接口作用
IRecyclerView.OnSizeChangedListener:监听RecyclerView布局变化
BaseQuickAdapter.RequestLoadMoreListener:BaseQuickAdapter适配器上拉加载更多监听
SwipeRefreshLayout.OnRefreshListener:android系统自带下拉刷新
EasyPermissions.PermissionCallbacks:简单易懂的第三方SDK可以简化权限管理。本项目大图预览时用到
BGANinePhotoLayout.Delegate:实现九宫格大图查看功能
演示Apk下载
http://oor5869gg.bkt.clouddn.com/app-debug.apk代码下载
http://download.csdn.net/detail/ming_ruo_xiao_xi/9908838目前只总结了这么多功能,有空了准备加入评论表情和其它功能,欢迎关注
相关文章推荐
- android 之 webView 显示h5 执行选择图片或者拍照功能
- android状态栏一体化、沉浸式状态栏(兼容低版本)
- Android之仿微信发朋友圈图片选择功能
- Android自定义View实现图片显示,并实现缩放、拖拽、切换功能
- android状态栏一体化、沉浸式状态栏(兼容低版本)
- Android朋友圈评论功能知识点记录
- android---朋友圈评论功能自定义对话框
- Android沉浸式状态栏实现(半透明浮动状态栏)Activity全屏显示
- android状态栏一体化、沉浸式状态栏(兼容低版本)
- Android调用webservice显示返回的图片和上传图片功能
- android沉浸式状态栏兼容4.4-5.0均有效
- ANDROID GRIDVIEW仿微信图片多选功能_显示本地相册图片多选效果
- Android实现朋友圈多图显示功能
- Android 沉浸式状态栏 状态栏透明应用布局全屏显示
- Android动态显示和隐藏状态栏/实现沉浸式状态栏
- Android 通过开源框架实现加载网络图片并下载到SD卡通知系统相册显示,(并实现分享图片功能)
- Android中ImageView实现选择本地图片并显示功能
- Android使用AsyncTask下载图片并显示进度条功能
- Android之仿微信发朋友圈图片选择功能
- Android加载大图片,实现简单的截屏功能与保存截屏显示在图库