Commit Graph

4411 Commits

Author SHA1 Message Date
Chet Haase
341a31b107 Merge "First draft of Scenes & Transitions feature" 2013-04-18 20:38:17 +00:00
Chet Haase
faebd8f079 First draft of Scenes & Transitions feature
This checkin has preliminary API (in flux, definitely changes still
to be made) and implementation for a new "Scenes & Transitions" feature.
The current implementation allows you to define different Scenes
(via layout resource IDs or callbacks) and Transitions to be used when
changing to those scenes. By default, scene changes will use AutoTransition,
which generally does the right thing.

There are no overview docs or tutorials yet. The best way to learn how things
work is to see the code for the various tests in
frameworks/base/tests/TransitionTests.

Expect the API to change. Expect the implementation to change (mostly to add
more functionality). Expect bugs, but tell me if things do not work
as expected.

Change-Id: Ib025a9f565678b225afa4759325cf6d496cc7215
2013-04-18 13:33:13 -07:00
John Spurlock
600cba973f Input-related documentation fixes.
Fix a few typos in InputFilter.  Fix reference in InputEvent currently
causing public documentation breakage.

Change-Id: I6268ad165f11d4d9d5a4a66ed97f1538e174cf84
2013-04-18 08:53:56 -04:00
Mathias Agopian
b35fbd5720 am 740cf4ec: am bb7b315c: Merge "add javadoc for SurfaceView {unL|l}ockCanvas{AndPost}()" into jb-mr2-dev
* commit '740cf4ec31b8d7363c9a0f839afda3d8cb0ab9a3':
  add javadoc for SurfaceView {unL|l}ockCanvas{AndPost}()
2013-04-17 18:36:08 -07:00
Mathias Agopian
bb7b315cdd Merge "add javadoc for SurfaceView {unL|l}ockCanvas{AndPost}()" into jb-mr2-dev 2013-04-18 01:29:07 +00:00
Chet Haase
68293ecb91 am 78296cb7: am bc09a364: Merge "Fixes for setClipBounds()" into jb-mr2-dev
* commit '78296cb760bff8bf951e88d6f4ec9a6ff3059406':
  Fixes for setClipBounds()
2013-04-17 15:54:52 -07:00
Chet Haase
bc09a364c3 Merge "Fixes for setClipBounds()" into jb-mr2-dev 2013-04-17 22:13:50 +00:00
Mathias Agopian
9ddf32aa8a add javadoc for SurfaceView {unL|l}ockCanvas{AndPost}()
Bug: 8593591
Change-Id: I152281ddca8716aee97147cb1b3fb483ed46b053
2013-04-17 15:04:47 -07:00
Chet Haase
8c00be17e3 am 5bded3bf: am 8bba7510: Fix build - remove obsolete import of Animatable
* commit '5bded3bfe19cdf57620c7b6fa5ae7608333f3e7e':
  Fix build - remove obsolete import of Animatable
2013-04-17 07:07:19 -07:00
Chet Haase
8bba7510bc Fix build - remove obsolete import of Animatable
Change-Id: I3133669386f50177c863f8a58733be771f819a17
2013-04-17 06:44:08 -07:00
Craig Mautner
53078b25c9 Merge "Implement stack splitting and task movement." 2013-04-17 01:58:15 +00:00
Chet Haase
21f9a3608d Fixes for setClipBounds()
The invalidate region when the clip bounds are set needs to encompass both
the old clip bounds and the new bounds, to make sure that the right area
of the view gets erased as well as drawn.

Also, we need to keep our own internal copy of the bounds, not just use the
instance passed into the setter.

Issue #8634060 setClipBounds() problems

Change-Id: I123c49cff16e3debe8866974a5612a4efd010de4
2013-04-16 17:57:11 -07:00
Chet Haase
b0354021a5 am b718735a: am b2488931: Merge "Avoid repositioning unattached overlay views" into jb-mr2-dev
* commit 'b718735aae23455126719ba0b23edf2a64875f4e':
  Avoid repositioning unattached overlay views
