OSDN Git Service

Trimming: clean up the UI for trimming.
authorTeng-Hui Zhu <ztenghui@google.com>
Wed, 26 Sep 2012 23:34:44 +0000 (16:34 -0700)
committerTeng-Hui Zhu <ztenghui@google.com>
Thu, 27 Sep 2012 19:19:00 +0000 (12:19 -0700)
Get rid of the home button and use the done button only in the action bar.
Switch back to use system actionbar / activity.
Rename the ShortenExample.

bug:7093240

Change-Id: I61684e9723af12cecc212bbd911c23aab0258463

res/layout/trim_menu.xml [new file with mode: 0644]
res/menu/trim.xml [deleted file]
src/com/android/gallery3d/app/TrimVideo.java
src/com/android/gallery3d/app/TrimVideoUtils.java [moved from src/com/android/gallery3d/app/ShortenExample.java with 97% similarity]

diff --git a/res/layout/trim_menu.xml b/res/layout/trim_menu.xml
new file mode 100644 (file)
index 0000000..d2af918
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 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.
+-->
+
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_centerVertical="true">
+    <TextView
+        android:id="@+id/start_trim"
+        android:layout_marginLeft="8dp"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:text="@string/done"
+        android:gravity="left|center_vertical"
+        android:drawableLeft="@drawable/ic_menu_save_holo_light"
+        android:drawablePadding="8dp" />
+</FrameLayout>
diff --git a/res/menu/trim.xml b/res/menu/trim.xml
deleted file mode 100644 (file)
index 57de589..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 Google Inc.
-
-     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.
--->
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:id="@+id/action_trim_video"
-            android:title="@string/done"
-            android:enabled="true"
-            android:showAsAction="ifRoom" />
-</menu>
index 1018ef6..23e56ba 100644 (file)
@@ -16,6 +16,8 @@
 
 package com.android.gallery3d.app;
 
+import android.app.ActionBar;
+import android.app.Activity;
 import android.app.ProgressDialog;
 import android.content.ContentResolver;
 import android.content.ContentValues;
@@ -29,17 +31,14 @@ import android.os.Environment;
 import android.os.Handler;
 import android.provider.MediaStore.Video;
 import android.provider.MediaStore.Video.VideoColumns;
+import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.Window;
+import android.widget.TextView;
 import android.widget.Toast;
 import android.widget.VideoView;
 
-import com.actionbarsherlock.app.ActionBar;
-import com.actionbarsherlock.app.SherlockActivity;
-import com.actionbarsherlock.view.Menu;
-import com.actionbarsherlock.view.MenuInflater;
-import com.actionbarsherlock.view.MenuItem;
-import com.actionbarsherlock.view.Window;
 import com.android.gallery3d.R;
 import com.android.gallery3d.util.BucketNames;
 
@@ -48,7 +47,7 @@ import java.io.IOException;
 import java.sql.Date;
 import java.text.SimpleDateFormat;
 
-public class TrimVideo extends SherlockActivity implements
+public class TrimVideo extends Activity implements
         MediaPlayer.OnErrorListener,
         MediaPlayer.OnCompletionListener,
         ControllerOverlay.Listener {
@@ -87,10 +86,23 @@ public class TrimVideo extends SherlockActivity implements
         requestWindowFeature(Window.FEATURE_ACTION_BAR);
         requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
 
-        ActionBar actionBar = getSupportActionBar();
-        int displayOptions = ActionBar.DISPLAY_HOME_AS_UP
-                | ActionBar.DISPLAY_SHOW_TITLE;
+        ActionBar actionBar = getActionBar();
+        int displayOptions = ActionBar.DISPLAY_SHOW_HOME;
+        actionBar.setDisplayOptions(0, displayOptions);
+        displayOptions = ActionBar.DISPLAY_SHOW_CUSTOM;
         actionBar.setDisplayOptions(displayOptions, displayOptions);
+        actionBar.setCustomView(R.layout.trim_menu);
+
+        TextView mSaveVideoTextView = (TextView) findViewById(R.id.start_trim);
+        mSaveVideoTextView.setOnTouchListener(new View.OnTouchListener() {
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                if (event.getAction() == MotionEvent.ACTION_UP) {
+                    trimVideo();
+                }
+                return true;
+            }
+        });
 
         Intent intent = getIntent();
         mUri = intent.getData();
@@ -212,14 +224,6 @@ public class TrimVideo extends SherlockActivity implements
         mController.showPaused();
     }
 
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        super.onCreateOptionsMenu(menu);
-        MenuInflater inflater = getSupportMenuInflater();
-        inflater.inflate(R.menu.trim, menu);
-        return true;
-    };
-
     // Copy from SaveCopyTask.java in terms of how to handle the destination
     // path and filename : querySource() and getSaveDirectory().
     private interface ContentResolverQueryCallback {
@@ -246,9 +250,9 @@ public class TrimVideo extends SherlockActivity implements
     private File getSaveDirectory() {
         final File[] dir = new File[1];
         querySource(new String[] {
-        VideoColumns.DATA }, new ContentResolverQueryCallback() {
+                VideoColumns.DATA }, new ContentResolverQueryCallback() {
 
-                @Override
+            @Override
             public void onCursorResult(Cursor cursor) {
                 dir[0] = new File(cursor.getString(0)).getParentFile();
             }
@@ -256,19 +260,6 @@ public class TrimVideo extends SherlockActivity implements
         return dir[0];
     }
 
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        int id = item.getItemId();
-        if (id == android.R.id.home) {
-            finish();
-            return true;
-        } else if (id == R.id.action_trim_video) {
-            trimVideo();
-            return true;
-        }
-        return false;
-    }
-
     private void trimVideo() {
         // Use the default save directory if the source directory cannot be
         // saved.
@@ -292,7 +283,7 @@ public class TrimVideo extends SherlockActivity implements
             @Override
             public void run() {
                 try {
-                    ShortenExample.main(null, mSrcFile, mDstFile, mTrimStartTime, mTrimEndTime);
+                    TrimVideoUtils.startTrim(mSrcFile, mDstFile, mTrimStartTime, mTrimEndTime);
                 } catch (IOException e) {
                     e.printStackTrace();
                 }
@@ -354,7 +345,6 @@ public class TrimVideo extends SherlockActivity implements
 
         // Copy some info from the source file.
         querySource(projection, new ContentResolverQueryCallback() {
-
             @Override
             public void onCursorResult(Cursor cursor) {
                 values.put(Video.Media.DATE_TAKEN, cursor.getLong(0));
@@ -405,7 +395,6 @@ public class TrimVideo extends SherlockActivity implements
     public void onShown() {
     }
 
-
     @Override
     public void onHidden() {
     }
@@ -39,9 +39,9 @@ import java.util.List;
 /**
  * Shortens/Crops a track
  */
-public class ShortenExample {
+public class TrimVideoUtils {
 
-    public static void main(String[] args, File src, File dst, int startMs, int endMs) throws IOException {
+    public static void startTrim(File src, File dst, int startMs, int endMs) throws IOException {
         RandomAccessFile randomAccessFile = new RandomAccessFile(src, "r");
         Movie movie = MovieCreator.build(randomAccessFile.getChannel());