FLOATING MOD MENU SKETCHWARE


/FloatingWindow
//Place at onCreate Activity
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
layoutParams = new WindowManager.LayoutParams();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
} else {
layoutParams.type = WindowManager.LayoutParams.TYPE_PHONE;
}
layoutParams.format = PixelFormat.RGBA_8888;
layoutParams.gravity = Gravity.LEFT | Gravity.TOP;
layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
layoutParams.width = 450; layoutParams.height = 550; layoutParams.x = 0;
layoutParams.y = 0;
//place at button action show floating window
if (!android.provider.Settings.canDrawOverlays(MainActivity.this)){
Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName()));
    startActivity(intent);
    }
    else{
    showFloatingWindow();
    }
   
//create Moreblock with name Library
}
private WindowManager windowManager;
private WindowManager.LayoutParams layoutParams;
private View displayView;
private void showFloatingWindow() {
LayoutInflater layoutInflater = LayoutInflater.from(this);
displayView = layoutInflater.inflate(R.layout.popup, null);
displayView.setOnTouchListener(new FloatingOnTouchListener());
LinearLayout lin1 = displayView.findViewById(R.id.linear1);
Button btn1 = displayView.findViewById(R.id.button1);
Button btn2 = displayView.findViewById(R.id.button2);
btn1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
showMessage ("Selamat Kamu Dapat Sepeda....");
}
});
btn2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
closes();
}
});
windowManager.addView(displayView, layoutParams);
}
private class FloatingOnTouchListener implements View.OnTouchListener {
private int x;
private int y;
@Override public boolean onTouch(View view, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
x = (int) event.getRawX();
y = (int) event.getRawY();
break;
case MotionEvent.ACTION_MOVE: int nowX = (int) event.getRawX();
int nowY = (int) event.getRawY();
int movedX = nowX - x;
int movedY = nowY - y;
x = nowX; y = nowY;
layoutParams.x = layoutParams.x + movedX;
layoutParams.y = layoutParams.y + movedY; windowManager.updateViewLayout(view, layoutParams);
break;
default:
break;
}
return true;
}
}

public void closes(){
try{
windowManager.removeView(displayView);
}
catch(Exception e){
        }
    }

Comments

Post a Comment