Android仿微信朋友圈4----实现评论动态时输入框和软键盘自动定位到内容下面

最近做完朋友圈功能后,测试提出一个功能优化,在某些发布的动态下评论时软键盘和输入框遮当内容了,这个用户体验感觉不是很好,于是根据今日头条和其他热门的App评论时软键盘和输入框都是在内容下面.Scroller是一个专门用于处理滚动效果的工具类,可能在大多数情况下,我们直接使用Scroller的场景并不多,但是很多大家所熟知的控件在内部都是使用Scroller来实现的,如ViewPager、ListView等。郭神的这篇博客分析了原理[Android Scroller完全解析,关于Scroller你所需知道的一切]

效果图如下:

Android仿微信朋友圈4----实现评论动态时输入框和软键盘自动定位到内容下面_第1张图片

Android仿微信朋友圈4----实现评论动态时输入框和软键盘自动定位到内容下面_第2张图片

关键代码:

/**
 * 获取控件左上顶点Y坐标
 *
 * @param view
 * @return
 */
private int getCoordinateY(View view) {
    int[] coordinate = new int[2];
    view.getLocationOnScreen(coordinate);
    return coordinate[1];
}
@Override
public void onClick(int position, final View v) {
    final int itemBottomY = getCoordinateY(v) + v.getHeight();//item 底部y坐标
    if (likePopupWindow == null) {
        likePopupWindow = new LikePopupWindow(this, 0);
    }
    likePopupWindow.setOnPraiseOrCommentClickListener(new OnPraiseOrCommentClickListener() {
        @Override
        public void onPraiseClick(int position) {
            Toast.makeText(MainActivity.this, "点赞成功", Toast.LENGTH_SHORT).show();
            likePopupWindow.dismiss();
        }

        @Override
        public void onCommentClick(int position) {
            llComment.setVisibility(View.VISIBLE);
            etComment.requestFocus();
            CommonUtils.showSoftInput(MainActivity.this, llComment);
            likePopupWindow.dismiss();
            etComment.setHint("说点什么");
            etComment.setText("");


            v.postDelayed(() -> {
                int y = getCoordinateY(llComment);
                //评论时滑动到对应item底部和输入框顶部对齐
                recyclerView.smoothScrollBy(0, itemBottomY - y);
            }, 300);

        }

        @Override
        public void onClickFrendCircleTopBg() {

        }

        @Override
        public void onDeleteItem(String id, int position) {

        }
    }).setTextView(0).setCurrentPosition(position);
    if (likePopupWindow.isShowing()) {
        likePopupWindow.dismiss();
    } else {
        likePopupWindow.showPopupWindow(v);
    }
}

Android仿微信朋友圈4----实现评论动态时输入框和软键盘自动定位到内容下面_第3张图片

由于没有用截屏软件做动图,所以效果看上去不是很好.如有问题欢迎小伙伴们积极提出,我会及时改正.

 完整代码地址如下:

https://gitee.com/jackning_admin/ExpandTextView

你可能感兴趣的:(开发实例)