2013-04-16 11:05:54 -07:00
Chet Haase
b2488931cb Merge "Avoid repositioning unattached overlay views" into jb-mr2-dev 2013-04-16 17:58:37 +00:00
John Spurlock
32beb2c6b1 Hideybars part I - Overlay status bar via an intent.
Implement new mode for status bar, allowing it to overlay
windows that use WM.LP.FLAG_FULLSCREEN, and introduce
transparency.

No gesture is implemented yet, for now the auto-hiding
status bar can be shown using a debugging intent.
  android.intent.action.HIDEYBARS

The auto-hiding status bar hides 3 seconds after shown,
or 3 seconds after last user-interaction with the shade.

Change-Id: Ie4bd625b9cbcddea8f818154719c7a6075972f2a
2013-04-16 11:03:40 -04:00
Dianne Hackborn
11dfb30c2f am f5cfab41: am a59a19ab: Merge "Fix issue #8512015: VideoView\'s window animates when its position changes" into jb-mr2-dev
* commit 'f5cfab41c3ea1eb0cd99f7a9387af7df2b2e5991':
  Fix issue #8512015: VideoView's window animates when its position changes
2013-04-15 21:54:39 -07:00
Chet Haase
face742d31 Avoid repositioning unattached overlay views
Adding a view to an overlay usually entails removing the
view from its current parent, if it has one. ViewOverlay.add() will
do this automatically. At the same time, it will check to see whether
the parent view is in a different global location than the overlay's
host view, and will adjust the added view accordingly. This enables
the caller to simply toss a view into an overlay and have it end up
at the same global position on the screen.

the problem is that the current code doesn't bother to check whether
the old parent is attached. If that parent has been removed from the
view hierarchy before this overlay operation, then it will show up as
being at (0,0) in the window, not its old location. This results in the
view being mis-positioned in the overaly.

Fix is simple: if the view's old parent is not attached, simply remove
it from that parent before adding it to the overlay; don't try to compensate
for its position which is based on wrong information.

Issue #8620319 Overlay should only use relative window locations for onscreen parents

Change-Id: I414038a6c355dfd58f9766b007ac44d535ef1889
2013-04-15 15:15:59 -07:00
Dianne Hackborn
1c5383ce0b Fix issue #8512015: VideoView's window animates when its position changes
Change-Id: I79eee6b9672b7d72eabe5d20be639c05a6f3d72b
2013-04-15 15:07:21 -07:00
Craig Mautner
967212cb54 Implement stack splitting and task movement.
Split stacks and move tasks between them. Layout the windows
according to the new stack split.

After layout content rectangles are known split the available area
between all stack boxes. Then use those values for future layout.

Provide stack contents to ActivityManager.

Change-Id: I9746e6185445633810d506be514d0b7b540a7f99
2013-04-15 13:46:47 -07:00
Mathias Agopian
cc6dda7750 am 4c87edfe: am 1763d6f9: Merge "always trigger a re-draw when updating the transparent region hint" into jb-mr2-dev
* commit '4c87edfe4d2dce71b7b723f25078cd4bd5d48456':
  always trigger a re-draw when updating the transparent region hint
2013-04-12 18:05:43 -07:00
Mathias Agopian
1763d6f957 Merge "always trigger a re-draw when updating the transparent region hint" into jb-mr2-dev 2013-04-13 00:28:16 +00:00
Svetoslav
cbd5fe843d am 64076958: am 72ab9b80: Merge "Respect custom view drawing order when dispatching hover events." into jb-mr2-dev
* commit '640769589b5eb6a4c9a09f8710c3a585320fa075':
  Respect custom view drawing order when dispatching hover events.
2013-04-12 17:21:52 -07:00
Svetoslav
72ab9b8017 Merge "Respect custom view drawing order when dispatching hover events." into jb-mr2-dev 2013-04-13 00:14:56 +00:00
Mathias Agopian
54e3d38490 always trigger a re-draw when updating the transparent region hint
since SF now relies on receiving a frame for latching the
transparent region hint, we make sure we will indeed redraw
something.

