Thanks for sharing the DraggableView library, it is very convenient.
But I found a bug when I use makeDraggable on an overlay view.
Here is an example that I make an overlay TextView with DraggableView.
private void InitialTextView(){
floatingLuxView = new TextView(this);
floatingLuxView.setText("Hi I am a overlay View");
floatingLuxView.setTextColor(Color.rgb(255, 255, 0));
floatingLuxView.setTextSize(32f);
floatingLuxView.setShadowLayer(10, 5, 5, Color.rgb(56, 56, 56));
DraggableUtils.makeDraggable(floatingLuxView);
windowManager = (WindowManager)getSystemService(WINDOW_SERVICE);
int LAYOUT_FLAG;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
LAYOUT_FLAG = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
} else {
LAYOUT_FLAG = WindowManager.LayoutParams.TYPE_PHONE;
}
params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
LAYOUT_FLAG,
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN |
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.TOP|Gravity.LEFT;
}
Which point to the below code.
setOnTouchListener { v, event ->
val viewParent = v.parent as View
val parentHeight = viewParent.height
It mentioned that the parent of the TextView I made is a ViewRootImpl not a View.
I am not pretty sure how to fix it in a good way, may I consult your idea ?