mirror of
https://github.com/TwidereProject/Twidere-Android
synced 2025-02-17 04:00:48 +01:00
improved media preview
This commit is contained in:
parent
59e1d67e01
commit
582236cebb
@ -140,6 +140,7 @@ public interface TwidereConstants extends SharedPreferenceConstants, IntentConst
|
||||
String QUERY_PARAM_TIMESTAMP = "timestamp";
|
||||
String QUERY_PARAM_FROM_NOTIFICATION = "from_notification";
|
||||
String QUERY_PARAM_NOTIFICATION_TYPE = "notification_type";
|
||||
String QUERY_PARAM_PREVIEW = "preview";
|
||||
|
||||
String DEFAULT_PROTOCOL = PROTOCOL_HTTPS;
|
||||
|
||||
@ -257,4 +258,5 @@ public interface TwidereConstants extends SharedPreferenceConstants, IntentConst
|
||||
|
||||
String USER_TYPE_TWITTER_COM = "twitter.com";
|
||||
String USER_TYPE_FANFOU_COM = "fanfou.com";
|
||||
|
||||
}
|
||||
|
@ -146,8 +146,8 @@ dependencies {
|
||||
compile 'com.lnikkila:extendedtouchview:0.1.0'
|
||||
compile 'com.google.dagger:dagger:2.1'
|
||||
compile 'org.attoparser:attoparser:1.4.0.RELEASE'
|
||||
compile 'com.github.mariotaku.MediaViewerLibrary:base:0.9.16'
|
||||
compile 'com.github.mariotaku.MediaViewerLibrary:subsample-image-view:0.9.16'
|
||||
compile 'com.github.mariotaku.MediaViewerLibrary:base:0.9.17-SNAPSHOT'
|
||||
compile 'com.github.mariotaku.MediaViewerLibrary:subsample-image-view:0.9.17-SNAPSHOT'
|
||||
compile 'com.github.mariotaku.SQLiteQB:library:0.9.6'
|
||||
compile 'com.github.mariotaku.ObjectCursor:core:0.9.7'
|
||||
compile 'com.github.mariotaku:MultiValueSwitch:0.9.4'
|
||||
|
@ -61,7 +61,7 @@ import com.afollestad.appthemeengine.customizers.ATEToolbarCustomizer;
|
||||
import com.commonsware.cwac.layouts.AspectLockedFrameLayout;
|
||||
import com.davemorrissey.labs.subscaleview.ImageSource;
|
||||
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
|
||||
import com.davemorrissey.labs.subscaleview.decoder.ImageDecoder;
|
||||
import com.davemorrissey.labs.subscaleview.decoder.SkiaImageDecoder;
|
||||
import com.sprylab.android.widget.TextureVideoView;
|
||||
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
@ -88,6 +88,7 @@ import org.mariotaku.twidere.util.IntentUtils;
|
||||
import org.mariotaku.twidere.util.MenuUtils;
|
||||
import org.mariotaku.twidere.util.PermissionUtils;
|
||||
import org.mariotaku.twidere.util.TwidereMathUtils;
|
||||
import org.mariotaku.twidere.util.UriUtils;
|
||||
import org.mariotaku.twidere.util.Utils;
|
||||
import org.mariotaku.twidere.util.dagger.GeneralComponentHelper;
|
||||
import org.mariotaku.twidere.util.media.MediaExtra;
|
||||
@ -637,19 +638,20 @@ public final class MediaViewerActivity extends BaseActivity implements Constants
|
||||
@Override
|
||||
protected ImageSource getImageSource(@NonNull CacheDownloadLoader.Result data) {
|
||||
assert data.cacheUri != null;
|
||||
if (data instanceof SizedResult) {
|
||||
final ImageSource uri = ImageSource.uri(data.cacheUri);
|
||||
uri.dimensions(((SizedResult) data).getWidth(), ((SizedResult) data).getHeight());
|
||||
return uri;
|
||||
if (!(data instanceof SizedResult)) {
|
||||
return super.getImageSource(data);
|
||||
}
|
||||
return super.getImageSource(data);
|
||||
final ImageSource imageSource = ImageSource.uri(data.cacheUri);
|
||||
imageSource.tilingEnabled();
|
||||
imageSource.dimensions(((SizedResult) data).getWidth(), ((SizedResult) data).getHeight());
|
||||
return imageSource;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ImageSource getPreviewImageSource(@NonNull CacheDownloadLoader.Result data) {
|
||||
if (!(data instanceof SizedResult)) return null;
|
||||
assert data.cacheUri != null;
|
||||
return ImageSource.uri(data.cacheUri);
|
||||
return ImageSource.uri(UriUtils.appendQueryParameters(data.cacheUri, QUERY_PARAM_PREVIEW, true));
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@ -741,21 +743,26 @@ public final class MediaViewerActivity extends BaseActivity implements Constants
|
||||
|
||||
}
|
||||
|
||||
public static class PreviewBitmapDecoder implements ImageDecoder {
|
||||
public static class PreviewBitmapDecoder extends SkiaImageDecoder {
|
||||
@Override
|
||||
public Bitmap decode(Context context, Uri uri) throws Exception {
|
||||
BitmapFactory.Options o = new BitmapFactory.Options();
|
||||
o.inJustDecodeBounds = true;
|
||||
o.inPreferredConfig = Bitmap.Config.RGB_565;
|
||||
final ContentResolver cr = context.getContentResolver();
|
||||
decodeBitmap(cr, uri, o);
|
||||
final DisplayMetrics dm = context.getResources().getDisplayMetrics();
|
||||
final int targetSize = Math.min(1024, Math.max(dm.widthPixels, dm.heightPixels));
|
||||
o.inSampleSize = TwidereMathUtils.nextPowerOf2(Math.max(1, Math.min(o.outHeight, o.outWidth) / targetSize));
|
||||
o.inJustDecodeBounds = false;
|
||||
final Bitmap bitmap = decodeBitmap(cr, uri, o);
|
||||
if (bitmap == null) throw new IOException();
|
||||
return bitmap;
|
||||
if (AUTHORITY_TWIDERE_CACHE.equals(uri.getAuthority())
|
||||
&& uri.getBooleanQueryParameter(QUERY_PARAM_PREVIEW, false)) {
|
||||
BitmapFactory.Options o = new BitmapFactory.Options();
|
||||
o.inJustDecodeBounds = true;
|
||||
o.inPreferredConfig = Bitmap.Config.RGB_565;
|
||||
final ContentResolver cr = context.getContentResolver();
|
||||
decodeBitmap(cr, uri, o);
|
||||
final DisplayMetrics dm = context.getResources().getDisplayMetrics();
|
||||
final int targetSize = Math.min(1024, Math.max(dm.widthPixels, dm.heightPixels));
|
||||
o.inSampleSize = TwidereMathUtils.nextPowerOf2((int) Math.max(1,
|
||||
Math.ceil(Math.min(o.outHeight, o.outWidth) / (float) targetSize)));
|
||||
o.inJustDecodeBounds = false;
|
||||
final Bitmap bitmap = decodeBitmap(cr, uri, o);
|
||||
if (bitmap == null) throw new IOException();
|
||||
return bitmap;
|
||||
}
|
||||
return super.decode(context, uri);
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user