Commit Graph

22 Commits

Author SHA1 Message Date
Bryce Lee
7566d76c61 Add app bounds to configuration.
The system previously overrode the display size for a specific scope
(task/activity/etc.) by setting the associated Configuration's
screenWidthDp/screenHeightDp. This leads to two issues. First, the
conversion of screen size from pixels to display independent pixels
and then upconverting later on leads to rounding errors. Secondly,
the screenWidthDp and screenHeightDp values account for insets, such
as the status bar. These however are not reflected in the display
size when returned from Display#getMetrics/getSize.

This changelist addresses the issue by adding a Rect value to
Configuration which stores the app display bounds. This is always set
at the display level and overridden as appropriate. As the proper
app insets are accounted for at the root configuration, all overrides
(outside of specific exceptions) are the result of the intersection
between the requested bound and the parent bound.

Change-Id: I2c4fcd0bee92af12aabbca258de05b4ec061d0e1
Fixes: 34338931
Bug: 36812336
Bug: 36676979
Test: cts/hostsidetests/services/activityandwindowmanager/util/run-test CtsAppTestCases android.app.cts.AspectRatioTests
Test: cts/hostsidetests/services/activityandwindowmanager/util/run-test CtsServicesHostTestCases android.server.cts.ActivityManagerDisplayTests
Test: bit FrameworksServicesTests:com.android.server.wm.AppBoundsTests
2017-03-31 21:34:30 -07:00
Sergey Vasilinets
d253797588 Fix NinePatch insets scaling
bug:27323867
Change-Id: I33c0007eb9259703c73d2e3672ae1427a2155037
2016-03-22 22:35:52 -07:00
Chris Craik
ccdc3ebb9c Document that Rect right/bottom are exclusive
bug:22254401

Change-Id: I891e73404937b4b67210f0ac180f4cef952f8f16
2016-03-15 10:57:48 -07:00
Jorim Jaggi
0a93214198 Exclude stable insets from task config
When a app is in fullscreen, we exclude navigation bar and status bar
size when calculating the config. However, when in multi-window, and
the task was almost fullscreen, the height/width reported to the app
was actually larger than when it was in fullscreen. In order to fix
this, exclude the stable insets when calculating the task
configuration, and also fix a bug when calculating the screen layout.

Change-Id: I843ae012fb3050c79643d125550aacb6e73d27da
2016-02-04 14:36:57 -08:00
Jorim Jaggi
c6c89a8214 Fix transition to recents in docked mode
Transition for non-compatible apps will be handled in a separate CL.

Change-Id: I9c474f7aa394e4f3eacd1845c78bee5874bd8a59
2016-02-01 12:19:53 -08:00
Chet Haase
5b3edbde20 Add annotation to Rect.intersect()
Failing to check the return result from intersect() can cause artifacts
because the developer may assume that the rect has been changed to the intersection.
In particular, when the two rects do not overlap, there is no change made to the
source rect. Instead, the method simply returns false. When developers do not
check that return value, they may use the source rect and get undefined results.

This change adds the @CheckResults annotation that will cause a Lint warning
when developers call this method without checking the return value.

Change-Id: I476367d74e712038c248c2379fb124734298fcc1
2015-04-22 17:07:21 -07:00
Chris Craik
47cd8e921d Implement outline support for nine patches
b/15856895

Nine patches now have outline round rect metadata stored as optional
png tags. aapt generates these automatically by inspecting the bitmap
pixels to estimate outline bounds and round rect radius, based on
opacity.

Change-Id: I226e328a97873010d9e1adb797ac48f93a31183c
2014-07-14 15:01:27 -07:00
Ian Rogers
5d5d14fd97 Move FLATTENED_PATTERN to inner class.
Avoid AOT compilation/initialization in ART failing due to regex.Pattern
requiring native support.

Bug: 14646037

Change-Id: I9d9c7fd9ed9fab7e21d37f9b31c00d037fc5a691
2014-05-14 15:29:46 -07:00
Romain Guy
dd4b1fec4c Don't crash when copying a null Rect
Bug #7158068

Change-Id: I8f5f3ee12b2c4fd1fe28212b0c6de1214f2ce5f9
2012-09-12 17:28:02 -07:00
Pin Ting
852be16790 Fix typo in javadoc.
Change-Id: I0e5d8640764772871e72cb00d117d12f3eaeb64f
2012-05-11 18:09:58 +08:00
Romain Guy
cfef12374c Perform early intersect to avoid unnecessary draws
Change-Id: I48d61c4488e622f93733d8e53a50c93e6a20166d
2012-02-23 13:50:37 -08:00
Romain Guy
74d7ca133a Proper equals/hashCode impls in Rect and RectF
Change-Id: Ief52d84f134018af4dfd19674de12736c056e3f8
2012-01-31 10:50:38 -08:00
Gilles Debunne
cc3ec6cdb2 New cursor controller in TextViews.
Editable TextView now display a cursor controller under the insertion
point so that it can be precisely moved.

Change-Id: Ia2e6ddc57d249647ff6683e10e4226db3df27223
2010-07-09 16:20:21 -07:00
Joe Onorato
c7a63eea8d Add a new field to Intent that allows you to give a hint about what on screen caused the intent to
be sent.
2009-12-02 22:27:07 -08:00
Mitsuru Oshima
61324e58c5 cast is floor. Use round instead.
This fixes a few layout issues (that was due to smaller widnow size)
2009-07-21 16:42:41 -07:00
Mitsuru Oshima
13735a255d Merge branch 'readonly-p4-donut' into donut 2009-04-28 18:13:25 -07:00
Mitsuru Oshima
8169daed2f AI 147976: Compatibility mode support. Part 2.
* Introduced ApplicationScale (may not be good name. CompatibilityScale? CanvasScale? Pls let me know if you have better idea)
  * Changes to RootView / SurfaceView
  - Makes the app believe it's running in the supported density/resolution.
  - Makes the window manager believe it's running at the right density/resolution.
  * Added methods to Rect/Event for scaling up/down.
  Known issues:
  * certain kind of images (such as nine patch for buttons) seesm to be loaded not by app, thus does not take the scale into account,
  which, in turn, is causing layout issue.
  * ZoomButton in MapView is rendered in wrong place
  * Transparent region on Surface is not correct
  * Specifying different densities in one process is not working.
  BUG=1770627

Automated import of CL 147976
2009-04-28 18:12:09 -07:00
Dianne Hackborn
1d442e0d99 More optimization of dumpsys output.
There are three major classes of changes here:

- Avoid writing lines where their values are often empty, false, or some other typical thing.
- Use partial writes to the PrintWriter to avoid creating temporary strings.
- Use StringBuilder where we need to generate real String objects (and where possible cache the result).
2009-04-22 18:03:21 -07:00
The Android Open Source Project
9066cfe988 auto import from //depot/cupcake/@135843 2009-03-03 19:31:44 -08:00
The Android Open Source Project
d83a98f4ce auto import from //depot/cupcake/@135843 2009-03-03 18:28:45 -08:00
The Android Open Source Project
f013e1afd1 Code drop from //branches/cupcake/...@124589 2008-12-17 18:05:43 -08:00
The Android Open Source Project
54b6cfa9a9 Initial Contribution 2008-10-21 07:00:00 -07:00