Calculator Overlay

This commit is contained in:
Sergey Solovyev 2012-11-21 18:34:58 +04:00
parent eb07c9410a
commit 64b01cb22a
2 changed files with 67 additions and 31 deletions

View File

@ -1,37 +1,43 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:a="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:a="http://schemas.android.com/apk/res/android"
a:orientation="vertical" a:orientation="vertical"
style="@style/cpp_widget_main_layout_style"> style="@style/cpp_widget_main_layout_style">
<include layout="@layout/overlay_header"/> <include layout="@layout/overlay_header"/>
<include layout="@layout/widget_editor" <LinearLayout a:id="@+id/overlay_content"
a:layout_weight="2" a:orientation="vertical"
a:layout_width="match_parent" a:layout_width="match_parent"
a:layout_height="0dp"/> a:layout_height="match_parent">
<LinearLayout a:layout_weight="1" <include layout="@layout/widget_editor"
a:layout_width="match_parent" a:layout_weight="2"
a:layout_height="0dp"> a:layout_width="match_parent"
a:layout_height="0dp"/>
<include layout="@layout/widget_equals_button" <LinearLayout a:layout_weight="1"
a:layout_margin="@dimen/cpp_button_margin" a:layout_width="match_parent"
a:layout_weight="1" a:layout_height="0dp">
a:layout_width="0dp"
a:layout_height="match_parent"/>
<include layout="@layout/widget_display" <include layout="@layout/widget_equals_button"
a:layout_weight="5" a:layout_margin="@dimen/cpp_button_margin"
a:layout_width="0dp" a:layout_weight="1"
a:layout_height="wrap_content"/> a:layout_width="0dp"
a:layout_height="match_parent"/>
</LinearLayout> <include layout="@layout/widget_display"
a:layout_weight="5"
a:layout_width="0dp"
a:layout_height="wrap_content"/>
<include layout="@layout/widget_keyboard" </LinearLayout>
a:layout_weight="5"
a:layout_width="match_parent" <include layout="@layout/widget_keyboard"
a:layout_height="0dp"/> a:layout_weight="5"
a:layout_width="match_parent"
a:layout_height="0dp"/>
</LinearLayout>
<include layout="@layout/overlay_footer"/> <include layout="@layout/overlay_footer"/>

View File

@ -64,6 +64,44 @@ public class CalculatorOverlayService extends Service implements ExternalCalcula
} }
} }
final int initialWindowWidth = Math.max(wm.getDefaultDisplay().getWidth() / 2, 300);
final int initialWindowHeight = Math.max(wm.getDefaultDisplay().getHeight() / 2, 450);
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
initialWindowWidth,
initialWindowHeight,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL|WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSLUCENT);
final View overlayContent = onscreenView.findViewById(R.id.overlay_content);
final View overlayHideButton = onscreenView.findViewById(R.id.overlay_hide_button);
overlayHideButton.setOnClickListener(new View.OnClickListener() {
private boolean hidden = false;
private int windowHeight = initialWindowHeight;
@Override
public void onClick(View v) {
final WindowManager.LayoutParams params = (WindowManager.LayoutParams) onscreenView.getLayoutParams();
if (hidden) {
overlayContent.setVisibility(View.VISIBLE);
params.height = windowHeight;
} else {
windowHeight = params.height;
overlayContent.setVisibility(View.GONE);
params.height = overlayHideButton.getHeight();
}
wm.updateViewLayout(onscreenView, params);
hidden = !hidden;
}
});
onscreenView.findViewById(R.id.overlay_close_button).setOnClickListener(new View.OnClickListener() { onscreenView.findViewById(R.id.overlay_close_button).setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
@ -71,14 +109,6 @@ public class CalculatorOverlayService extends Service implements ExternalCalcula
} }
}); });
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
Math.max(wm.getDefaultDisplay().getWidth() / 2, 300),
Math.max(wm.getDefaultDisplay().getHeight() / 2, 450),
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL|WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSLUCENT);
final TextView overlayTitleTextView = (TextView) onscreenView.findViewById(R.id.overlay_title); final TextView overlayTitleTextView = (TextView) onscreenView.findViewById(R.id.overlay_title);
overlayTitleTextView.setOnTouchListener(new View.OnTouchListener() { overlayTitleTextView.setOnTouchListener(new View.OnTouchListener() {