added status view inside media viewer
improved media share
This commit is contained in:
parent
40a2e9a5b7
commit
0961ba2d44
|
@ -140,6 +140,7 @@ public interface IntentConstants {
|
|||
public static final String EXTRA_IDS = "ids";
|
||||
public static final String EXTRA_IS_SHARE = "is_share";
|
||||
public static final String EXTRA_STATUS = "status";
|
||||
public static final String EXTRA_MESSAGE = "message";
|
||||
public static final String EXTRA_STATUS_JSON = "status_json";
|
||||
public static final String EXTRA_STATUSES = "statuses";
|
||||
public static final String EXTRA_DRAFT = "draft";
|
||||
|
|
|
@ -485,8 +485,20 @@ public class ComposeActivity extends ThemedActionBarActivity implements TextWatc
|
|||
|
||||
@Override
|
||||
public void onLocationChanged(final Location location) {
|
||||
if (mRecentLocation == null) {
|
||||
mRecentLocation = location != null ? new ParcelableLocation(location) : null;
|
||||
if (location != null) {
|
||||
mRecentLocation = new ParcelableLocation(location);
|
||||
} else {
|
||||
mRecentLocation = null;
|
||||
}
|
||||
updateLocationText();
|
||||
}
|
||||
|
||||
private void updateLocationText() {
|
||||
if (mRecentLocation != null) {
|
||||
mLocationText.setText(String.format("%.3f, %.3f", mRecentLocation.latitude,
|
||||
mRecentLocation.longitude));
|
||||
} else {
|
||||
mLocationText.setText(R.string.unknown_location);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1094,19 +1106,24 @@ public class ComposeActivity extends ThemedActionBarActivity implements TextWatc
|
|||
mEditText.setError(getString(R.string.error_message_no_content));
|
||||
return;
|
||||
}
|
||||
final boolean attach_location = mPreferences.getBoolean(KEY_ATTACH_LOCATION, false);
|
||||
if (mRecentLocation == null && attach_location) {
|
||||
final boolean attachLocation = mPreferences.getBoolean(KEY_ATTACH_LOCATION, false);
|
||||
if (mRecentLocation == null && attachLocation) {
|
||||
final Location location;
|
||||
if (mLocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
|
||||
location = mLocationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
|
||||
} else {
|
||||
location = null;
|
||||
}
|
||||
mRecentLocation = location != null ? new ParcelableLocation(location) : null;
|
||||
if (location != null) {
|
||||
mRecentLocation = new ParcelableLocation(location);
|
||||
} else {
|
||||
mRecentLocation = null;
|
||||
}
|
||||
updateLocationText();
|
||||
}
|
||||
final long[] accountIds = mAccountsAdapter.getSelectedAccountIds();
|
||||
final boolean isQuote = INTENT_ACTION_QUOTE.equals(getIntent().getAction());
|
||||
final ParcelableLocation statusLocation = attach_location ? mRecentLocation : null;
|
||||
final ParcelableLocation statusLocation = attachLocation ? mRecentLocation : null;
|
||||
final boolean linkToQuotedTweet = mPreferences.getBoolean(KEY_LINK_TO_QUOTED_TWEET, true);
|
||||
final long inReplyToStatusId = !isQuote || linkToQuotedTweet ? mInReplyToStatusId : -1;
|
||||
final boolean isPossiblySensitive = hasMedia && mIsPossiblySensitive;
|
||||
|
|
|
@ -23,13 +23,13 @@ import android.os.AsyncTask.Status;
|
|||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentTransaction;
|
||||
import android.support.v4.app.LoaderManager.LoaderCallbacks;
|
||||
import android.support.v4.content.Loader;
|
||||
import android.support.v4.view.MenuItemCompat;
|
||||
import android.support.v4.view.ViewPager;
|
||||
import android.support.v4.view.ViewPager.OnPageChangeListener;
|
||||
import android.support.v7.app.ActionBar;
|
||||
import android.support.v7.app.ActionBar.OnMenuVisibilityListener;
|
||||
import android.support.v7.widget.ShareActionProvider;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
|
@ -47,12 +47,14 @@ import com.diegocarloslima.byakugallery.lib.TileBitmapDrawable.OnInitializeListe
|
|||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.mariotaku.twidere.Constants;
|
||||
import org.mariotaku.twidere.R;
|
||||
import org.mariotaku.twidere.activity.support.ComposeActivity.ViewStatusDialogFragment;
|
||||
import org.mariotaku.twidere.adapter.support.SupportFixedFragmentStatePagerAdapter;
|
||||
import org.mariotaku.twidere.fragment.support.BaseSupportFragment;
|
||||
import org.mariotaku.twidere.loader.support.TileImageLoader;
|
||||
import org.mariotaku.twidere.loader.support.TileImageLoader.DownloadListener;
|
||||
import org.mariotaku.twidere.loader.support.TileImageLoader.Result;
|
||||
import org.mariotaku.twidere.model.ParcelableMedia;
|
||||
import org.mariotaku.twidere.model.ParcelableStatus;
|
||||
import org.mariotaku.twidere.util.SaveImageTask;
|
||||
import org.mariotaku.twidere.util.ThemeUtils;
|
||||
import org.mariotaku.twidere.util.Utils;
|
||||
|
@ -71,6 +73,8 @@ public final class MediaViewerActivity extends ThemedActionBarActivity implement
|
|||
private ViewPager mViewPager;
|
||||
private MediaPagerAdapter mAdapter;
|
||||
private ActionBar mActionBar;
|
||||
private View mMediaStatusContainer;
|
||||
|
||||
|
||||
@Override
|
||||
public int getThemeColor() {
|
||||
|
@ -112,6 +116,7 @@ public final class MediaViewerActivity extends ThemedActionBarActivity implement
|
|||
public void onSupportContentChanged() {
|
||||
super.onSupportContentChanged();
|
||||
mViewPager = (ViewPager) findViewById(R.id.view_pager);
|
||||
mMediaStatusContainer = findViewById(R.id.media_status_container);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -133,6 +138,18 @@ public final class MediaViewerActivity extends ThemedActionBarActivity implement
|
|||
if (currentIndex != -1) {
|
||||
mViewPager.setCurrentItem(currentIndex, false);
|
||||
}
|
||||
if (intent.hasExtra(EXTRA_STATUS)) {
|
||||
mMediaStatusContainer.setVisibility(View.VISIBLE);
|
||||
final FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
|
||||
final Fragment f = new ViewStatusDialogFragment();
|
||||
final Bundle args = new Bundle();
|
||||
args.putParcelable(EXTRA_STATUS, intent.getParcelableExtra(EXTRA_STATUS));
|
||||
f.setArguments(args);
|
||||
ft.replace(R.id.media_status, f);
|
||||
ft.commit();
|
||||
} else {
|
||||
mMediaStatusContainer.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isBarShowing() {
|
||||
|
@ -148,13 +165,17 @@ public final class MediaViewerActivity extends ThemedActionBarActivity implement
|
|||
mActionBar.hide();
|
||||
}
|
||||
|
||||
findViewById(R.id.media_status).setVisibility(visible ? View.VISIBLE : View.GONE);
|
||||
mMediaStatusContainer.setVisibility(visible ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
|
||||
private void toggleBar() {
|
||||
setBarVisibility(!isBarShowing());
|
||||
}
|
||||
|
||||
public boolean hasStatus() {
|
||||
return getIntent().hasExtra(EXTRA_STATUS);
|
||||
}
|
||||
|
||||
public static final class ImagePageFragment extends BaseSupportFragment
|
||||
implements DownloadListener, LoaderCallbacks<Result>, OnLayoutChangeListener, OnClickListener, ZoomListener {
|
||||
|
||||
|
@ -266,6 +287,12 @@ public final class MediaViewerActivity extends ThemedActionBarActivity implement
|
|||
final Uri fileUri = Uri.fromFile(file);
|
||||
intent.setDataAndType(fileUri, Utils.getImageMimeType(file));
|
||||
intent.putExtra(Intent.EXTRA_STREAM, fileUri);
|
||||
final MediaViewerActivity activity = (MediaViewerActivity) getActivity();
|
||||
if (activity.hasStatus()) {
|
||||
final ParcelableStatus status = activity.getStatus();
|
||||
intent.putExtra(Intent.EXTRA_TEXT, Utils.getStatusShareText(activity, status));
|
||||
intent.putExtra(Intent.EXTRA_SUBJECT, Utils.getStatusShareSubject(activity, status));
|
||||
}
|
||||
shareProvider.setShareIntent(intent);
|
||||
}
|
||||
}
|
||||
|
@ -408,6 +435,10 @@ public final class MediaViewerActivity extends ThemedActionBarActivity implement
|
|||
}
|
||||
}
|
||||
|
||||
private ParcelableStatus getStatus() {
|
||||
return getIntent().getParcelableExtra(EXTRA_STATUS);
|
||||
}
|
||||
|
||||
private static class MediaPagerAdapter extends SupportFixedFragmentStatePagerAdapter {
|
||||
|
||||
private final MediaViewerActivity mActivity;
|
||||
|
|
|
@ -172,7 +172,7 @@ public class MessageConversationAdapter extends Adapter<ViewHolder>
|
|||
case R.id.media_preview: {
|
||||
final ParcelableDirectMessage message = getDirectMessage(position);
|
||||
if (message == null || message.media == null) return;
|
||||
openMedia(mContext, message.account_id, false, null, message.media);
|
||||
openMedia(mContext, message.account_id, false, message, null, message.media);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@ import android.support.annotation.NonNull;
|
|||
|
||||
import org.mariotaku.twidere.R;
|
||||
import org.mariotaku.twidere.model.ParcelableMedia;
|
||||
import org.mariotaku.twidere.model.ParcelableStatus;
|
||||
import org.mariotaku.twidere.util.ThemeUtils;
|
||||
import org.mariotaku.twidere.util.Utils;
|
||||
|
||||
|
@ -45,9 +46,10 @@ public class SensitiveContentWarningDialogFragment extends BaseSupportDialogFrag
|
|||
if (args == null || context == null) return;
|
||||
final long accountId = args.getLong(EXTRA_ACCOUNT_ID, -1);
|
||||
final ParcelableMedia current = args.getParcelable(EXTRA_CURRENT_MEDIA);
|
||||
final ParcelableStatus status = args.getParcelable(EXTRA_STATUS);
|
||||
final ParcelableMedia[] media = Utils.newParcelableArray(args.getParcelableArray(EXTRA_MEDIA),
|
||||
ParcelableMedia.CREATOR);
|
||||
openMediaDirectly(context, accountId, current, media);
|
||||
openMediaDirectly(context, accountId, status, current, media);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -288,7 +288,7 @@ public class StatusFragment extends BaseSupportFragment
|
|||
public void onMediaClick(View view, ParcelableMedia media, long accountId) {
|
||||
final ParcelableStatus status = mStatusAdapter.getStatus();
|
||||
if (status == null) return;
|
||||
Utils.openMediaDirectly(getActivity(), accountId, media, status.media);
|
||||
Utils.openMediaDirectly(getActivity(), accountId, status, media, status.media);
|
||||
//spice
|
||||
SpiceProfilingUtil.log(getActivity(),
|
||||
status.id + ",Clicked," + accountId + "," + status.user_id + "," + status.text_plain.length() + "," + media.media_url + "," + TypeMapingUtil.getMediaType(media.type) + "," + status.timestamp);
|
||||
|
|
|
@ -35,7 +35,7 @@ public class StatusLinkClickHandler extends OnLinkClickHandler {
|
|||
protected void openMedia(long account_id, boolean sensitive, String link, int start, int end) {
|
||||
final ParcelableStatus status = mStatus;
|
||||
final ParcelableMedia current = findByLink(status.media, link);
|
||||
Utils.openMedia(context, account_id, sensitive, current, status.media);
|
||||
Utils.openMedia(context, account_id, sensitive, status, current, status.media);
|
||||
}
|
||||
|
||||
private ParcelableMedia findByLink(ParcelableMedia[] media, String link) {
|
||||
|
|
|
@ -1094,19 +1094,25 @@ public final class Utils implements Constants, TwitterConstants {
|
|||
public static Intent createStatusShareIntent(final Context context, final ParcelableStatus status) {
|
||||
final Intent intent = new Intent(Intent.ACTION_SEND);
|
||||
intent.setType("text/plain");
|
||||
final String timeString = formatToLongTimeString(context, status.timestamp);
|
||||
final String link = String.format(Locale.ROOT, "https://twitter.com/%s/status/%d",
|
||||
status.user_screen_name, status.id);
|
||||
final String text = context.getString(R.string.status_share_text_format_with_link,
|
||||
status.text_plain, link);
|
||||
final String subject = context.getString(R.string.status_share_subject_format_with_time,
|
||||
status.user_name, status.user_screen_name, timeString);
|
||||
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
|
||||
intent.putExtra(Intent.EXTRA_TEXT, text);
|
||||
intent.putExtra(Intent.EXTRA_SUBJECT, getStatusShareText(context, status));
|
||||
intent.putExtra(Intent.EXTRA_TEXT, getStatusShareSubject(context, status));
|
||||
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||
return intent;
|
||||
}
|
||||
|
||||
public static String getStatusShareText(final Context context, final ParcelableStatus status) {
|
||||
final String link = String.format(Locale.ROOT, "https://twitter.com/%s/status/%d",
|
||||
status.user_screen_name, status.id);
|
||||
return context.getString(R.string.status_share_text_format_with_link,
|
||||
status.text_plain, link);
|
||||
}
|
||||
|
||||
public static String getStatusShareSubject(final Context context, ParcelableStatus status) {
|
||||
final String timeString = formatToLongTimeString(context, status.timestamp);
|
||||
return context.getString(R.string.status_share_subject_format_with_time,
|
||||
status.user_name, status.user_screen_name, timeString);
|
||||
}
|
||||
|
||||
public static Intent createTakePhotoIntent(final Uri uri) {
|
||||
final Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
|
||||
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
|
||||
|
@ -2925,6 +2931,24 @@ public final class Utils implements Constants, TwitterConstants {
|
|||
}
|
||||
|
||||
public static void openMedia(final Context context, final long accountId, final boolean isPossiblySensitive,
|
||||
final ParcelableDirectMessage message, final ParcelableMedia current,
|
||||
final ParcelableMedia[] media) {
|
||||
openMedia(context, accountId, isPossiblySensitive, null, message, current, media);
|
||||
}
|
||||
|
||||
public static void openMedia(final Context context, final long accountId, final boolean isPossiblySensitive,
|
||||
final ParcelableStatus status, final ParcelableMedia current,
|
||||
final ParcelableMedia[] media) {
|
||||
openMedia(context, accountId, isPossiblySensitive, status, null, current, media);
|
||||
}
|
||||
|
||||
public static void openMedia(final Context context, final long accountId, final boolean isPossiblySensitive,
|
||||
final ParcelableMedia current, final ParcelableMedia[] media) {
|
||||
openMedia(context, accountId, isPossiblySensitive, null, null, current, media);
|
||||
}
|
||||
|
||||
public static void openMedia(final Context context, final long accountId, final boolean isPossiblySensitive,
|
||||
final ParcelableStatus status, final ParcelableDirectMessage message,
|
||||
final ParcelableMedia current, final ParcelableMedia[] media) {
|
||||
if (context == null || media == null) return;
|
||||
final SharedPreferences prefs = context.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
|
||||
|
@ -2936,11 +2960,13 @@ public final class Utils implements Constants, TwitterConstants {
|
|||
final Bundle args = new Bundle();
|
||||
args.putLong(EXTRA_ACCOUNT_ID, accountId);
|
||||
args.putParcelable(EXTRA_CURRENT_MEDIA, current);
|
||||
args.putParcelable(EXTRA_STATUS, status);
|
||||
args.putParcelable(EXTRA_MESSAGE, message);
|
||||
args.putParcelableArray(EXTRA_MEDIA, media);
|
||||
fragment.setArguments(args);
|
||||
fragment.show(fm, "sensitive_content_warning");
|
||||
} else {
|
||||
openMediaDirectly(context, accountId, current, media);
|
||||
openMediaDirectly(context, accountId, status, message, current, media);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2952,13 +2978,28 @@ public final class Utils implements Constants, TwitterConstants {
|
|||
return result;
|
||||
}
|
||||
|
||||
|
||||
public static void openMediaDirectly(final Context context, final long accountId,
|
||||
final ParcelableStatus status, final ParcelableMedia current,
|
||||
final ParcelableMedia[] media) {
|
||||
openMediaDirectly(context, accountId, status, null, current, media);
|
||||
}
|
||||
|
||||
public static void openMediaDirectly(final Context context, final long accountId,
|
||||
final ParcelableDirectMessage message, final ParcelableMedia current,
|
||||
final ParcelableMedia[] media) {
|
||||
openMediaDirectly(context, accountId, null, message, current, media);
|
||||
}
|
||||
|
||||
public static void openMediaDirectly(final Context context, final long accountId,
|
||||
final ParcelableStatus status, final ParcelableDirectMessage message,
|
||||
final ParcelableMedia current, final ParcelableMedia[] media) {
|
||||
if (context == null || media == null) return;
|
||||
final Intent intent = new Intent(INTENT_ACTION_VIEW_MEDIA);
|
||||
intent.putExtra(EXTRA_ACCOUNT_ID, accountId);
|
||||
intent.putExtra(EXTRA_CURRENT_MEDIA, current);
|
||||
intent.putExtra(EXTRA_MEDIA, media);
|
||||
intent.putExtra(EXTRA_STATUS, status);
|
||||
intent.setClass(context, MediaViewerActivity.class);
|
||||
context.startActivity(intent);
|
||||
}
|
||||
|
|
|
@ -37,6 +37,9 @@ import twitter4j.TranslationResult;
|
|||
import static org.mariotaku.twidere.util.Utils.getUserTypeIconRes;
|
||||
|
||||
/**
|
||||
*
|
||||
* IDE gives me warning if I don't change default comment, so I write this XD
|
||||
*
|
||||
* Created by mariotaku on 14/11/19.
|
||||
*/
|
||||
public class StatusViewHolder extends RecyclerView.ViewHolder implements OnClickListener {
|
||||
|
|
|
@ -1,23 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2013 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.
|
||||
-->
|
||||
|
||||
<android.support.v7.widget.ActionMenuView
|
||||
android:id="@+id/menu_bar"
|
||||
style="?android:actionBarSplitStyle"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?android:actionBarSize"/>
|
|
@ -22,19 +22,31 @@
|
|||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
tools:menu="menu_media_viewer_image_page"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
android:animateLayoutChanges="true"
|
||||
tools:menu="menu_media_viewer_image_page">
|
||||
|
||||
<org.mariotaku.twidere.view.MediaViewPager
|
||||
android:id="@+id/view_pager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/media_status"
|
||||
android:layout_gravity="bottom"
|
||||
<LinearLayout
|
||||
android:id="@+id/media_status_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="128dp"
|
||||
android:background="#f00"/>
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom"
|
||||
android:orientation="vertical">
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/element_spacing_small"
|
||||
android:background="@drawable/shadow_top"/>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/media_status"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="#80000000"/>
|
||||
</LinearLayout>
|
||||
</FrameLayout>
|
|
@ -30,7 +30,8 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:background="?android:selectableItemBackground"
|
||||
android:orientation="vertical"
|
||||
android:paddingTop="@dimen/element_spacing_small">
|
||||
android:paddingTop="@dimen/element_spacing_small"
|
||||
app:ignorePadding="true">
|
||||
|
||||
<Space
|
||||
android:id="@+id/reply_retweet_space"
|
||||
|
@ -198,11 +199,11 @@
|
|||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_below="@+id/text"
|
||||
android:layout_alignLeft="@+id/profile_container"
|
||||
android:id="@+id/action_buttons"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignLeft="@+id/profile_container"
|
||||
android:layout_below="@+id/text"
|
||||
android:gravity="center_vertical|left"
|
||||
android:orientation="horizontal">
|
||||
|
||||
|
@ -247,13 +248,13 @@
|
|||
<org.mariotaku.twidere.view.ActionIconView
|
||||
android:id="@+id/extra_type"
|
||||
android:layout_width="@dimen/element_size_small"
|
||||
android:layout_below="@+id/text"
|
||||
android:layout_height="@dimen/element_size_small"
|
||||
android:layout_gravity="center|right"
|
||||
android:layout_marginLeft="@dimen/element_spacing_normal"
|
||||
android:layout_alignBottom="@+id/action_buttons"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignTop="@+id/action_buttons"
|
||||
android:layout_alignBottom="@+id/action_buttons"
|
||||
android:layout_below="@+id/text"
|
||||
android:layout_gravity="center|right"
|
||||
android:layout_marginLeft="@dimen/element_spacing_normal"
|
||||
android:layout_marginRight="@dimen/element_spacing_normal"
|
||||
android:layout_weight="0"
|
||||
android:color="?android:textColorSecondary"
|
||||
|
|
|
@ -1,42 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ Twidere - Twitter client for Android
|
||||
~
|
||||
~ Copyright (C) 2012-2015 Mariotaku Lee <mariotaku.lee@gmail.com>
|
||||
~
|
||||
~ This program is free software: you can redistribute it and/or modify
|
||||
~ it under the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation, either version 3 of the License, or
|
||||
~ (at your option) any later version.
|
||||
~
|
||||
~ This program is distributed in the hope that it will be useful,
|
||||
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
~ GNU General Public License for more details.
|
||||
~
|
||||
~ You should have received a copy of the GNU General Public License
|
||||
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<merge xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<com.diegocarloslima.byakugallery.lib.TouchImageView
|
||||
android:id="@+id/image_viewer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/progress"
|
||||
style="?android:attr/progressBarStyleHorizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_margin="32dp"/>
|
||||
|
||||
<org.mariotaku.twidere.view.ActionBarSplitThemedContainer
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout="@layout/activity_image_viewer_bottombar"/>
|
||||
|
||||
</merge>
|
|
@ -725,5 +725,6 @@
|
|||
<string name="usage_statistics">Usage statistics</string>
|
||||
<string name="research_ucdavis_earlybird">UCDavis Earlybird</string>
|
||||
<string name="research_tsinghua_spice">Tsinghua Spice</string>
|
||||
<string name="unknown_location">Unknown location</string>
|
||||
|
||||
</resources>
|
Loading…
Reference in New Issue