Bug: 8581533

Change-Id: Ia12ddf5654a7deeac7628b799bfde4b8c16c992b
2013-04-12 17:01:44 -07:00
Svetoslav
0e5e9aa8e5 Respect custom view drawing order when dispatching hover events.
1. The event dispatch methods should respect the child drawing order.
   Hover event dispatch in ViewGroup was not repsecting this order.

bug:8606799

Change-Id: Ie2fd3aff1292c21df23a04ca0aa03a97813c44ef
2013-04-12 16:59:03 -07:00
Chet Haase
1d9648df51 am d04215c4: am 0a41431d: Merge "API and doc cleanup, plus small animation/UI features" into jb-mr2-dev
* commit 'd04215c440e7b7f4bbfe8aaa9a47ccdf3a8dacf5':
  API and doc cleanup, plus small animation/UI features
2013-04-12 15:26:55 -07:00
Chet Haase
0a41431d69 Merge "API and doc cleanup, plus small animation/UI features" into jb-mr2-dev 2013-04-12 22:18:24 +00:00
Chet Haase
430742f090 API and doc cleanup, plus small animation/UI features
Adding features which round out the animation APIs (missing
getters, etc.). Also fix doc typos.

Issue #8350510 Add APIs needed for future animation capabilities

Change-Id: I063736848ba26e6d6c809b15fc3a103c74222f46
2013-04-12 13:44:22 -07:00
Craig Mautner
ffe0c56c29 am 429664a5: am d5e7b8bf: Merge "Clear test rectangle if previous focus is null." into jb-mr2-dev
* commit '429664a52ab0d024757650a246297ae8224e60dc':
  Clear test rectangle if previous focus is null.
2013-04-12 12:11:17 -07:00
Craig Mautner
d5e7b8bfb4 Merge "Clear test rectangle if previous focus is null." into jb-mr2-dev 2013-04-12 19:02:06 +00:00
Craig Mautner
26a84dfdd0 Clear test rectangle if previous focus is null.
A bug in FolderEditText or DynamicLayout (b/8600683) was causing
the 'rectangle' parameter passed to scrollToRectOrFocus() to be
roughly 1000 feet to the right of the screen.

This bug is normally masked because the focus found in
mLastScrolledFocus never matches the new focus and consequently
the misleading 'rectangle' is nulled. However, on the first
time in to scrollToRectOrFocus when returning to Launcher
from another app, mLastScrolledFocus is null and the code
skips over the place where 'rectangle' is nulled. Without this
clearing it was determined that 'rectangle' was outside the viewable
area and scrolling not required. This is bug 8547155.

This change causes even null values of mLastScrollFocus to be
compared to the new focus thus masking the bug in all situations.
Bug 8600683 will be fixed in a separate CL.

Fixes bug 8547155.

Change-Id: Ic6cb22c42b0e93a9793dd2babc25727c2ba29155
2013-04-11 19:33:54 -07:00
Michael Wright
0f3e023b63 am af543eb0: am 8881455a: Merge "Send joystick key repeat messages to correct handler" into jb-mr2-dev
* commit 'af543eb050546e2197bd54db7cf257e053add4c2':
  Send joystick key repeat messages to correct handler
2013-04-10 16:12:59 -07:00
Michael Wright
b9618523ad Send joystick key repeat messages to correct handler
Change-Id: I7f8dbe21c9088553ad2c5efe70585f516ab78141
2013-04-10 15:20:56 -07:00
Romain Guy
02b5d6ff13 am 23886803: am 5180ed14: Merge "Instrument views inflation in systrace" into jb-mr2-dev
* commit '23886803a13f5f8f9c69fd6374ca1f732d1e513b':
  Instrument views inflation in systrace
