我正在尝试创建一个任务管理器应用程序。当用户向右滑动时,透明栏将显示正在显示运行应用程序的后台。当用户向左滑动时,透明条将被隐藏。我用滑动工作和透明条正确显示在屏幕上与相应的滑动,但我遇到了问题。当用户向左滑动时,透明条被隐藏,但是布局似乎仍然是焦点。我试图将焦点设置为false但是没有用。最初,如果透明栏位于应用程序上方,当用户向左滑动以隐藏栏时,他将无法单击该应用程序。如何从条形图中移除焦点并使其成为可以点击条形图下方的任何内容?
使用:杰出图书馆 代码:
package wei.mark.example;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import wei.mark.standout.StandOutWindow;
import wei.mark.standout.constants.StandOutFlags;
import wei.mark.standout.ui.Window;
public class SimpleWindow extends StandOutWindow {
private View touchView, mainPanel;
@Override
public String getAppName() {
return "SimpleWindow";
}
@Override
public int getAppIcon() {
return android.R.drawable.ic_menu_close_clear_cancel;
}
@Override
public void createAndAttachView(int id, FrameLayout frame) {
final LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.simple, frame, true);
touchView = frame.findViewById(R.id.touchView);
mainPanel = frame.findViewById(R.id.mainPanel);
final ViewGroup.LayoutParams params = mainPanel.getLayoutParams();
touchView.setOnTouchListener(new OnSwipeTouchListener(this){
public void onSwipeRight() {
mainPanel.setVisibility(View.VISIBLE);
}
public void onSwipeLeft() {
mainPanel.setVisibility(View.GONE);
}
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
});
}
// Set Left Most
@Override
public StandOutLayoutParams getParams(int id, Window window) {
return new StandOutLayoutParams(id, 300, 1920,
StandOutLayoutParams.LEFT, StandOutLayoutParams.LEFT);
}
// move the window by dragging the view
@Override
public int getFlags(int id) {
return super.getFlags(id)
| StandOutFlags.FLAG_WINDOW_FOCUSABLE_DISABLE;
}
@Override
public String getPersistentNotificationMessage(int id) {
return "Shiftr";
}
@Override
public Intent getPersistentNotificationIntent(int id) {
return StandOutWindow.getCloseIntent(this, SimpleWindow.class, id);
}
}
答案 0 :(得分:0)
在StandoutWindow.java中,更改:
TYPE_PHONE
到
TYPY_SYSTEM_OVERLAY
但这会让所有的窗户都不可触摸。如果您可以修改库,以便在通过滑动更改窗口类型时更改窗口类型。或者更改窗口xpos和ypos offscreen并使用更新窗口 window.setLayoutParams。