Android浮动图片处理 FloatView

本文介绍了一种基于Android平台的浮动视图控件实现方式。该控件通过继承ImageView并重写触屏事件处理方法,实现了根据用户手指拖动来调整其在屏幕上的位置的功能。文中详细解释了如何响应各种触屏事件,并根据这些事件更新悬浮窗口的位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class FloatView extends ImageView
{

private float x , y , mTouchStartX , mTouchStartY;

private int VIEW_HEIGHT = 25;

private WindowManager windowManager;

/*
* 此wmParams为获取的全局变量,用以保存悬浮窗口的属性
*/
private WindowManager.LayoutParams wmParams;

/**
* constructed function
*
* @param Context context,
* WindowManager manager ,
* WindowManager.LayoutParams params
* @throws
* @since Tiantian
*/
public FloatView(Context context , WindowManager Wmanager , WindowManager.LayoutParams params)
{
super(context);
windowManager = Wmanager;
wmParams = params;
}

/**
*
* @param event
* @return boolean
*/
@Override
public boolean onTouchEvent(MotionEvent event)
{

/*
* 获取相对屏幕的坐标,即以屏幕左上角为原点
*/
x = event.getRawX();

/*
* 系统状态栏的高度
*/
y = event.getRawY()- VIEW_HEIGHT;

CommonUtil.log("currX" + x + "====currY" + y);

switch (event.getAction())
{
/*
* 捕获手指触摸按下动作
*/
case MotionEvent.ACTION_DOWN:

/*
* 获取相对View的坐标,即以此View左上角为原点
*/
mTouchStartX = event.getX();
mTouchStartY = event.getY();

CommonUtil.log("startX" + mTouchStartX + "====startY" + mTouchStartY);

break;

/*
* 捕获手指触摸移动动作
*/
case MotionEvent.ACTION_MOVE:

updateViewPosition();

break;

/*
* 捕获手指触摸离开动作
*/
case MotionEvent.ACTION_UP:

updateViewPosition();
mTouchStartX = mTouchStartY=0;

break;

}

return true;

}

/**
* 更新浮动窗口位置
*
* @param
* @return void
* @throws
* @since TianTian
*/
private void updateViewPosition()
{

/*
* 更新浮动窗口位置参数
*/
wmParams.x = (int)( x - mTouchStartX);
wmParams.y = (int) (y - mTouchStartY);

windowManager.updateViewLayout(this , wmParams);

}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值