2013-04-10 14:14:20 -07:00
Romain Guy
5180ed141d Merge "Instrument views inflation in systrace" into jb-mr2-dev 2013-04-10 21:07:09 +00:00
Romain Guy
09f7b93a18 Instrument views inflation in systrace
Change-Id: If3cd80bc430893c701432f165b4c1f5943a4143c
2013-04-10 11:42:44 -07:00
Chet Haase
c4c8f2d82e am 78b24b6f: am dacd4751: Merge "Fix Contacts animation jank" into jb-mr2-dev
* commit '78b24b6f03f467a59afd6797b4c03224fe3af767':
  Fix Contacts animation jank
2013-04-10 11:01:31 -07:00
Chet Haase
dacd475163 Merge "Fix Contacts animation jank" into jb-mr2-dev 2013-04-10 17:49:56 +00:00
Chet Haase
58d110afa0 Fix Contacts animation jank
The last frame of an animation stays stuck on the screen for a couple of frames.
Specifically, the "Quick Contact" animation that animates the picture
closed (fades/scales it away) animates all the way to the end... then hangs there
briefly before being taken down.

The problem is a rendering bug where we correctly detect that a DisplayList
has nothing to draw (since the last frame is completely transparent, alpha==0),
but incorrectly ignore the fact that we cleared the transparent-background
window prior to not-drawing that DisplayList. When we detect that there's
nothing to draw, we don't bother swapping buffers. So even though we drew
the right thing (clearing the buffer), we didn't actually post the buffer to the
screen.

This change factors in both the clear and the draw to decide when to swap buffers.

Issue #8564865 Quick contact close animation jank redux

Change-Id: Ib922cff88a94f025b62f7461c1a29e96fe454838
2013-04-10 07:43:29 -07:00
Jeff Brown
54977db25a am 55198db2: am 4dac901f: Rewrite touch navigation dpad synthesis.
* commit '55198db2dbb55d4f9ac18db81cc05c553b6c6d23':
  Rewrite touch navigation dpad synthesis.
2013-04-10 04:01:10 -07:00
Jeff Brown
4dac901f01 Rewrite touch navigation dpad synthesis.
The new implementation more accurately tracks the velocity
of flings and takes care to avoid obvious discontinuities.
The main goal is for a fling to appear to be a linear
extension of the movement already in progress.  The minimum
fling velocity is set to ensure that flings appear to be
fairly smooth despite being discretized.

Use sequences of repeated key events instead of individual
down/up events to represent continuous motions in one
direction which can be helpful for stopping flings at boundaries
such as when flinging the cursor position within a text view.

Compute the movement thresholds based on the physical
size of the touch pad, if known.  If not known, we assume a
nominal size.

Support stopping flings with a tap just like we do for
normal touch events elsewhere in the framework.

Moved the detection of ASSIST swipes into the InputReader
where it belongs.  These swipes must be detected globally
to ensure consistent behavior across the all applications.

Added a custom protocol in EventHub to enable input device
drivers to override the timestamp of the following events
in a packet.  This change enables input device drivers
that have a better idea of when an input event was actually
generated to pass this information to the input system.
Particularly useful with uinput.

Bug: 8583760
Change-Id: I8ef4e827804786d549cfaa00793a2b9dd0fda465
2013-04-10 03:51:18 -07:00
Jeff Brown
82c0edaad3 am f1cee03b: am 678a1252: Split up the event synthesis code by source.
* commit 'f1cee03bf0e5d3144947609a23665d950e385635':
  Split up the event synthesis code by source.
2013-04-10 03:26:33 -07:00
Jeff Brown
678a1252b4 Split up the event synthesis code by source.
The goal is to better encapsulate this code to make it easier
to maintain and to facilitate some upcoming changes.

Some of the variables have been renamed but the logic is unchanged.

Bug: 8583760
Change-Id: I45501f7dabebcb938e42c386291d615d088a4c8c
2013-04-10 03:01:29 -07:00
Jeff Brown
8140b05f1e am 9acc8c9c: am 97b968b6: Merge "Fix trackball interpretation of precision." into jb-mr2-dev
* commit '9acc8c9c53a4d3adcf3e3f220ea5e4529c3e60a4':
  Fix trackball interpretation of precision.
