悬浮窗里的按钮为什么点击没效果

编程有钱人了 2013-05-13 03:07:22
我的悬浮窗加载一个视图 里面有一个按钮 点击这个按钮关闭这个悬浮窗
可是按钮事件 触发不了

public class FloatWindowService extends Service {
public static final String TAG="FLOAT_FLAG";
public static final int FlLOAT_SHOW = 1;
public static final int FlLOAT_HIDE = 0;
public WindowManager windowManager;
public WindowManager.LayoutParams params;
public View y_floatView;
public boolean isAdded = false;
public ImageView imgClose;
@Override
public IBinder onBind(Intent intent) {
return null;
}

@Override
public void onCreate() {
super.onCreate();
createFloatView();
}

@Override
public void onDestroy() {
super.onDestroy();
windowManager.removeView(y_floatView);
}
@Override
public boolean onUnbind(Intent intent) {
// TODO Auto-generated method stub
return super.onUnbind(intent);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
int operation = intent.getIntExtra("xfc", FlLOAT_SHOW);
Log.i(TAG, String.valueOf(operation));
switch(operation) {
case 1:
if(!isAdded)
{ windowManager.addView(y_floatView, params);
isAdded=true;
}
break;
case 0:
if(isAdded)
{
windowManager.removeView(y_floatView);
isAdded=false;
}
break;
}
Log.i(TAG, String.valueOf(isAdded));
return super.onStartCommand(intent, flags, startId);
}

private void createFloatView()
{
y_floatView = LayoutInflater.from(this).inflate(R.layout.floatview, null);
imgClose=(ImageView)y_floatView.findViewById(R.id.ImageViewClose);
windowManager = (WindowManager) this.getSystemService(WINDOW_SERVICE);
params = new WindowManager.LayoutParams();
params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT ;
params.format = PixelFormat.RGBX_8888;
params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;

params.width = 330;
params.height = 300;
params.gravity = Gravity.LEFT | Gravity.TOP;
y_floatView.setOnTouchListener(new View.OnTouchListener()
{
int lastX, lastY;
int paramX, paramY;
@Override
public boolean onTouch(View v, MotionEvent event)
{
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
lastX = (int) event.getRawX();
lastY = (int) event.getRawY();
paramX = params.x;
paramY = params.y;
break;
case MotionEvent.ACTION_MOVE:
int dx = (int) event.getRawX() - lastX;
int dy = (int) event.getRawY() - lastY;
params.x = paramX + dx;
params.y = paramY + dy;
windowManager.updateViewLayout(y_floatView, params);
break;
}
return true;
}
});
imgClose.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Log.i("我被点击了","我被点击了");
}
});
}
}


视图布局文件floatview.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/floatback"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView
android:id="@+id/ImageViewBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/floatbar" />
<ImageView
android:id="@+id/ImageViewClose"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/floatclose" />
</LinearLayout>
</LinearLayout>

请教一下 这个问题怎么办呢??????
...全文
200 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
maclay 2013-05-13
  • 打赏
  • 举报
回复
你的intent更新了没? 还有感觉你的代码写的不太好,为啥要switch()...来判断,不是已经有个boolean值来判断窗口是否正在显示了吗?

80,362

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