Loading packages/SystemUI/res/layout/screen_pinning_request_buttons_sea.xml 0 → 100644 +143 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- /** * Copyright (c) 2014, The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ --> <!-- Note all width/height dimensions are switched here to handle landspace rather than duplicating them all. This layout matches the structure of navigation_bar.xml (rot90) and will need to be kept up to sync with changes there. --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/screen_pinning_buttons" android:layout_height="match_parent" android:layout_width="@dimen/screen_pinning_request_button_height" android:background="?android:attr/colorAccent" android:orientation="vertical"> <View android:layout_height="@dimen/screen_pinning_request_side_width" android:layout_width="match_parent" android:layout_weight="0" android:visibility="invisible" /> <FrameLayout android:id="@+id/screen_pinning_back_group" android:layout_height="@dimen/screen_pinning_request_button_width" android:layout_width="@dimen/screen_pinning_request_button_height" android:layout_weight="0" android:theme="@*android:style/ThemeOverlay.DeviceDefault.Accent"> <ImageView android:id="@+id/screen_pinning_back_bg_light" android:layout_height="match_parent" android:layout_width="match_parent" android:scaleType="matrix" android:layout_marginLeft="@dimen/screen_pinning_request_seascape_padding_negative" android:src="@drawable/screen_pinning_light_bg_circ" /> <ImageView android:id="@+id/screen_pinning_back_bg" android:layout_height="match_parent" android:layout_width="match_parent" android:scaleType="matrix" android:layout_marginLeft="@dimen/screen_pinning_request_seascape_button_offset" android:paddingRight="@dimen/screen_pinning_request_inner_padding" android:paddingTop="@dimen/screen_pinning_request_inner_padding" android:paddingBottom="@dimen/screen_pinning_request_inner_padding" android:src="@drawable/screen_pinning_bg_circ" /> <ImageView android:layout_height="match_parent" android:layout_width="match_parent" android:scaleType="center" android:paddingRight="@dimen/screen_pinning_request_nav_icon_padding" android:paddingTop="@dimen/screen_pinning_request_nav_side_padding" android:paddingBottom="@dimen/screen_pinning_request_nav_side_padding" android:src="@drawable/ic_sysbar_back" /> </FrameLayout> <View android:layout_height="match_parent" android:layout_width="match_parent" android:layout_weight="1" android:visibility="invisible" /> <FrameLayout android:id="@+id/screen_pinning_home_group" android:layout_height="@dimen/screen_pinning_request_button_width" android:layout_width="@dimen/screen_pinning_request_button_height" android:layout_weight="0" > <ImageView android:layout_height="match_parent" android:layout_width="match_parent" android:scaleType="center" android:paddingRight="@dimen/screen_pinning_request_nav_icon_padding" android:paddingTop="@dimen/screen_pinning_request_nav_side_padding" android:paddingBottom="@dimen/screen_pinning_request_nav_side_padding" android:src="@drawable/ic_sysbar_home" /> </FrameLayout> <View android:layout_height="match_parent" android:layout_width="match_parent" android:layout_weight="1" android:visibility="invisible" /> <FrameLayout android:id="@+id/screen_pinning_recents_group" android:layout_height="@dimen/screen_pinning_request_button_width" android:layout_width="@dimen/screen_pinning_request_button_height" android:layout_weight="0" android:theme="@*android:style/ThemeOverlay.DeviceDefault.Accent"> <ImageView android:id="@+id/screen_pinning_recents_bg_light" android:layout_height="match_parent" android:layout_width="match_parent" android:scaleType="matrix" android:layout_marginLeft="@dimen/screen_pinning_request_seascape_padding_negative" android:src="@drawable/screen_pinning_light_bg_circ" /> <ImageView android:id="@+id/screen_pinning_recents_bg" android:layout_height="match_parent" android:layout_width="match_parent" android:scaleType="matrix" android:layout_marginLeft="@dimen/screen_pinning_request_seascape_button_offset" android:paddingRight="@dimen/screen_pinning_request_inner_padding" android:paddingTop="@dimen/screen_pinning_request_inner_padding" android:paddingBottom="@dimen/screen_pinning_request_inner_padding" android:src="@drawable/screen_pinning_bg_circ" /> <ImageView android:layout_height="match_parent" android:layout_width="match_parent" android:scaleType="center" android:paddingRight="@dimen/screen_pinning_request_nav_icon_padding" android:paddingTop="@dimen/screen_pinning_request_nav_side_padding" android:paddingBottom="@dimen/screen_pinning_request_nav_side_padding" android:src="@drawable/ic_sysbar_recent" /> </FrameLayout> <View android:layout_height="@dimen/screen_pinning_request_side_width" android:layout_width="match_parent" android:layout_weight="0" android:visibility="invisible" /> </LinearLayout> packages/SystemUI/res/layout/screen_pinning_request_sea_phone.xml 0 → 100644 +36 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- /** * Copyright (c) 2014, The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="@dimen/screen_pinning_request_width" android:layout_width="wrap_content" android:gravity="left|center_vertical" android:orientation="horizontal" android:theme="@android:style/Theme.DeviceDefault.Light"> <include android:layout_width="wrap_content" android:layout_height="@dimen/screen_pinning_request_width" layout="@layout/screen_pinning_request_buttons_sea" /> <include android:layout_width="360dp" android:layout_height="@dimen/screen_pinning_request_width" layout="@layout/screen_pinning_request_text_area" /> </LinearLayout> packages/SystemUI/res/values/dimens.xml +4 −0 Original line number Diff line number Diff line Loading @@ -563,6 +563,10 @@ <dimen name="screen_pinning_request_button_width">84dp</dimen> <!-- Screen pinning request padding on top of inner circle --> <dimen name="screen_pinning_request_inner_padding">14dp</dimen> <!-- Screen pinning request seascape negative padding --> <dimen name="screen_pinning_request_seascape_padding_negative">-18dp</dimen> <!-- Screen pinning request seascape button offset --> <dimen name="screen_pinning_request_seascape_button_offset">-4dp</dimen> <!-- Screen pinning request padding on top of icons --> <dimen name="screen_pinning_request_nav_icon_padding">18dp</dimen> <!-- Screen pinning request padding on side of icons Loading packages/SystemUI/src/com/android/systemui/recents/ScreenPinningRequest.java +32 −14 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.os.Binder; import android.os.RemoteException; import android.util.DisplayMetrics; import android.view.Gravity; import android.view.Surface; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; Loading @@ -46,6 +47,11 @@ import com.android.systemui.R; import java.util.ArrayList; public class ScreenPinningRequest implements View.OnClickListener { private static final int ROTATION_NONE = 0; private static final int ROTATION_LANDSCAPE = 1; private static final int ROTATION_SEASCAPE = 2; private final Context mContext; private final AccessibilityManager mAccessibilityService; Loading Loading @@ -124,11 +130,12 @@ public class ScreenPinningRequest implements View.OnClickListener { clearPrompt(); } public FrameLayout.LayoutParams getRequestLayoutParams(boolean isLandscape) { public FrameLayout.LayoutParams getRequestLayoutParams(int rotation) { return new FrameLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, isLandscape ? (Gravity.CENTER_VERTICAL | Gravity.RIGHT) rotation == ROTATION_SEASCAPE ? (Gravity.CENTER_VERTICAL | Gravity.LEFT) : rotation == ROTATION_LANDSCAPE ? (Gravity.CENTER_VERTICAL | Gravity.RIGHT) : (Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM)); } Loading @@ -153,14 +160,16 @@ public class ScreenPinningRequest implements View.OnClickListener { DisplayMetrics metrics = new DisplayMetrics(); mWindowManager.getDefaultDisplay().getMetrics(metrics); float density = metrics.density; boolean isLandscape = isLandscapePhone(mContext); int rotation = getRotation(mContext); inflateView(isLandscape); inflateView(rotation); int bgColor = mContext.getColor( R.color.screen_pinning_request_window_bg); if (ActivityManager.isHighEndGfx()) { mLayout.setAlpha(0f); if (isLandscape) { if (rotation == ROTATION_SEASCAPE) { mLayout.setTranslationX(-OFFSET_DP * density); } else if (rotation == ROTATION_LANDSCAPE) { mLayout.setTranslationX(OFFSET_DP * density); } else { mLayout.setTranslationY(OFFSET_DP * density); Loading Loading @@ -193,18 +202,27 @@ public class ScreenPinningRequest implements View.OnClickListener { mContext.registerReceiver(mReceiver, filter); } private boolean isLandscapePhone(Context context) { private int getRotation(Context context) { Configuration config = mContext.getResources().getConfiguration(); return config.orientation == Configuration.ORIENTATION_LANDSCAPE && config.smallestScreenWidthDp < 600; int rot = context.getDisplay().getRotation(); if (config.smallestScreenWidthDp < 600) { if (rot == Surface.ROTATION_90) { return ROTATION_LANDSCAPE; } else if (rot == Surface.ROTATION_270) { return ROTATION_SEASCAPE; } } return ROTATION_NONE; } private void inflateView(boolean isLandscape) { private void inflateView(int rotation) { // We only want this landscape orientation on <600dp, so rather than handle // resource overlay for -land and -sw600dp-land, just inflate this // other view for this single case. mLayout = (ViewGroup) View.inflate(getContext(), isLandscape ? R.layout.screen_pinning_request_land_phone : R.layout.screen_pinning_request, mLayout = (ViewGroup) View.inflate(getContext(), rotation == ROTATION_SEASCAPE ? R.layout.screen_pinning_request_sea_phone : rotation == ROTATION_LANDSCAPE ? R.layout.screen_pinning_request_land_phone : R.layout.screen_pinning_request, null); // Catch touches so they don't trigger cancel/activate, like outside does. mLayout.setClickable(true); Loading Loading @@ -240,7 +258,7 @@ public class ScreenPinningRequest implements View.OnClickListener { mLayout.findViewById(R.id.screen_pinning_back_bg).setVisibility(backBgVisibility); mLayout.findViewById(R.id.screen_pinning_back_bg_light).setVisibility(backBgVisibility); addView(mLayout, getRequestLayoutParams(isLandscape)); addView(mLayout, getRequestLayoutParams(rotation)); } private void swapChildrenIfRtlAndVertical(View group) { Loading Loading @@ -269,14 +287,14 @@ public class ScreenPinningRequest implements View.OnClickListener { protected void onConfigurationChanged() { removeAllViews(); inflateView(isLandscapePhone(mContext)); inflateView(getRotation(mContext)); } private final Runnable mUpdateLayoutRunnable = new Runnable() { @Override public void run() { if (mLayout != null && mLayout.getParent() != null) { mLayout.setLayoutParams(getRequestLayoutParams(isLandscapePhone(mContext))); mLayout.setLayoutParams(getRequestLayoutParams(getRotation(mContext))); } } }; Loading Loading
packages/SystemUI/res/layout/screen_pinning_request_buttons_sea.xml 0 → 100644 +143 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- /** * Copyright (c) 2014, The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ --> <!-- Note all width/height dimensions are switched here to handle landspace rather than duplicating them all. This layout matches the structure of navigation_bar.xml (rot90) and will need to be kept up to sync with changes there. --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/screen_pinning_buttons" android:layout_height="match_parent" android:layout_width="@dimen/screen_pinning_request_button_height" android:background="?android:attr/colorAccent" android:orientation="vertical"> <View android:layout_height="@dimen/screen_pinning_request_side_width" android:layout_width="match_parent" android:layout_weight="0" android:visibility="invisible" /> <FrameLayout android:id="@+id/screen_pinning_back_group" android:layout_height="@dimen/screen_pinning_request_button_width" android:layout_width="@dimen/screen_pinning_request_button_height" android:layout_weight="0" android:theme="@*android:style/ThemeOverlay.DeviceDefault.Accent"> <ImageView android:id="@+id/screen_pinning_back_bg_light" android:layout_height="match_parent" android:layout_width="match_parent" android:scaleType="matrix" android:layout_marginLeft="@dimen/screen_pinning_request_seascape_padding_negative" android:src="@drawable/screen_pinning_light_bg_circ" /> <ImageView android:id="@+id/screen_pinning_back_bg" android:layout_height="match_parent" android:layout_width="match_parent" android:scaleType="matrix" android:layout_marginLeft="@dimen/screen_pinning_request_seascape_button_offset" android:paddingRight="@dimen/screen_pinning_request_inner_padding" android:paddingTop="@dimen/screen_pinning_request_inner_padding" android:paddingBottom="@dimen/screen_pinning_request_inner_padding" android:src="@drawable/screen_pinning_bg_circ" /> <ImageView android:layout_height="match_parent" android:layout_width="match_parent" android:scaleType="center" android:paddingRight="@dimen/screen_pinning_request_nav_icon_padding" android:paddingTop="@dimen/screen_pinning_request_nav_side_padding" android:paddingBottom="@dimen/screen_pinning_request_nav_side_padding" android:src="@drawable/ic_sysbar_back" /> </FrameLayout> <View android:layout_height="match_parent" android:layout_width="match_parent" android:layout_weight="1" android:visibility="invisible" /> <FrameLayout android:id="@+id/screen_pinning_home_group" android:layout_height="@dimen/screen_pinning_request_button_width" android:layout_width="@dimen/screen_pinning_request_button_height" android:layout_weight="0" > <ImageView android:layout_height="match_parent" android:layout_width="match_parent" android:scaleType="center" android:paddingRight="@dimen/screen_pinning_request_nav_icon_padding" android:paddingTop="@dimen/screen_pinning_request_nav_side_padding" android:paddingBottom="@dimen/screen_pinning_request_nav_side_padding" android:src="@drawable/ic_sysbar_home" /> </FrameLayout> <View android:layout_height="match_parent" android:layout_width="match_parent" android:layout_weight="1" android:visibility="invisible" /> <FrameLayout android:id="@+id/screen_pinning_recents_group" android:layout_height="@dimen/screen_pinning_request_button_width" android:layout_width="@dimen/screen_pinning_request_button_height" android:layout_weight="0" android:theme="@*android:style/ThemeOverlay.DeviceDefault.Accent"> <ImageView android:id="@+id/screen_pinning_recents_bg_light" android:layout_height="match_parent" android:layout_width="match_parent" android:scaleType="matrix" android:layout_marginLeft="@dimen/screen_pinning_request_seascape_padding_negative" android:src="@drawable/screen_pinning_light_bg_circ" /> <ImageView android:id="@+id/screen_pinning_recents_bg" android:layout_height="match_parent" android:layout_width="match_parent" android:scaleType="matrix" android:layout_marginLeft="@dimen/screen_pinning_request_seascape_button_offset" android:paddingRight="@dimen/screen_pinning_request_inner_padding" android:paddingTop="@dimen/screen_pinning_request_inner_padding" android:paddingBottom="@dimen/screen_pinning_request_inner_padding" android:src="@drawable/screen_pinning_bg_circ" /> <ImageView android:layout_height="match_parent" android:layout_width="match_parent" android:scaleType="center" android:paddingRight="@dimen/screen_pinning_request_nav_icon_padding" android:paddingTop="@dimen/screen_pinning_request_nav_side_padding" android:paddingBottom="@dimen/screen_pinning_request_nav_side_padding" android:src="@drawable/ic_sysbar_recent" /> </FrameLayout> <View android:layout_height="@dimen/screen_pinning_request_side_width" android:layout_width="match_parent" android:layout_weight="0" android:visibility="invisible" /> </LinearLayout>
packages/SystemUI/res/layout/screen_pinning_request_sea_phone.xml 0 → 100644 +36 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- /** * Copyright (c) 2014, The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="@dimen/screen_pinning_request_width" android:layout_width="wrap_content" android:gravity="left|center_vertical" android:orientation="horizontal" android:theme="@android:style/Theme.DeviceDefault.Light"> <include android:layout_width="wrap_content" android:layout_height="@dimen/screen_pinning_request_width" layout="@layout/screen_pinning_request_buttons_sea" /> <include android:layout_width="360dp" android:layout_height="@dimen/screen_pinning_request_width" layout="@layout/screen_pinning_request_text_area" /> </LinearLayout>
packages/SystemUI/res/values/dimens.xml +4 −0 Original line number Diff line number Diff line Loading @@ -563,6 +563,10 @@ <dimen name="screen_pinning_request_button_width">84dp</dimen> <!-- Screen pinning request padding on top of inner circle --> <dimen name="screen_pinning_request_inner_padding">14dp</dimen> <!-- Screen pinning request seascape negative padding --> <dimen name="screen_pinning_request_seascape_padding_negative">-18dp</dimen> <!-- Screen pinning request seascape button offset --> <dimen name="screen_pinning_request_seascape_button_offset">-4dp</dimen> <!-- Screen pinning request padding on top of icons --> <dimen name="screen_pinning_request_nav_icon_padding">18dp</dimen> <!-- Screen pinning request padding on side of icons Loading
packages/SystemUI/src/com/android/systemui/recents/ScreenPinningRequest.java +32 −14 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.os.Binder; import android.os.RemoteException; import android.util.DisplayMetrics; import android.view.Gravity; import android.view.Surface; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; Loading @@ -46,6 +47,11 @@ import com.android.systemui.R; import java.util.ArrayList; public class ScreenPinningRequest implements View.OnClickListener { private static final int ROTATION_NONE = 0; private static final int ROTATION_LANDSCAPE = 1; private static final int ROTATION_SEASCAPE = 2; private final Context mContext; private final AccessibilityManager mAccessibilityService; Loading Loading @@ -124,11 +130,12 @@ public class ScreenPinningRequest implements View.OnClickListener { clearPrompt(); } public FrameLayout.LayoutParams getRequestLayoutParams(boolean isLandscape) { public FrameLayout.LayoutParams getRequestLayoutParams(int rotation) { return new FrameLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, isLandscape ? (Gravity.CENTER_VERTICAL | Gravity.RIGHT) rotation == ROTATION_SEASCAPE ? (Gravity.CENTER_VERTICAL | Gravity.LEFT) : rotation == ROTATION_LANDSCAPE ? (Gravity.CENTER_VERTICAL | Gravity.RIGHT) : (Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM)); } Loading @@ -153,14 +160,16 @@ public class ScreenPinningRequest implements View.OnClickListener { DisplayMetrics metrics = new DisplayMetrics(); mWindowManager.getDefaultDisplay().getMetrics(metrics); float density = metrics.density; boolean isLandscape = isLandscapePhone(mContext); int rotation = getRotation(mContext); inflateView(isLandscape); inflateView(rotation); int bgColor = mContext.getColor( R.color.screen_pinning_request_window_bg); if (ActivityManager.isHighEndGfx()) { mLayout.setAlpha(0f); if (isLandscape) { if (rotation == ROTATION_SEASCAPE) { mLayout.setTranslationX(-OFFSET_DP * density); } else if (rotation == ROTATION_LANDSCAPE) { mLayout.setTranslationX(OFFSET_DP * density); } else { mLayout.setTranslationY(OFFSET_DP * density); Loading Loading @@ -193,18 +202,27 @@ public class ScreenPinningRequest implements View.OnClickListener { mContext.registerReceiver(mReceiver, filter); } private boolean isLandscapePhone(Context context) { private int getRotation(Context context) { Configuration config = mContext.getResources().getConfiguration(); return config.orientation == Configuration.ORIENTATION_LANDSCAPE && config.smallestScreenWidthDp < 600; int rot = context.getDisplay().getRotation(); if (config.smallestScreenWidthDp < 600) { if (rot == Surface.ROTATION_90) { return ROTATION_LANDSCAPE; } else if (rot == Surface.ROTATION_270) { return ROTATION_SEASCAPE; } } return ROTATION_NONE; } private void inflateView(boolean isLandscape) { private void inflateView(int rotation) { // We only want this landscape orientation on <600dp, so rather than handle // resource overlay for -land and -sw600dp-land, just inflate this // other view for this single case. mLayout = (ViewGroup) View.inflate(getContext(), isLandscape ? R.layout.screen_pinning_request_land_phone : R.layout.screen_pinning_request, mLayout = (ViewGroup) View.inflate(getContext(), rotation == ROTATION_SEASCAPE ? R.layout.screen_pinning_request_sea_phone : rotation == ROTATION_LANDSCAPE ? R.layout.screen_pinning_request_land_phone : R.layout.screen_pinning_request, null); // Catch touches so they don't trigger cancel/activate, like outside does. mLayout.setClickable(true); Loading Loading @@ -240,7 +258,7 @@ public class ScreenPinningRequest implements View.OnClickListener { mLayout.findViewById(R.id.screen_pinning_back_bg).setVisibility(backBgVisibility); mLayout.findViewById(R.id.screen_pinning_back_bg_light).setVisibility(backBgVisibility); addView(mLayout, getRequestLayoutParams(isLandscape)); addView(mLayout, getRequestLayoutParams(rotation)); } private void swapChildrenIfRtlAndVertical(View group) { Loading Loading @@ -269,14 +287,14 @@ public class ScreenPinningRequest implements View.OnClickListener { protected void onConfigurationChanged() { removeAllViews(); inflateView(isLandscapePhone(mContext)); inflateView(getRotation(mContext)); } private final Runnable mUpdateLayoutRunnable = new Runnable() { @Override public void run() { if (mLayout != null && mLayout.getParent() != null) { mLayout.setLayoutParams(getRequestLayoutParams(isLandscapePhone(mContext))); mLayout.setLayoutParams(getRequestLayoutParams(getRotation(mContext))); } } }; Loading