diff --git a/CHANGELOG.md b/CHANGELOG.md index 18192daf0..20d1eb2ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,18 @@ Changelog ========== +Version 6.5.1 *(2019-02-11)* +---------------------------- + + * Fixed a glitch with image panning + * Added a couple stability improvements + +Version 6.5.0 *(2019-02-07)* +---------------------------- + + * Allow rotating fullscreen images with gestures, if "Allow deep zooming images" option is enabled + * Zoom out videos and gifs after device rotation + Version 6.4.1 *(2019-01-29)* ---------------------------- diff --git a/app/build.gradle b/app/build.gradle index 767d127be..36a42465f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId "com.simplemobiletools.gallery.pro" minSdkVersion 21 targetSdkVersion 28 - versionCode 226 - versionName "6.4.1" + versionCode 229 + versionName "6.5.1" multiDexEnabled true setProperty("archivesBaseName", "gallery") } @@ -61,7 +61,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.7.5' + implementation 'com.simplemobiletools:commons:5.7.7' implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0' implementation 'androidx.multidex:multidex:2.0.1' implementation 'it.sephiroth.android.exif:library:1.0.1' @@ -74,8 +74,8 @@ dependencies { implementation 'info.androidhive:imagefilters:1.0.7' implementation 'com.squareup.picasso:picasso:2.71828' implementation 'com.caverock:androidsvg-aar:1.3' - implementation 'com.github.tibbi:gestureviews:985ba285fb' - implementation 'com.github.tibbi:subsampling-scale-image-view:3ccd2f9c2b' + implementation 'com.github.tibbi:gestureviews:bd0a8e67a1' + implementation 'com.github.tibbi:subsampling-scale-image-view:6c14987053' kapt 'com.github.bumptech.glide:compiler:4.8.0' // keep it here too, not just in Commons, else loading SVGs wont work kapt 'androidx.room:room-compiler:2.0.0' diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SettingsActivity.kt index 169528978..fd581e8ef 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/SettingsActivity.kt @@ -70,7 +70,6 @@ class SettingsActivity : SimpleActivity() { setupEnablePullToRefresh() setupAllowZoomingImages() setupShowHighestQuality() - setupOneFingerZoom() setupAllowOneToOneZoom() setupAllowInstantChange() setupShowExtendedDetails() @@ -402,7 +401,6 @@ class SettingsActivity : SimpleActivity() { } private fun updateDeepZoomToggleButtons() { - settings_one_finger_zoom_holder.beVisibleIf(config.allowZoomingImages) settings_show_highest_quality_holder.beVisibleIf(config.allowZoomingImages) settings_allow_one_to_one_zoom_holder.beVisibleIf(config.allowZoomingImages) } @@ -415,14 +413,6 @@ class SettingsActivity : SimpleActivity() { } } - private fun setupOneFingerZoom() { - settings_one_finger_zoom.isChecked = config.oneFingerZoom - settings_one_finger_zoom_holder.setOnClickListener { - settings_one_finger_zoom.toggle() - config.oneFingerZoom = settings_one_finger_zoom.isChecked - } - } - private fun setupAllowOneToOneZoom() { settings_allow_one_to_one_zoom.isChecked = config.allowOneToOneZoom settings_allow_one_to_one_zoom_holder.setOnClickListener { @@ -612,7 +602,6 @@ class SettingsActivity : SimpleActivity() { put(SCREEN_ROTATION, config.screenRotation) put(ALLOW_ZOOMING_IMAGES, config.allowZoomingImages) put(SHOW_HIGHEST_QUALITY, config.showHighestQuality) - put(ONE_FINGER_ZOOM, config.oneFingerZoom) put(ALLOW_ONE_TO_ONE_ZOOM, config.allowOneToOneZoom) put(SHOW_EXTENDED_DETAILS, config.showExtendedDetails) put(HIDE_EXTENDED_DETAILS, config.hideExtendedDetails) @@ -733,7 +722,6 @@ class SettingsActivity : SimpleActivity() { SCREEN_ROTATION -> config.screenRotation = value.toInt() ALLOW_ZOOMING_IMAGES -> config.allowZoomingImages = value.toBoolean() SHOW_HIGHEST_QUALITY -> config.showHighestQuality = value.toBoolean() - ONE_FINGER_ZOOM -> config.oneFingerZoom = value.toBoolean() ALLOW_ONE_TO_ONE_ZOOM -> config.allowOneToOneZoom = value.toBoolean() SHOW_EXTENDED_DETAILS -> config.showExtendedDetails = value.toBoolean() HIDE_EXTENDED_DETAILS -> config.hideExtendedDetails = value.toBoolean() diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoPlayerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoPlayerActivity.kt index 7fc2138c1..4578e906e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoPlayerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/VideoPlayerActivity.kt @@ -132,6 +132,9 @@ open class VideoPlayerActivity : SimpleActivity(), SeekBar.OnSeekBarChangeListen super.onConfigurationChanged(newConfig) setVideoSize() initTimeHolder() + video_surface_frame.onGlobalLayout { + video_surface_frame.controller.resetState() + } } private fun setupOrientation() { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt index 681bca548..0ea59f08f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/activities/ViewPagerActivity.kt @@ -54,7 +54,6 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View private var mPos = -1 private var mShowAll = false private var mIsSlideshowActive = false - private var mRotationDegrees = 0 private var mPrevHashcode = 0 private var mSlideshowHandler = Handler() @@ -142,7 +141,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View currentMedium.isFavorite = mFavoritePaths.contains(currentMedium.path) val visibleBottomActions = if (config.bottomActions) config.visibleBottomActions else 0 - getCurrentPhotoFragment()?.mCurrentRotationDegrees = mRotationDegrees + val rotationDegrees = getCurrentPhotoFragment()?.mCurrentRotationDegrees ?: 0 menu.apply { findItem(R.id.menu_show_on_map).isVisible = visibleBottomActions and BOTTOM_ACTION_SHOW_ON_MAP == 0 findItem(R.id.menu_slideshow).isVisible = visibleBottomActions and BOTTOM_ACTION_SLIDESHOW == 0 @@ -154,16 +153,16 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View findItem(R.id.menu_rotate).isVisible = currentMedium.isImage() && visibleBottomActions and BOTTOM_ACTION_ROTATE == 0 findItem(R.id.menu_set_as).isVisible = visibleBottomActions and BOTTOM_ACTION_SET_AS == 0 findItem(R.id.menu_copy_to).isVisible = visibleBottomActions and BOTTOM_ACTION_COPY == 0 - findItem(R.id.menu_save_as).isVisible = mRotationDegrees != 0 + findItem(R.id.menu_save_as).isVisible = rotationDegrees != 0 findItem(R.id.menu_hide).isVisible = !currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin() findItem(R.id.menu_unhide).isVisible = currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin() findItem(R.id.menu_add_to_favorites).isVisible = !currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 findItem(R.id.menu_remove_from_favorites).isVisible = currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 findItem(R.id.menu_restore_file).isVisible = currentMedium.path.startsWith(recycleBinPath) - findItem(R.id.menu_change_orientation).isVisible = mRotationDegrees == 0 && visibleBottomActions and BOTTOM_ACTION_CHANGE_ORIENTATION == 0 + findItem(R.id.menu_change_orientation).isVisible = rotationDegrees == 0 && visibleBottomActions and BOTTOM_ACTION_CHANGE_ORIENTATION == 0 findItem(R.id.menu_change_orientation).icon = resources.getDrawable(getChangeOrientationIcon()) findItem(R.id.menu_rotate).setShowAsAction( - if (mRotationDegrees != 0) { + if (rotationDegrees != 0) { MenuItem.SHOW_AS_ACTION_ALWAYS } else { MenuItem.SHOW_AS_ACTION_IF_ROOM @@ -195,7 +194,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View R.id.menu_properties -> showProperties() R.id.menu_show_on_map -> showOnMap() R.id.menu_rotate_right -> rotateImage(90) - R.id.menu_rotate_left -> rotateImage(270) + R.id.menu_rotate_left -> rotateImage(-90) R.id.menu_rotate_one_eighty -> rotateImage(180) R.id.menu_add_to_favorites -> toggleFavorite() R.id.menu_remove_from_favorites -> toggleFavorite() @@ -563,8 +562,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View } private fun rotateBy(degrees: Int) { - mRotationDegrees = (mRotationDegrees + degrees) % 360 - getCurrentPhotoFragment()?.rotateImageViewBy(mRotationDegrees) + getCurrentPhotoFragment()?.rotateImageViewBy(degrees) supportInvalidateOptionsMenu() } @@ -592,9 +590,9 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View handleSAFDialog(it) { toast(R.string.saving) Thread { - saveRotatedImageToFile(currPath, it, mRotationDegrees, true) { + val photoFragment = getCurrentPhotoFragment() ?: return@Thread + saveRotatedImageToFile(currPath, it, photoFragment.mCurrentRotationDegrees, true) { toast(R.string.file_saved) - mRotationDegrees = 0 getCurrentPhotoFragment()?.mCurrentRotationDegrees = 0 invalidateOptionsMenu() } @@ -1075,7 +1073,6 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View if (mPos != position) { mPos = position updateActionbarTitle() - mRotationDegrees = 0 invalidateOptionsMenu() scheduleSwipe() } diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt index f92a5d01b..09a183cb9 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/MediaAdapter.kt @@ -448,7 +448,6 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList, callback: (() -> Unit)? = nu } fun BaseSimpleActivity.saveRotatedImageToFile(oldPath: String, newPath: String, degrees: Int, showToasts: Boolean, callback: () -> Unit) { + var newDegrees = degrees + if (newDegrees < 0) { + newDegrees += 360 + } + if (oldPath == newPath && oldPath.isJpg()) { - if (tryRotateByExif(oldPath, degrees, showToasts, callback)) { + if (tryRotateByExif(oldPath, newDegrees, showToasts, callback)) { return } } @@ -394,11 +399,11 @@ fun BaseSimpleActivity.saveRotatedImageToFile(oldPath: String, newPath: String, val oldLastModified = File(oldPath).lastModified() if (oldPath.isJpg()) { copyFile(oldPath, tmpPath) - saveExifRotation(ExifInterface(tmpPath), degrees) + saveExifRotation(ExifInterface(tmpPath), newDegrees) } else { val inputstream = getFileInputStreamSync(oldPath) val bitmap = BitmapFactory.decodeStream(inputstream) - saveFile(tmpPath, bitmap, it as FileOutputStream, degrees) + saveFile(tmpPath, bitmap, it as FileOutputStream, newDegrees) } if (getDoesFilePathExist(newPath)) { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/PhotoFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/PhotoFragment.kt index 05c6b244d..bb3c38d68 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/PhotoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/PhotoFragment.kt @@ -56,6 +56,7 @@ import java.util.* class PhotoFragment : ViewPagerFragment() { private val DEFAULT_DOUBLE_TAP_ZOOM = 2f private val ZOOMABLE_VIEW_LOAD_DELAY = 150L + private val SAME_ASPECT_RATIO_THRESHOLD = 0.01 // devices with good displays, but the rest of the hardware not good enough for them private val WEIRD_DEVICES = arrayListOf( @@ -70,7 +71,6 @@ class PhotoFragment : ViewPagerFragment() { private var mIsPanorama = false private var mIsSubsamplingVisible = false // checking view.visibility is unreliable, use an extra variable for it private var mImageOrientation = -1 - private var mOriginalSubsamplingScale = 0f private var mLoadZoomableViewHandler = Handler() private var mScreenWidth = 0 private var mScreenHeight = 0 @@ -80,7 +80,6 @@ class PhotoFragment : ViewPagerFragment() { private var mStoredHideExtendedDetails = false private var mStoredAllowDeepZoomableImages = false private var mStoredShowHighestQuality = false - private var mStoredAllowOneFingerZoom = false private var mStoredExtendedDetails = 0 private lateinit var mView: ViewGroup @@ -130,7 +129,7 @@ class PhotoFragment : ViewPagerFragment() { } subsampling_view.setOnTouchListener { v, event -> - if (subsampling_view.scale == mOriginalSubsamplingScale) { + if (subsampling_view.isZoomedOut()) { handleEvent(event) } false @@ -199,8 +198,7 @@ class PhotoFragment : ViewPagerFragment() { } if (mWasInit) { - if (config.allowZoomingImages != mStoredAllowDeepZoomableImages || config.showHighestQuality != mStoredShowHighestQuality || - config.oneFingerZoom != mStoredAllowOneFingerZoom) { + if (config.allowZoomingImages != mStoredAllowDeepZoomableImages || config.showHighestQuality != mStoredShowHighestQuality) { mIsSubsamplingVisible = false mView.subsampling_view.beGone() loadImage() @@ -244,6 +242,7 @@ class PhotoFragment : ViewPagerFragment() { mView.onGlobalLayout { measureScreen() Handler().postDelayed({ + mView.gif_view_frame.controller.resetState() loadGif() }, 50) } @@ -272,7 +271,6 @@ class PhotoFragment : ViewPagerFragment() { mStoredHideExtendedDetails = hideExtendedDetails mStoredAllowDeepZoomableImages = allowZoomingImages mStoredShowHighestQuality = showHighestQuality - mStoredAllowOneFingerZoom = oneFingerZoom mStoredExtendedDetails = extendedDetails } } @@ -355,15 +353,15 @@ class PhotoFragment : ViewPagerFragment() { .into(mView.gestures_view) } - private fun loadBitmap(degrees: Int = mCurrentRotationDegrees) { + private fun loadBitmap(addZoomableView: Boolean = true) { val options = RequestOptions() .signature(mMedium.path.getFileSignature()) .format(DecodeFormat.PREFER_ARGB_8888) .diskCacheStrategy(DiskCacheStrategy.RESOURCE) .fitCenter() - if (degrees != 0) { - options.transform(GlideRotateTransformation(degrees)) + if (mCurrentRotationDegrees != 0) { + options.transform(GlideRotateTransformation(mCurrentRotationDegrees)) options.diskCacheStrategy(DiskCacheStrategy.NONE) } @@ -373,13 +371,13 @@ class PhotoFragment : ViewPagerFragment() { .listener(object : RequestListener { override fun onLoadFailed(e: GlideException?, model: Any?, target: Target?, isFirstResource: Boolean): Boolean { if (activity != null) { - tryLoadingWithPicasso(degrees) + tryLoadingWithPicasso(addZoomableView) } return false } override fun onResourceReady(resource: Drawable?, model: Any?, target: Target?, dataSource: DataSource?, isFirstResource: Boolean): Boolean { - if (mIsFragmentVisible && degrees == 0) { + if (mIsFragmentVisible && addZoomableView) { scheduleZoomableView() } return false @@ -387,7 +385,7 @@ class PhotoFragment : ViewPagerFragment() { }).into(mView.gestures_view) } - private fun tryLoadingWithPicasso(degrees: Int = 0) { + private fun tryLoadingWithPicasso(addZoomableView: Boolean) { var pathToLoad = if (mMedium.path.startsWith("content://")) mMedium.path else "file://${mMedium.path}" pathToLoad = pathToLoad.replace("%", "%25").replace("#", "%23") @@ -398,16 +396,16 @@ class PhotoFragment : ViewPagerFragment() { .stableKey(mMedium.path.getFileKey()) .resize(mScreenWidth, mScreenHeight) - if (degrees != 0) { - picasso.rotate(degrees.toFloat()) + if (mCurrentRotationDegrees != 0) { + picasso.rotate(mCurrentRotationDegrees.toFloat()) } else { degreesForRotation(mImageOrientation).toFloat() } picasso.into(mView.gestures_view, object : Callback { override fun onSuccess() { - mView.gestures_view.controller.settings.isZoomEnabled = degrees != 0 || context?.config?.allowZoomingImages == false - if (mIsFragmentVisible && degrees == 0) { + mView.gestures_view.controller.settings.isZoomEnabled = mCurrentRotationDegrees != 0 || context?.config?.allowZoomingImages == false + if (mIsFragmentVisible && addZoomableView) { scheduleZoomableView() } } @@ -428,7 +426,7 @@ class PhotoFragment : ViewPagerFragment() { private fun scheduleZoomableView() { mLoadZoomableViewHandler.removeCallbacksAndMessages(null) mLoadZoomableViewHandler.postDelayed({ - if (mIsFragmentVisible && context?.config?.allowZoomingImages == true && mMedium.isImage() && !mIsSubsamplingVisible && mCurrentRotationDegrees == 0) { + if (mIsFragmentVisible && context?.config?.allowZoomingImages == true && mMedium.isImage() && !mIsSubsamplingVisible) { addZoomableView() } }, ZOOMABLE_VIEW_LOAD_DELAY) @@ -447,6 +445,11 @@ class PhotoFragment : ViewPagerFragment() { override fun make() = PicassoRegionDecoder() } + var newOrientation = (rotation + mCurrentRotationDegrees) % 360 + if (newOrientation < 0) { + newOrientation += 360 + } + val config = context!!.config mView.subsampling_view.apply { setMaxTileSize(if (config.showHighestQuality) Integer.MAX_VALUE else 4096) @@ -456,23 +459,15 @@ class PhotoFragment : ViewPagerFragment() { regionDecoderFactory = regionDecoder maxScale = 10f beVisible() - isQuickScaleEnabled = config.oneFingerZoom isOneToOneZoomEnabled = config.allowOneToOneZoom - orientation = rotation + orientation = newOrientation setImage(path) onImageEventListener = object : SubsamplingScaleImageView.OnImageEventListener { - override fun onImageLoaded() { - } - override fun onReady() { background = ColorDrawable(if (config.blackBackground) Color.BLACK else config.backgroundColor) val useWidth = if (mImageOrientation == ORIENTATION_ROTATE_90 || mImageOrientation == ORIENTATION_ROTATE_270) sHeight else sWidth val useHeight = if (mImageOrientation == ORIENTATION_ROTATE_90 || mImageOrientation == ORIENTATION_ROTATE_270) sWidth else sHeight doubleTapZoomScale = getDoubleTapZoomScale(useWidth, useHeight) - mOriginalSubsamplingScale = scale - } - - override fun onTileLoadError(e: Exception) { } override fun onImageLoadError(e: Exception) { @@ -481,6 +476,16 @@ class PhotoFragment : ViewPagerFragment() { mIsSubsamplingVisible = false beGone() } + + override fun onImageRotation(degrees: Int) { + val fullRotation = (rotation + degrees) % 360 + val useWidth = if (fullRotation == 90 || fullRotation == 270) sHeight else sWidth + val useHeight = if (fullRotation == 90 || fullRotation == 270) sWidth else sHeight + doubleTapZoomScale = getDoubleTapZoomScale(useWidth, useHeight) + mCurrentRotationDegrees = (mCurrentRotationDegrees + degrees) % 360 + loadBitmap(false) + activity?.invalidateOptionsMenu() + } } } } @@ -537,7 +542,7 @@ class PhotoFragment : ViewPagerFragment() { val bitmapAspectRatio = height / width.toFloat() val screenAspectRatio = mScreenHeight / mScreenWidth.toFloat() - return if (context == null || bitmapAspectRatio == screenAspectRatio) { + return if (context == null || Math.abs(bitmapAspectRatio - screenAspectRatio) < SAME_ASPECT_RATIO_THRESHOLD) { DEFAULT_DOUBLE_TAP_ZOOM } else if (context!!.portrait && bitmapAspectRatio <= screenAspectRatio) { mScreenHeight / height.toFloat() @@ -553,11 +558,14 @@ class PhotoFragment : ViewPagerFragment() { } fun rotateImageViewBy(degrees: Int) { - mCurrentRotationDegrees = degrees - mLoadZoomableViewHandler.removeCallbacksAndMessages(null) - mView.subsampling_view.beGone() - mIsSubsamplingVisible = false - loadBitmap(degrees) + if (mIsSubsamplingVisible) { + mView.subsampling_view.rotateBy(degrees) + } else { + mCurrentRotationDegrees = (mCurrentRotationDegrees + degrees) % 360 + mLoadZoomableViewHandler.removeCallbacksAndMessages(null) + mIsSubsamplingVisible = false + loadBitmap() + } } private fun initExtendedDetails() { diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt index 0b0258d9a..7cd46cb6e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/fragments/VideoFragment.kt @@ -246,6 +246,9 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S initTimeHolder() checkExtendedDetails() updateInstantSwitchWidths() + mView.video_surface_frame.onGlobalLayout { + mView.video_surface_frame.controller.resetState() + } } override fun onSaveInstanceState(outState: Bundle) { @@ -253,7 +256,6 @@ class VideoFragment : ViewPagerFragment(), TextureView.SurfaceTextureListener, S outState.putInt(PROGRESS, mCurrTime) } - private fun storeStateVariables() { mConfig.apply { mStoredShowExtendedDetails = showExtendedDetails diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt index f7d14e261..f715686b4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Config.kt @@ -206,10 +206,6 @@ class Config(context: Context) : BaseConfig(context) { get() = prefs.getInt(getDirectoryColumnsField(), getDefaultDirectoryColumnCount()) set(dirColumnCnt) = prefs.edit().putInt(getDirectoryColumnsField(), dirColumnCnt).apply() - var oneFingerZoom: Boolean - get() = prefs.getBoolean(ONE_FINGER_ZOOM, false) - set(oneFingerZoom) = prefs.edit().putBoolean(ONE_FINGER_ZOOM, oneFingerZoom).apply() - var allowInstantChange: Boolean get() = prefs.getBoolean(ALLOW_INSTANT_CHANGE, false) set(allowInstantChange) = prefs.edit().putBoolean(ALLOW_INSTANT_CHANGE, allowInstantChange).apply() diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Constants.kt index 706a3bb93..d3f5588a8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/helpers/Constants.kt @@ -47,7 +47,6 @@ const val VIEW_TYPE_FILES = "view_type_files" const val SHOW_EXTENDED_DETAILS = "show_extended_details" const val EXTENDED_DETAILS = "extended_details" const val HIDE_EXTENDED_DETAILS = "hide_extended_details" -const val ONE_FINGER_ZOOM = "one_finger_zoom" const val ALLOW_INSTANT_CHANGE = "allow_instant_change" const val DO_EXTRA_CHECK = "do_extra_check" const val WAS_NEW_APP_SHOWN = "was_new_app_shown_clock" diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 280ea6978..bf10bce55 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -819,30 +819,6 @@ - - - - - - - - + + Allow 1:1 zooming in with two double taps Always open videos on a separate screen with new horizontal gestures Show a notch if available + Allow rotating images with gestures المصغرات diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index 20302c348..5e6338fe5 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -173,6 +173,7 @@ Allow 1:1 zooming in with two double taps Always open videos on a separate screen with new horizontal gestures Show a notch if available + Allow rotating images with gestures Thumbnails diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 4f400f5e1..ff83931a0 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -173,6 +173,7 @@ Permet 1:1 zoom amb dos tocs dobles Obriu sempre vídeos en una pantalla independent amb nous gestos horitzontals Mostra una osca si està disponible + Allow rotating images with gestures Miniatures diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 772a47e50..78c21db3f 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -173,6 +173,7 @@ Allow 1:1 zooming in with two double taps Always open videos on a separate screen with new horizontal gestures Show a notch if available + Allow rotating images with gestures Náhledy diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index f2683e5ef..d443043f2 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -31,7 +31,7 @@ Fiks Dato Taget værdi Fikser… Datoer fikset med succes - Share a resized version + Del en skaleret version Filtrér medier @@ -172,7 +172,8 @@ Luk fuldskærmsvisning ved at swipe ned Tillad 1:1 zooming med to dobbelttryk Always open videos on a separate screen with new horizontal gestures - Show a notch if available + Vis en notch hvis tilgængelig + Allow rotating images with gestures Miniaturer diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index b74782d24..a41093497 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -173,6 +173,7 @@ Allow 1:1 zooming in with two double taps Always open videos on a separate screen with new horizontal gestures Show a notch if available + Allow rotating images with gestures Thumbnails diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index a447f33a0..ff8a9ffd6 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -172,7 +172,8 @@ Επιτρέψτε το κλείσιμο προβολής πλήρους οθόνης με χειρονομία προς τα κάτω Allow 1:1 μεγένθυση με δύο διπλά χτυπήματα Να ανοίγονται πάντα τα βίντεο σε ξεχωριστή οθόνη με νέες οριζόντιες χειρονομίες - Εμφάνιση μιας εγκοπή αν διατίθεται + Εμφάνιση μιας εγκοπής αν διατίθεται + Επιτρέπει την περιστροφή εικόνων με χειρονομίες Εικονίδια diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 5b5dff533..e3182dbfa 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -173,6 +173,7 @@ Permitir zoom 1:1 con dos toques dobles Siempre abre videos en una pantalla separada con nuevos gestos horizontales Mostrar una muesca si está disponible + Allow rotating images with gestures Miniaturas diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 642825ba3..40871133c 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -173,6 +173,7 @@ Allow 1:1 zooming in with two double taps Always open videos on a separate screen with new horizontal gestures Show a notch if available + Allow rotating images with gestures Esikatselukuvat diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index e4500491d..4c584181b 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -31,7 +31,7 @@ Corriger la valeur des dates de prise des photos Correction en cours.... Dates corrigées - Share a resized version + Partager une version redimensionnée Filtrer les médias @@ -88,8 +88,8 @@ Retourner Retourner horizontalement Retourner verticalement - Libre - Other + Libre + Autre Fond d\'écran simple @@ -116,7 +116,7 @@ Diaporama en boucle Diaporama terminé Aucun média trouvé pour le diaporama - Use crossfade animations + Utiliser des animations en fondu enchaîné Changer de mode d\'affichage @@ -134,12 +134,12 @@ Extension - Folder shown on the widget: - Show folder name + Dossier affiché sur le widget : + Afficher le nom du dossier Lecture automatique des vidéos - Remember last video playback position + Mémoriser la dernière position de lecture vidéo Permuter la visibilité des noms de fichier Lecture en boucle des vidéos GIFs animés sur les miniatures @@ -170,9 +170,10 @@ Afficher les images avec la meilleur qualité possible Afficher la corbeille en dernière place sur l\'écran principal Fermeture de la vue plein écran par un geste vers le bas - Allow 1:1 zooming in with two double taps - Always open videos on a separate screen with new horizontal gestures - Show a notch if available + Permet d\'effectuer un zoom avant 1:1 avec un double appui + Ouvrez toujours les vidéos sur un écran séparé avec de nouveaux gestes horizontaux. + Afficher un cran si disponible + Allow rotating images with gestures Miniatures @@ -193,7 +194,7 @@ Comment faire pour qu\'un album soit toujours affiché tout en haut ? Vous devez simplement à effectuer un appui prolongé sur l\'album en question et choisir l\'icône \"Épingler\" dans le menu d\'actions. Vous pouvez en épingler plusieurs. Les éléments épinglés seront alors triés selon l\'ordre par défaut. Comment avancer rapidement dans les vidéos ? - You can either drag your finger horizontally over the video player, or click on the current or max duration texts near the seekbar. That will move the video either backward, or forward. + Vous pouvez soit faire glisser votre doigt horizontalement sur le lecteur vidéo, soit cliquer sur le texte en cours ou la durée maximale près de la barre de recherche. Cela déplacera la vidéo vers l\'arrière ou vers l\'avant. Quelle est la différence entre masquer et exclure un dossier ? \"Exclure un dossier\" permet de ne pas l\'afficher uniquement dans Simple Gallery, alors que \"Masquer un dossier\" rend le dossier invisible sur l\'ensemble de l\'appareil, y compris les autres applications de galerie. Dans le dernier cas, un fichier \".nomedia\" est créé dans le dossier masqué, et peut être supprimé avec n\'importe quel explorateur de fichiers. Pourquoi des dossiers avec des pochettes d\'albums musicaux ou des miniatures d\'images sont affichés ? diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index c26670555..92294a33f 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -173,6 +173,7 @@ Allow 1:1 zooming in with two double taps Always open videos on a separate screen with new horizontal gestures Show a notch if available + Allow rotating images with gestures Iconas diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index d53e4db0b..89e6fc617 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -173,6 +173,7 @@ Dopusti zumiranje 1: 1 s dva dvostruka dodira Always open videos on a separate screen with new horizontal gestures Show a notch if available + Allow rotating images with gestures Sličice diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 848e58dc4..281b63a58 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -173,7 +173,8 @@ Engedélyezi a teljes képernyős nézetet a lefelé mozdulattal Engedélyezi az 1:1 nagyítást két dupla érintéssel Mindig külön képernyőn nyissa meg a videókat új vízszintes mozdulattal - Show a notch if available + Notch mutatása, ha elérhető + Engedélyezi a kép forgatását gesztusokkal Miniatűrök @@ -200,7 +201,7 @@ A következő alkalommal, amikor megpróbál megnyitni egy képet vagy videót, A Kizárás megakadályozza, hogy a mappát a Simple Gallery megjelenítse, az Elrejtés pedig rendszer szinten működik, és elrejti a mappát más galériákból is. Úgy működik, hogy létrehoz egy üres \". nomedia\" nevű fájlt az adott mappában, amelyet bármikor eltávolíthat bármilyen fájlkezelővel is. Miért jelennek meg a zenei borítóval vagy matricával rendelkező mappák? Lehet, hogy látni fog néhány szokatlan album megjelenést. Könnyen kizárhatja a hosszú megnyomással és a Kizárás kiválasztásával. A következő párbeszédablakban kiválaszthatja a szülő mappát, és valószínűleg megakadályozza, hogy a többi kapcsolódó album is megjelenjen. - A képek mappája nem jelenik meg, mit tehetek? + A képekkel nem rendelkező mappa nem jelenik meg, vagy nem jeleníti meg az összes elemet. Mit tehetek? Ennek több oka lehet, de megoldása egyszerű. Menjen a Beállítások -> Befoglalt mappák kezelése lehetőségre, válassza a plusz jelet, és keresse meg a kívánt mappát. Mi van, ha csak néhány különleges mappát szeretnék látni? A Befoglalt mappákhoz tartozó mappák hozzáadása nem zár ki automatikusan semmit. Amit tehetünk, menjünk a Beállítások -> Kizárt mappák kezelése, kizárjuk a gyökérmappát \"/ \", utána hozzáadjuk a kívánt mappákat a Beállítások -> Befoglalt mappák kezelése menüpontban. diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index f8b56fa5d..1e1e77184 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -173,6 +173,7 @@ Allow 1:1 zooming in with two double taps Always open videos on a separate screen with new horizontal gestures Show a notch if available + Allow rotating images with gestures Thumbnail diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 0d2b39653..6abeee390 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -173,6 +173,7 @@ Permetti l\'ingrandimento 1:1 con un doppio tasto Apri sempre i video su uno schermo separato con i nuovi movimenti orizzontali Mostra un notch se disponibile + Allow rotating images with gestures Anteprime diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 8690af96d..c3406c3f4 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -173,6 +173,7 @@ Allow 1:1 zooming in with two double taps Always open videos on a separate screen with new horizontal gestures Show a notch if available + Allow rotating images with gestures サムネイル設定 diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index 4c697cc10..d864d415b 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -173,6 +173,7 @@ Allow 1:1 zooming in with two double taps Always open videos on a separate screen with new horizontal gestures Show a notch if available + Allow rotating images with gestures 섬네일 diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 59a6f176d..baa08b9aa 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -173,6 +173,7 @@ Allow 1:1 zooming in with two double taps Always open videos on a separate screen with new horizontal gestures Show a notch if available + Allow rotating images with gestures Miniatiūros diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index ec4b26bc7..38c7eca4a 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -31,7 +31,7 @@ Korriger Dato tatt-verdi Korrigerer… Datoer er korrigerte - Share a resized version + Del versjon med endret størrelse Filtrer media @@ -172,7 +172,8 @@ Tillat lukking av mediavisningen med en nedoverbevegelse Tillat å zoome 1:1 med to dobbeltrykk Åpne alltid videoer på en separat skjerm med nye horisontale bevegelser - Show a notch if available + Vis flik hvis tilgjengelig + Allow rotating images with gestures Minibilder diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 974f83c41..216643f05 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -173,6 +173,7 @@ 1:1 zoomen na 2x dubbelklikken Video\'s altijd in apart scherm met horizontale veeggebaren openen Inkeping scherm tonen indien aanwezig + Afbeeldingen met veeggebaren draaien Miniatuurvoorbeelden diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 72a6e11ef..a747af769 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -31,7 +31,7 @@ Napraw datę utworzenia Naprawiam… Daty zostały naprawione - Share a resized version + Udostępnij zmienioną wersję Filtruj multimedia @@ -89,7 +89,7 @@ Przewróć w poziomie Przewróć w pionie Wolne - Inny + Inne Tapeta @@ -116,7 +116,7 @@    Zapętlaj Pokaz slajdów zakończony Nie znalazłem multimediów do pokazu slajdów - Use crossfade animations + Używaj animacji przejścia    Zmień typ widoku @@ -170,9 +170,10 @@ Pokazuj obrazy w najwyższej możliwej rozdzielczości Pokazuj kosz jako ostatni element na głównym ekranie Zezwalaj na zamykanie pełnoekranowego widoku gestem pociągnięcia w dół - Allow 1:1 zooming in with two double taps - Always open videos on a separate screen with new horizontal gestures - Show a notch if available + Zezwalaj na powiększanie 1:1 dwoma podwójnymi dotknięciami + Zawsze otwieraj filmy na osobnym ekranie z nowymi poziomymi gestami + Pokazuj wcięcie (jeśli dostępne) + Allow rotating images with gestures    Miniatury @@ -215,7 +216,7 @@ - An offline gallery for managing your files without ads, respecting your privacy. + Galeria pozwalająca na zarządzanie Twoimi plikami bez reklam, szanująca Twoją prywatność. Wysoce konfigurowalna galeria obsługująca wiele formatów obrazów i filmów, w tym SVG, RAW oraz multimedia panoramiczne. diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 8b23a2780..4f6e9be8a 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -173,6 +173,7 @@ Allow 1:1 zooming in with two double taps Always open videos on a separate screen with new horizontal gestures Show a notch if available + Allow rotating images with gestures Miniaturas diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index a5051c540..c8f2e996c 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -172,7 +172,8 @@ Sair de ecrã completo com um gesto para baixo Permitir ampliação 1:1 com dois toques Abrir vídeos em ecrã distinto com os novos toques horizontais - Show a notch if available + Mostrar \"notch\", se disponível + Allow rotating images with gestures Miniaturas diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index a61ec0e28..df696e3a7 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -173,6 +173,7 @@ Масштаб 1:1 двумя двойными нажатиями Воспроизводить видео на отдельном экране с управлением позицией горизонтальными жестами Показывать метку при наличии + Allow rotating images with gestures Миниатюры diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index dbb29c3fe..b3b4dcea2 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -173,6 +173,7 @@ Povoliť 1:1 priblíženie dvojnásobným dvojklikom Vždy otvárať videá na vlastnej obrazovke s novými vodorovnými gestami Zobraziť výrez obrazovky, ak je dostupný + Povoliť otáčanie obrázkov gestami Náhľady diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index d30849de5..5b4d1fdcd 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -173,6 +173,7 @@ Dovoli 1:1 povečavo z dvojnim pritiskom Vedno odpri videoposnetke na ločenem zaslonu z novimi horizontalnimi gestami Show a notch if available + Allow rotating images with gestures Sličice diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 322ea5ce1..001067364 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -31,7 +31,7 @@ Korrigera fotodatum Korrigerar… Datumen har korrigerats - Share a resized version + Dela en version med ändrad storlek Filtrera media @@ -89,7 +89,7 @@ Vänd horisontellt Vänd vertikalt Fritt - Other + Annat Bakgrund @@ -116,7 +116,7 @@ Spela upp i en slinga Bildspelet har avslutats Ingen media hittades för bildspelet - Use crossfade animations + Använd övertoningsanimationer Ändra vy @@ -134,18 +134,18 @@ Filnamnstillägg - Folder shown on the widget: - Show folder name + Mapp som visas i widgeten: + Visa mappnamnet Spela upp videor automatiskt - Remember last video playback position + Kom ihåg senaste videouppspelningsposition Visa/dölj filnamn Spela upp videor om och om igen Animera GIF-bilders miniatyrer Maximal ljusstyrka när media visas i helskärmsläge Beskär miniatyrer till kvadrater - Show video durations + Visa videolängder Rotera media i helskärmsläge Systeminställning Enhetens rotation @@ -173,6 +173,7 @@ Allow 1:1 zooming in with two double taps Always open videos on a separate screen with new horizontal gestures Show a notch if available + Allow rotating images with gestures Miniatyrer @@ -217,7 +218,7 @@ - An offline gallery for managing your files without ads, respecting your privacy. + Ett offlinegalleri för dina filer utan reklam, respekterar din integritet. A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos. diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 357a665da..fe4750726 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -173,6 +173,7 @@ Allow 1:1 zooming in with two double taps Always open videos on a separate screen with new horizontal gestures Show a notch if available + Allow rotating images with gestures Küçük resimler diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 0248f8939..d849a6641 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -173,6 +173,7 @@ Дозволити масштабування до 1:1 подвійним тапом Завжди відкривати відео на окремому екрані з новими горизонтальними жестами Show a notch if available + Allow rotating images with gestures Ескізи diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 4252b5daf..8cec1ae5b 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -172,7 +172,8 @@ 使用下滑手势关闭全屏视图 双击两次后 1:1 放大图像 使用新的水平手势在独立页面播放视频 - Show a notch if available + 显示留海(如果可用) + 允许使用手势旋转图像 缩略图 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 820f22486..86da41b35 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -173,6 +173,7 @@ 允許用兩次雙擊來1:1縮放 總是用新的水平手勢在獨立畫面開啟影片 如果可以,顯示瀏海螢幕 + 允許用手勢來旋轉圖片 縮圖 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3950ffb4a..4c227ae82 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -173,6 +173,7 @@ Allow 1:1 zooming in with two double taps Always open videos on a separate screen with new horizontal gestures Show a notch if available + Allow rotating images with gestures Thumbnails diff --git a/build.gradle b/build.gradle index 18eabc38b..0be76662a 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.3.11' + ext.kotlin_version = '1.3.21' repositories { google() @@ -9,7 +9,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.3.0' + classpath 'com.android.tools.build:gradle:3.3.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong