diff --git a/twidere/build.gradle b/twidere/build.gradle
index 8e9ff8a93..75c337e69 100644
--- a/twidere/build.gradle
+++ b/twidere/build.gradle
@@ -10,7 +10,7 @@ android {
applicationId "org.mariotaku.twidere"
minSdkVersion 14
targetSdkVersion 22
- versionCode 106
+ versionCode 107
versionName "0.3.0"
multiDexEnabled true
}
diff --git a/twidere/src/main/java/org/mariotaku/twidere/activity/support/MediaViewerActivity.java b/twidere/src/main/java/org/mariotaku/twidere/activity/support/MediaViewerActivity.java
index 9ca7a9d97..56555cdde 100644
--- a/twidere/src/main/java/org/mariotaku/twidere/activity/support/MediaViewerActivity.java
+++ b/twidere/src/main/java/org/mariotaku/twidere/activity/support/MediaViewerActivity.java
@@ -19,11 +19,14 @@ package org.mariotaku.twidere.activity.support;
import android.content.Intent;
import android.media.AudioManager;
import android.media.MediaPlayer;
+import android.media.MediaPlayer.OnCompletionListener;
+import android.media.MediaPlayer.OnErrorListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.net.Uri;
import android.os.AsyncTask.Status;
import android.os.Build;
import android.os.Bundle;
+import android.os.Handler;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
@@ -42,6 +45,8 @@ import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLayoutChangeListener;
import android.view.ViewGroup;
+import android.widget.MediaController;
+import android.widget.ProgressBar;
import com.davemorrissey.labs.subscaleview.ImageSource;
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
@@ -181,7 +186,7 @@ public final class MediaViewerActivity extends ThemedActionBarActivity implement
}
public static final class VideoPageFragment extends BaseSupportFragment
- implements VideoLoadingListener, OnPreparedListener {
+ implements VideoLoadingListener, OnPreparedListener, OnErrorListener, OnCompletionListener {
private static final String[] SUPPORTED_VIDEO_TYPES;
@@ -193,10 +198,19 @@ public final class MediaViewerActivity extends ThemedActionBarActivity implement
}
}
- private TextureVideoView mVideoView;
private VideoLoader mVideoLoader;
+ private TextureVideoView mVideoView;
+ private ProgressBar mVideoViewProgress;
+
private boolean mPlayAudio;
+ private VideoPlayProgressRunnable mVideoProgressRunnable;
+
+ @Override
+ public void onCompletion(MediaPlayer mp) {
+// mVideoViewProgress.removeCallbacks(mVideoProgressRunnable);
+// mVideoViewProgress.setVisibility(View.GONE);
+ }
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
@@ -207,12 +221,51 @@ public final class MediaViewerActivity extends ThemedActionBarActivity implement
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mVideoLoader = TwidereApplication.getInstance(getActivity()).getVideoLoader();
+ mVideoProgressRunnable = new VideoPlayProgressRunnable(mVideoViewProgress.getHandler(),
+ mVideoViewProgress, mVideoView);
final String url = getBestVideoUrl(getMedia());
if (url != null) {
mVideoLoader.loadVideo(url, this);
}
+
+ mVideoView.setOnPreparedListener(this);
+ mVideoView.setOnErrorListener(this);
+ mVideoView.setOnCompletionListener(this);
}
+ @Override
+ public boolean onError(MediaPlayer mp, int what, int extra) {
+ mVideoViewProgress.removeCallbacks(mVideoProgressRunnable);
+ mVideoViewProgress.setVisibility(View.GONE);
+ return true;
+ }
+
+
+ private static class VideoPlayProgressRunnable implements Runnable {
+
+ private final Handler mHandler;
+ private final ProgressBar mProgressBar;
+ private final MediaController.MediaPlayerControl mMediaPlayerControl;
+
+ VideoPlayProgressRunnable(Handler handler, ProgressBar progressBar,
+ MediaController.MediaPlayerControl mediaPlayerControl) {
+ mHandler = handler;
+ mProgressBar = progressBar;
+ mMediaPlayerControl = mediaPlayerControl;
+ mProgressBar.setMax(1000);
+ }
+
+ @Override
+ public void run() {
+ final int duration = mMediaPlayerControl.getDuration();
+ final int position = mMediaPlayerControl.getCurrentPosition();
+ if (duration <= 0 || position < 0) return;
+ mProgressBar.setProgress(Math.round(1000 * position / (float) duration));
+ mHandler.postDelayed(this, 16);
+ }
+ }
+
+
@Override
public void onPrepared(MediaPlayer mp) {
if (getUserVisibleHint()) {
@@ -223,6 +276,8 @@ public final class MediaViewerActivity extends ThemedActionBarActivity implement
mp.setVolume(0, 0);
}
mp.start();
+ mVideoViewProgress.setVisibility(View.VISIBLE);
+ mVideoViewProgress.post(mVideoProgressRunnable);
}
}
@@ -240,6 +295,7 @@ public final class MediaViewerActivity extends ThemedActionBarActivity implement
public void onBaseViewCreated(View view, Bundle savedInstanceState) {
super.onBaseViewCreated(view, savedInstanceState);
mVideoView = (TextureVideoView) view.findViewById(R.id.video_view);
+ mVideoViewProgress = (ProgressBar) view.findViewById(R.id.video_view_progress);
}
@Override
@@ -265,15 +321,14 @@ public final class MediaViewerActivity extends ThemedActionBarActivity implement
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
-// if (mVideoView != null && mVideoView.isPlaying()) {
-// mVideoView.pause();
-// }
+ if (!isVisibleToUser && mVideoView != null && mVideoView.isPlaying()) {
+ mVideoView.pause();
+ }
}
@Override
public void onVideoLoadingComplete(String uri, VideoLoadingListener listener, File file) {
mVideoView.setVideoURI(Uri.fromFile(file));
- mVideoView.setOnPreparedListener(this);
}
@Override
diff --git a/twidere/src/main/res/layout/fragment_webview.xml b/twidere/src/main/res/drawable/progress_bar_video.xml
similarity index 72%
rename from twidere/src/main/res/layout/fragment_webview.xml
rename to twidere/src/main/res/drawable/progress_bar_video.xml
index 1ed388b74..69625931d 100644
--- a/twidere/src/main/res/layout/fragment_webview.xml
+++ b/twidere/src/main/res/drawable/progress_bar_video.xml
@@ -2,7 +2,7 @@
-
+
+
+
+
+
\ No newline at end of file
diff --git a/twidere/src/main/res/layout/fragment_accounts_manager.xml b/twidere/src/main/res/layout/fragment_accounts_manager.xml
deleted file mode 100644
index e7b8cef63..000000000
--- a/twidere/src/main/res/layout/fragment_accounts_manager.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
diff --git a/twidere/src/main/res/layout/fragment_characters_grid.xml b/twidere/src/main/res/layout/fragment_characters_grid.xml
deleted file mode 100644
index ad0167272..000000000
--- a/twidere/src/main/res/layout/fragment_characters_grid.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
diff --git a/twidere/src/main/res/layout/fragment_details_page.xml b/twidere/src/main/res/layout/fragment_details_page.xml
deleted file mode 100644
index 24d271490..000000000
--- a/twidere/src/main/res/layout/fragment_details_page.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/twidere/src/main/res/layout/fragment_media_page_video.xml b/twidere/src/main/res/layout/fragment_media_page_video.xml
index cdb262318..144334467 100644
--- a/twidere/src/main/res/layout/fragment_media_page_video.xml
+++ b/twidere/src/main/res/layout/fragment_media_page_video.xml
@@ -23,18 +23,38 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
-
+ android:layout_height="wrap_content"
+ android:layout_gravity="center">
+
+
+
+
+
+
+
+ android:layout_gravity="center"
+ android:visibility="gone"/>
\ No newline at end of file
diff --git a/twidere/src/main/res/layout/gallery_item_color_picker_preset.xml b/twidere/src/main/res/layout/gallery_item_color_picker_preset.xml
deleted file mode 100644
index e8cfb9420..000000000
--- a/twidere/src/main/res/layout/gallery_item_color_picker_preset.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/twidere/src/main/res/values/colors.xml b/twidere/src/main/res/values/colors.xml
index 177665a76..077d8869b 100644
--- a/twidere/src/main/res/values/colors.xml
+++ b/twidere/src/main/res/values/colors.xml
@@ -31,5 +31,6 @@
#1a1a1a
#fafafa
#212121
+ #A0000000
\ No newline at end of file
diff --git a/twidere/src/main/res/values/strings.xml b/twidere/src/main/res/values/strings.xml
index d8498de33..c6a375331 100644
--- a/twidere/src/main/res/values/strings.xml
+++ b/twidere/src/main/res/values/strings.xml
@@ -154,10 +154,7 @@
Reported this user for spam.
Reported these users for spam.
Filename
- File exists, overwrite?
- Save as
Please wait.
- File saved to %s .
Saved to gallery.
Proxy
HTTP Proxy
@@ -229,9 +226,6 @@
Tabs
Add tab
Edit tab
- Move up
- Move down
- You have unsaved changes, press BACK again to discard.
Found invalid settings.
Icon
Pick file
@@ -250,7 +244,6 @@
Image uploader not found, maybe it was uninstalled.
Tweet format with image
\"[LINK]\" = Image link\n\"[TEXT]\" = Tweet content\n(Extension only)
- Tweet shortener
Tweet shortener
None (Abort sending)
Tweet too long.
@@ -262,15 +255,11 @@
Show absolute time in tweets
User mentions
Dual Pane Layout
- Landscape
- Portrait
Hit \"Enter\" to Send
Send tweet when hit \"Enter\".
- Tweet not sent or saved yet.
Discard
1 item selected
%d items selected
- View
Custom host mapping
Host mapping like /etc/hosts, but does not require any additional permissions.
Host
@@ -308,8 +297,6 @@
Pending follow requests
Send follow request
Follow request sent
- Separate retweet action
- Show both retweet and quote action in tweet menu
Tweet
Preview
Connection timeout