2013-04-08 19:15:13 -07:00
Jeff Brown
b437a79b05 resolved conflicts for merge of 21dffd5d to master
Change-Id: I37c48dee471c9d43f19c1fe4a01f70db53e2441f
2013-04-08 19:05:15 -07:00
Chet Haase
c6b0589b08 am 15c9e15e: am b9604a34: Merge "Amend getOverlay() docs for SurfaceView/TextureView" into jb-mr2-dev
* commit '15c9e15e71dba40370946ca3837b80327d2925c2':
  Amend getOverlay() docs for SurfaceView/TextureView
2013-04-08 17:05:39 -07:00
Jeff Brown
97b968b6b3 Merge "Fix trackball interpretation of precision." into jb-mr2-dev 2013-04-09 00:00:38 +00:00
Jeff Brown
3a2854bcee Merge "Queues, queues, queues and input." into jb-mr2-dev 2013-04-08 23:59:24 +00:00
Jeff Brown
c574b68cbb Fix trackball interpretation of precision.
The trackball to dpad synthesis was using the MotionEvent's precision
field to determine a threshold for movement but the calculations
involved did not actually make sense for any value of precision
less than 2.0.  This worked fine before since the InputReader
hardcodes the trackball's precision to 6.

Injected trackball events may have a different precision which can
result in the thresholds being set inappropriately.  For example,
it was not possible to move focus by one unit at a time when
the precision was set to 1.0.

The old code was probably using precision as a way to set a
threshold based on the trackball moving by some minimum number
of physical ticks, in this case 2.  But the code will work just
as well if we set an absolute threshold based on distance
traveled given that the input system is already expected to
normalize the trackball movements before delivering them to the
application.

So stop using precision.

Bug: 8473020
Change-Id: I3c6f7fb1b507f8cf5608b47550e7345fea3352fa
2013-04-08 16:53:59 -07:00
Jeff Brown
f9e989d5f0 Queues, queues, queues and input.
Redesigned how ViewRootImpl delivers input events to views,
the IME and to native activities to fix several issues.

The prior change to make IME input event delegation use
InputChannels failed to take into account that InputMethodManager
is a singleton attached to the main looper whereas UI may be
attached to any looper.  Consequently interactions with the
InputChannel might occur on the wrong thread.  Fixed this
problem by checking the current thread and posting input
events or callbacks to the correct looper when necessary.

NativeActivity has also been broken for a while because the
default event handling logic for joysticks and touch navigation
was unable to dispatch events back into the native activity.
In particular, this meant that DPad synthesis from touch navigation
would not work in any native activity.  The plan is to fix
this problem by passing all events through ViewRootImpl as usual
then forwarding them to native activity as needed.  This should
greatly simplify IME pre-dispatch and system key handling
and make everything more robust overall.

Fixed issues related to when input events are synthesized.
In particular, added a more robust mechanism to ensure that
synthetic events are canceled appropriately when we discover
that events are no longer being resynthesized (because the
application or IME is handling or dropping them).

The new design is structured as a pipeline with a chain of
responsibility consisting of InputStage objects.  Each InputStage
is responsible for some part of handling each input event
such as dispatching to the view hierarchy or to the IME.
As a stage processes an input event, it has the option of
finishing the event, forwarding the event to the next stage
or handling the event asynchronously.  Some queueing logic
takes care to ensure that events are forwarded downstream in
the correct order even if they are handled out of order
by a given stage.

Cleaned up the InputMethodManager singleton initialization logic
to make it clearer that it must be attached to the main looper.
We don't actually need to pass this looper around.

Deleted the LatencyTimer class since no one uses it and we have
better ways of measuring latency these days using systrace.

Added a hidden helper to Looper to determine whether the current
thread is the indicated Looper thread.

Note: NativeActivity's IME dispatch is broken by this patch.
This will be fixed later in another patch.

Bug: 8473020
Change-Id: Iac2a1277545195a7a0137bbbdf04514c29165c60
2013-04-08 15:31:47 -07:00