在LinearLayout中创建ChatHead视图

时间:2016-08-15 15:04:20

标签: android android-layout android-view ontouchlistener android-windowmanager

我正在尝试将 onTouchListener添加到imageButton ,以便像我们在facebook中看到的那样移动Like chatHead

  

但是当我将它们添加到 LinearLayout或RelativeLayout 时,它们的参数不具有像WindowManager这样的x,y属性

但它正在WindowManger中运作。参见

chatHead = new ImageView(this);
chatHead.setImageResource(R.drawable.face1);

params= new WindowManager.LayoutParams(
    WindowManager.LayoutParams.WRAP_CONTENT,
    WindowManager.LayoutParams.WRAP_CONTENT,
    WindowManager.LayoutParams.TYPE_PHONE,
    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
    PixelFormat.TRANSLUCENT);

params.gravity = Gravity.TOP | Gravity.LEFT;
params.x = 0;
params.y = 100;

//this code is for dragging the chat head
chatHead.setOnTouchListener(new View.OnTouchListener() {
    private int initialX;
    private int initialY;
    private float initialTouchX;
    private float initialTouchY;

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            initialX = params.x;
            initialY = params.y;
            initialTouchX = event.getRawX();
            initialTouchY = event.getRawY();
            return true;
        case MotionEvent.ACTION_UP:
            return true;
        case MotionEvent.ACTION_MOVE:
            params.x = initialX
                + (int) (event.getRawX() - initialTouchX);
            params.y = initialY
                + (int) (event.getRawY() - initialTouchY);
            windowManager.updateViewLayout(chatHead, params);
            return true;
        }
        return false;
    }
});
windowManager.addView(chatHead, params);

或者有没有办法将顶部边距添加到WindowManager 。因此chatHead低于specified view。我想在屏幕顶部添加一个按钮。并且chatHead不能重叠它。但是我找不到按钮添加它的方法。

0 个答案:

没有答案