summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChih-Chung Chang <chihchung@google.com>2011-08-24 19:16:06 +0800
committerChih-Chung Chang <chihchung@google.com>2011-08-24 19:17:53 +0800
commit675fa44a50be7ea5f9b9e4f533e6b01930a32411 (patch)
tree6bf2dd8e49b9c66c43911b90db55c53ccb0ad460 /src
parentec95ff6c28ffd89f8ce542ce4f24bb36a9764bda (diff)
downloadVideoEditor-675fa44a50be7ea5f9b9e4f533e6b01930a32411.tar.gz
Fix 5026634: After trimming, move clip to match the playhead.
The playhead is in the center of the screen except when trimming. In order to match the trimming position with the playhead after trimming is done, we move the clip to align with the playhead. Change-Id: Iebef02d8aacc4eab6e9f4dd342a3b41d5b380d56
Diffstat (limited to 'src')
-rwxr-xr-xsrc/com/android/videoeditor/widgets/MediaLinearLayout.java55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/com/android/videoeditor/widgets/MediaLinearLayout.java b/src/com/android/videoeditor/widgets/MediaLinearLayout.java
index 54a719d..157533e 100755
--- a/src/com/android/videoeditor/widgets/MediaLinearLayout.java
+++ b/src/com/android/videoeditor/widgets/MediaLinearLayout.java
@@ -1730,6 +1730,58 @@ public class MediaLinearLayout extends LinearLayout {
}
}
+ // Returns the begin time of a media item (exclude transition).
+ private long getBeginTime(MovieMediaItem item) {
+ final List<MovieMediaItem> mediaItems = mProject.getMediaItems();
+ long beginMs = 0;
+ final int mediaItemsCount = mediaItems.size();
+ for (int i = 0; i < mediaItemsCount; i++) {
+ final MovieMediaItem mediaItem = mediaItems.get(i);
+ final MovieTransition beginTransition = mediaItem.getBeginTransition();
+ final MovieTransition endTransition = mediaItem.getEndTransition();
+
+ if (item.getId().equals(mediaItem.getId())) {
+ if (beginTransition != null) {
+ beginMs += beginTransition.getAppDuration();
+ }
+ return beginMs;
+ }
+
+ beginMs += mediaItem.getAppTimelineDuration();
+
+ if (endTransition != null) {
+ beginMs -= endTransition.getAppDuration();
+ }
+ }
+
+ return 0;
+ }
+
+ // Returns the end time of a media item (exclude transition)
+ private long getEndTime(MovieMediaItem item) {
+ final List<MovieMediaItem> mediaItems = mProject.getMediaItems();
+ long endMs = 0;
+ final int mediaItemsCount = mediaItems.size();
+ for (int i = 0; i < mediaItemsCount; i++) {
+ final MovieMediaItem mediaItem = mediaItems.get(i);
+ final MovieTransition beginTransition = mediaItem.getBeginTransition();
+ final MovieTransition endTransition = mediaItem.getEndTransition();
+
+ endMs += mediaItem.getAppTimelineDuration();
+
+ if (endTransition != null) {
+ endMs -= endTransition.getAppDuration();
+ }
+
+ if (item.getId().equals(mediaItem.getId())) {
+ return endMs;
+ }
+
+ }
+
+ return 0;
+ }
+
/**
* @return The valid time location of the drop (-1 if none)
*/
@@ -2309,6 +2361,7 @@ public class MediaLinearLayout extends LinearLayout {
mListener.onTrimMediaItemEnd(mMediaItem,
mMediaItem.getAppBoundaryBeginTime());
+ mListener.onRequestMovePlayhead(getBeginTime(mMediaItem), false);
setTrimState(false);
if (Math.abs(mOriginalBeginMs - mMediaItem.getAppBoundaryBeginTime()) >
@@ -2505,6 +2558,8 @@ public class MediaLinearLayout extends LinearLayout {
mListener.onTrimMediaItemEnd(mMediaItem,
mMediaItem.getAppBoundaryEndTime());
+ mListener.onRequestMovePlayhead(getEndTime(mMediaItem), false);
+
setTrimState(false);
if (Math.abs(mOriginalBeginMs - mMediaItem.getAppBoundaryBeginTime()) >
TIME_TOLERANCE ||