• 大小: 11KB
    文件类型: .java
    金币: 1
    下载: 0 次
    发布日期: 2021-05-09
  • 语言: Java
  • 标签:

资源简介

方便使用的评论工具类,而且能监听到小键盘消失事件,能返回小键盘的高度,追踪评论位置。

资源截图

代码片段和文件信息

package com.zhrt.dp.duanpian.liver_plugin.danmu;

import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.BitmapDrawable;
import android.os.Handler;
import android.os.Message;
import android.view.Gravity;
import android.view.View;
import android.view.ViewTreeObserver;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.PopupWindow;

import com.zhrt.dp.duanpian.R;

/**
 * 用来显示聊天的布局,同时防止小键盘弹出导致播放内容高度的改变
 * 为了保证每次都能正确监听小键盘的弹出与消失。pop不能复用,每次都要new哦
 * Created by Eleven on 2016/9/21.
 */
public class TalkPopWindow {


    public TalkPopWindow(Activity activity OnSendMessage onSendMessage){
        this.activity = activity;
        this.onSendMessage = onSendMessage;
    }

    /**
     * 因为使用场景不同,所以这里可以用style标志来选取不同的布局,客官当然可以传id
     * @param activity
     * @param onSendMessage
     * @param style
     */
    public TalkPopWindow(Activity activity OnSendMessage onSendMessage int style){
        this.activity = activity;
        this.onSendMessage = onSendMessage;
        this.style = style;
    }
    //入参
    Activity activity;
    OnSendMessage onSendMessage;

    //业务引用
    EditText et;//通用输入器
    Button bt;//通用发送按钮
    PopupWindow pw;//popWindow  当然也可以换成dialog,popwindow:不会引起视频的暂停等,但是没有复制粘贴功能;dialog:会引起视频的暂停,但是可以调起系统的复制粘贴功能
    int style = 0;//输入部分样式



    //View
    //兼容其他用途,设置syle
    View view = null;//popView
    View tempView = null;//输入View的布局

    //逻辑属性
    int containerHeight = 0;//tempView的高度:
    int height = 0;//布局的高度
    boolean toShow = false;//是不是第一次尝试显示,与显示机制有关
    int[] location = new int[2];
    /**
     * 显示pop
     */
    public void pop(){
        dimiss();
        toShow = true;
        view = activity.getLayoutInflater().inflate(R.layout.pop_layoutnull);
        pw = new PopupWindow(view WindowManager.LayoutParams.MATCH_PARENTWindowManager.LayoutParams.MATCH_PARENT);
        if(style == 0){//区分style
            et = (EditText) view.findViewById(R.id.et_danmuEdit);
            bt = (Button) view.findViewById(R.id.bt_sendDanmu);
            view.findViewById(R.id.danmutLinear).setVisibility(View.VISIBLE);
            view.findViewById(R.id.commentLinear).setVisibility(View.GONE);
            tempView = view.findViewById(R.id.danmutLinear);
        }else{
            et = (EditText) view.findViewById(R.id.commentEdit);
            bt = (Button) view.findViewById(R.id.commentButton);
            view.findViewById(R.id.danmutLinear).setVisibility(View.GONE);
            view.findViewById(R.id.commentLinear).setVisibility(View.VISIBLE);
            tempView = view.findViewById(R.id.commentLinear);
        }
        tempView.measure(00);
        containerHeight = tempView.getMeasuredHeight();//计算输入布局的高度。
        //监听布局的变化
        view.getViewTreeObserver

评论

共有 条评论

相关资源