最近在做开发的时候发现监听华为手机MeateP系列的手机底部都会有虚拟按键,这几天在做公司视屏通话界面的时候,展现对方像的同时还需要显示对方的音频打开或者关闭状态。在华为手机上面出现了虚拟键盘打开关闭出现图片错位的问题。最终解决方案如下。

  1. 自定义一个根布局View,继承RelativeLayout.
  2. 虚拟键盘弹出会出现布局大小变化,即会回掉onLayout()实现给布局重新定位。
  3. 添加自定义布局到根布局xml当中。
  4. 实现布局虚拟键盘监听接口onLayoutKeyChange

代码如下

/**
 * Created by xaio bailong on 2016/3/2.
 */
public class VitualKey extends RelativeLayout {
    private onLayoutKeyChange mLayoutKeyChange;
    public VitualKey(Context context) {
        super(context);
    }
    public VitualKey(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public VitualKey(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
    /**
     * @param changed 布局发生改变 ture 没有改变False
     * @param l
     * @param t
     * @param r
     * @param b
     */
    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        super.onLayout(changed, l, t, r, b);
        //Log.e("onLayout", "onLayout: b "+b);
        if (changed)
            mLayoutKeyChange.onLayoutKeyChange(b);
    }
    public void setonLayoutKeyChange (onLayoutKeyChange layoutKeyChange) {
        mLayoutKeyChange = layoutKeyChange;
    }
    public interface onLayoutKeyChange {
        /**
         * 虚拟键盘状态监听
         *
         * @param b 布局距离底部的布局
         */
        void onLayoutKeyChange(int b);
    }
}
你可能感兴趣的内容
0条评论

dexcoder

这家伙太懒了 <( ̄ ﹌  ̄)>
Owner