Размещение кнопки в строке состоянияJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Размещение кнопки в строке состояния

Сообщение Anonymous »

Я хочу разместить невидимую кнопку за вырезом дисплея в строке состояния. Я хочу отображать пользователю не уведомление, как другие коды, а невидимую кнопку в строке состояния. Я добавил код для определения размера и положения выреза дисплея, но не могу разместить кнопку на строка состояния, расположенная сразу за вырезом дисплея. Я хочу, чтобы пользователь нажимал на вырез камеры, и за вырезом камеры должна быть невидимая кнопка.
Я использовал приведенный ниже код. В этом случае кнопка видна в строке состояния, но на нее нельзя нажать.
import android.app.Service;
import android.content.Intent;
import android.graphics.PixelFormat;
import android.os.Build;
import android.os.IBinder;
import android.view.Gravity;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.Toast;

public class ButtonOverlayService extends Service {

private WindowManager windowManager;
private Button overlayButton;

@Override
public IBinder onBind(Intent intent) {
return null;
}

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

// Create WindowManager and set LayoutParams for the overlay button
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ?
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY :
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
| WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR
| WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSLUCENT
);

// Set gravity to the top of the screen including the status bar
params.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL;
params.x = 0;
params.y = 0;

// Inflate the overlay button layout
overlayButton = new Button(this);
overlayButton.setText("Button");
overlayButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Handle button click
Toast.makeText(ButtonOverlayService.this, "Button Clicked", Toast.LENGTH_SHORT).show();
}
});

// Add the button to the window manager
windowManager.addView(overlayButton, params);
}

@Override
public void onDestroy() {
super.onDestroy();
if (overlayButton != null) {
windowManager.removeView(overlayButton);
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/785 ... status-bar
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»