使用android窗口管理器的浮动视图
我可以使用浮动管理器浮动可绘制图形,但如何使布局或视图浮动?下面是我的代码-(我是android新手,编码请耐心等待)使用android窗口管理器的浮动视图,android,android-windowmanager,Android,Android Windowmanager,我可以使用浮动管理器浮动可绘制图形,但如何使布局或视图浮动?下面是我的代码-(我是android新手,编码请耐心等待) 若要浮动视图,请使用ListPopupWindow并膨胀列表中的数据 在chatHead clickListener上打开listview 我希望它能有所帮助。谢谢你的代码。像个魔咒一样工作,加上1。 public class example extends Service { private WindowManager windowManager; pri
若要浮动视图,请使用ListPopupWindow并膨胀列表中的数据 在chatHead clickListener上打开listview
我希望它能有所帮助。谢谢你的代码。像个魔咒一样工作,加上1。
public class example extends Service {
private WindowManager windowManager;
private ImageView chatHead;
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
super.onCreate();
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
chatHead = new ImageView(this);
chatHead.setImageResource(R.drawable.floating);
final WindowManager.LayoutParams 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;
windowManager.addView(chatHead, params);
try {
chatHead.setOnTouchListener(new View.OnTouchListener() {
private WindowManager.LayoutParams paramsF = params;
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:
// Get current time in nano seconds.
initialX = paramsF.x;
initialY = paramsF.y;
initialTouchX = event.getRawX();
initialTouchY = event.getRawY();
break;
case MotionEvent.ACTION_UP:
break;
case MotionEvent.ACTION_MOVE:
paramsF.x = initialX + (int) (event.getRawX() - initialTouchX);
paramsF.y = initialY + (int) (event.getRawY() - initialTouchY);
windowManager.updateViewLayout(chatHead, paramsF);
break;
}
return false;
}
});
} catch (Exception e) {
// TODO: handle exception
}
}
@Override
public void onDestroy() {
super.onDestroy();
if (chatHead != null) windowManager.removeView(chatHead);
}
}