Merge pull request #47 from SimpleMobileTools/master

upd
This commit is contained in:
solokot 2019-02-14 19:30:57 +03:00 committed by GitHub
commit 27eaa0098d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
46 changed files with 154 additions and 137 deletions

View file

@ -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)*
----------------------------

View file

@ -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'

View file

@ -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()

View file

@ -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() {

View file

@ -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()
}

View file

@ -448,7 +448,6 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Thumbnai
val showVideoDuration = medium.isVideo() && config.showThumbnailVideoDuration
if (showVideoDuration) {
video_duration.text = medium.videoDuration.getFormattedDuration()
video_duration.setTextColor(textColor)
}
video_duration.beVisibleIf(showVideoDuration)

View file

@ -374,8 +374,13 @@ fun Activity.fixDateTaken(paths: ArrayList<String>, 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)) {

View file

@ -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<Drawable> {
override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, isFirstResource: Boolean): Boolean {
if (activity != null) {
tryLoadingWithPicasso(degrees)
tryLoadingWithPicasso(addZoomableView)
}
return false
}
override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, 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() {

View file

@ -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

View file

@ -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()

View file

@ -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"

View file

@ -819,30 +819,6 @@
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_one_finger_zoom_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/medium_margin"
android:background="?attr/selectableItemBackground"
android:paddingLeft="@dimen/normal_margin"
android:paddingTop="@dimen/activity_margin"
android:paddingRight="@dimen/normal_margin"
android:paddingBottom="@dimen/activity_margin">
<com.simplemobiletools.commons.views.MySwitchCompat
android:id="@+id/settings_one_finger_zoom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:paddingLeft="@dimen/medium_margin"
android:text="@string/one_finger_zoom"
app:switchPadding="@dimen/medium_margin"/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_allow_one_to_one_zoom_holder"
android:layout_width="match_parent"

View file

@ -6,12 +6,6 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/top_shadow"
android:layout_width="match_parent"
android:layout_height="@dimen/default_status_action_height"
android:background="@drawable/gradient_background_flipped"/>
<com.alexvasilkov.gestures.GestureFrameLayout
android:id="@+id/video_surface_frame"
android:layout_width="match_parent"
@ -37,6 +31,12 @@
android:layout_width="@dimen/media_side_slider_width"
android:layout_height="match_parent"/>
<ImageView
android:id="@+id/top_shadow"
android:layout_width="match_parent"
android:layout_height="@dimen/default_status_action_height"
android:background="@drawable/gradient_background_flipped"/>
<TextView
android:id="@+id/video_bottom_gradient"
android:layout_width="match_parent"

View file

@ -177,6 +177,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections -->
<string name="thumbnails">المصغرات</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections -->
<string name="thumbnails">Thumbnails</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Permet 1:1 zoom amb dos tocs dobles</string>
<string name="open_videos_on_separate_screen">Obriu sempre vídeos en una pantalla independent amb nous gestos horitzontals</string>
<string name="show_notch">Mostra una osca si està disponible</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections -->
<string name="thumbnails">Miniatures</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections -->
<string name="thumbnails">Náhledy</string>

View file

@ -31,7 +31,7 @@
<string name="fix_date_taken">Fiks Dato Taget værdi</string>
<string name="fixing">Fikser…</string>
<string name="dates_fixed_successfully">Datoer fikset med succes</string>
<string name="share_resized">Share a resized version</string>
<string name="share_resized">Del en skaleret version</string>
<!-- Filter -->
<string name="filter_media">Filtrér medier</string>
@ -172,7 +172,8 @@
<string name="allow_down_gesture">Luk fuldskærmsvisning ved at swipe ned</string>
<string name="allow_one_to_one_zoom">Tillad 1:1 zooming med to dobbelttryk</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string>
<string name="show_notch">Vis en notch hvis tilgængelig</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections -->
<string name="thumbnails">Miniaturer</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections -->
<string name="thumbnails">Thumbnails</string>

View file

@ -172,7 +172,8 @@
<string name="allow_down_gesture">Επιτρέψτε το κλείσιμο προβολής πλήρους οθόνης με χειρονομία προς τα κάτω</string>
<string name="allow_one_to_one_zoom">Allow 1:1 μεγένθυση με δύο διπλά χτυπήματα</string>
<string name="open_videos_on_separate_screen">Να ανοίγονται πάντα τα βίντεο σε ξεχωριστή οθόνη με νέες οριζόντιες χειρονομίες</string>
<string name="show_notch">Εμφάνιση μιας εγκοπή αν διατίθεται</string>
<string name="show_notch">Εμφάνιση μιας εγκοπής αν διατίθεται</string>
<string name="allow_rotating_gestures">Επιτρέπει την περιστροφή εικόνων με χειρονομίες</string>
<!-- Setting sections -->
<string name="thumbnails">Εικονίδια</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Permitir zoom 1:1 con dos toques dobles</string>
<string name="open_videos_on_separate_screen">Siempre abre videos en una pantalla separada con nuevos gestos horizontales</string>
<string name="show_notch">Mostrar una muesca si está disponible</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections -->
<string name="thumbnails">Miniaturas</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections -->
<string name="thumbnails">Esikatselukuvat</string>

View file

@ -31,7 +31,7 @@
<string name="fix_date_taken">Corriger la valeur des dates de prise des photos</string>
<string name="fixing">Correction en cours....</string>
<string name="dates_fixed_successfully">Dates corrigées</string>
<string name="share_resized">Share a resized version</string>
<string name="share_resized">Partager une version redimensionnée</string>
<!-- Filter -->
<string name="filter_media">Filtrer les médias</string>
@ -88,8 +88,8 @@
<string name="flip">Retourner</string>
<string name="flip_horizontally">Retourner horizontalement</string>
<string name="flip_vertically">Retourner verticalement</string>
<string name="free_aspect_ratio">Libre</string> <!-- available as an option: 1:1, 4:3, 16:9, free -->
<string name="other_aspect_ratio">Other</string> <!-- available as an option: 1:1, 4:3, 16:9, free, other -->
<string name="free_aspect_ratio">Libre</string> <!-- available as an option: 1:1, 4:3, 16:9, free -->
<string name="other_aspect_ratio">Autre</string> <!-- available as an option: 1:1, 4:3, 16:9, free, other -->
<!-- Set wallpaper -->
<string name="simple_wallpaper">Fond d\'écran simple</string>
@ -116,7 +116,7 @@
<string name="loop_slideshow">Diaporama en boucle</string>
<string name="slideshow_ended">Diaporama terminé</string>
<string name="no_media_for_slideshow">Aucun média trouvé pour le diaporama</string>
<string name="use_crossfade_animation">Use crossfade animations</string>
<string name="use_crossfade_animation">Utiliser des animations en fondu enchaîné</string>
<!-- View types -->
<string name="change_view_type">Changer de mode d\'affichage</string>
@ -134,12 +134,12 @@
<string name="by_extension">Extension</string>
<!-- Widgets -->
<string name="folder_on_widget">Folder shown on the widget:</string>
<string name="show_folder_name">Show folder name</string>
<string name="folder_on_widget">Dossier affiché sur le widget :</string>
<string name="show_folder_name">Afficher le nom du dossier</string>
<!-- Settings -->
<string name="autoplay_videos">Lecture automatique des vidéos</string>
<string name="remember_last_video_position">Remember last video playback position</string>
<string name="remember_last_video_position">Mémoriser la dernière position de lecture vidéo</string>
<string name="toggle_filename">Permuter la visibilité des noms de fichier</string>
<string name="loop_videos">Lecture en boucle des vidéos</string>
<string name="animate_gifs">GIFs animés sur les miniatures</string>
@ -170,9 +170,10 @@
<string name="show_highest_quality">Afficher les images avec la meilleur qualité possible</string>
<string name="show_recycle_bin_last">Afficher la corbeille en dernière place sur l\'écran principal</string>
<string name="allow_down_gesture">Fermeture de la vue plein écran par un geste vers le bas</string>
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string>
<string name="allow_one_to_one_zoom">Permet d\'effectuer un zoom avant 1:1 avec un double appui</string>
<string name="open_videos_on_separate_screen">Ouvrez toujours les vidéos sur un écran séparé avec de nouveaux gestes horizontaux.</string>
<string name="show_notch">Afficher un cran si disponible</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections -->
<string name="thumbnails">Miniatures</string>
@ -193,7 +194,7 @@
<string name="faq_3_title">Comment faire pour qu\'un album soit toujours affiché tout en haut ?</string>
<string name="faq_3_text">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.</string>
<string name="faq_4_title">Comment avancer rapidement dans les vidéos ?</string>
<string name="faq_4_text">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.</string>
<string name="faq_4_text">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.</string>
<string name="faq_5_title">Quelle est la différence entre masquer et exclure un dossier ?</string>
<string name="faq_5_text">\"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.</string>
<string name="faq_6_title">Pourquoi des dossiers avec des pochettes d\'albums musicaux ou des miniatures d\'images sont affichés ?</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections -->
<string name="thumbnails">Iconas</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Dopusti zumiranje 1: 1 s dva dvostruka dodira</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections -->
<string name="thumbnails">Sličice</string>

View file

@ -173,7 +173,8 @@
<string name="allow_down_gesture">Engedélyezi a teljes képernyős nézetet a lefelé mozdulattal</string>
<string name="allow_one_to_one_zoom">Engedélyezi az 1:1 nagyítást két dupla érintéssel</string>
<string name="open_videos_on_separate_screen">Mindig külön képernyőn nyissa meg a videókat új vízszintes mozdulattal</string>
<string name="show_notch">Show a notch if available</string>
<string name="show_notch">Notch mutatása, ha elérhető</string>
<string name="allow_rotating_gestures">Engedélyezi a kép forgatását gesztusokkal</string>
<!-- Setting sections -->
<string name="thumbnails">Miniatűrök</string>
@ -200,7 +201,7 @@ A következő alkalommal, amikor megpróbál megnyitni egy képet vagy videót,
<string name="faq_5_text">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.</string>
<string name="faq_6_title">Miért jelennek meg a zenei borítóval vagy matricával rendelkező mappák?</string>
<string name="faq_6_text">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.</string>
<string name="faq_7_title">A képek mappája nem jelenik meg, mit tehetek?</string>
<string name="faq_7_title">A képekkel nem rendelkező mappa nem jelenik meg, vagy nem jeleníti meg az összes elemet. Mit tehetek?</string>
<string name="faq_7_text">Ennek több oka lehet, de megoldása egyszerű. Menjen a Beállítások -&gt; Befoglalt mappák kezelése lehetőségre, válassza a plusz jelet, és keresse meg a kívánt mappát.</string>
<string name="faq_8_title">Mi van, ha csak néhány különleges mappát szeretnék látni?</string>
<string name="faq_8_text">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 -&gt; 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 -&gt; Befoglalt mappák kezelése menüpontban.

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections -->
<string name="thumbnails">Thumbnail</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Permetti l\'ingrandimento 1:1 con un doppio tasto</string>
<string name="open_videos_on_separate_screen">Apri sempre i video su uno schermo separato con i nuovi movimenti orizzontali</string>
<string name="show_notch">Mostra un notch se disponibile</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections -->
<string name="thumbnails">Anteprime</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections -->
<string name="thumbnails">サムネイル設定</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections -->
<string name="thumbnails">섬네일</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections -->
<string name="thumbnails">Miniatiūros</string>

View file

@ -31,7 +31,7 @@
<string name="fix_date_taken">Korriger Dato tatt-verdi</string>
<string name="fixing">Korrigerer…</string>
<string name="dates_fixed_successfully">Datoer er korrigerte</string>
<string name="share_resized">Share a resized version</string>
<string name="share_resized">Del versjon med endret størrelse</string>
<!-- Filter -->
<string name="filter_media">Filtrer media</string>
@ -172,7 +172,8 @@
<string name="allow_down_gesture">Tillat lukking av mediavisningen med en nedoverbevegelse</string>
<string name="allow_one_to_one_zoom">Tillat å zoome 1:1 med to dobbeltrykk</string>
<string name="open_videos_on_separate_screen">Åpne alltid videoer på en separat skjerm med nye horisontale bevegelser</string>
<string name="show_notch">Show a notch if available</string>
<string name="show_notch">Vis flik hvis tilgjengelig</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections -->
<string name="thumbnails">Minibilder</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">1:1 zoomen na 2x dubbelklikken</string>
<string name="open_videos_on_separate_screen">Video\'s altijd in apart scherm met horizontale veeggebaren openen</string>
<string name="show_notch">Inkeping scherm tonen indien aanwezig</string>
<string name="allow_rotating_gestures">Afbeeldingen met veeggebaren draaien</string>
<!-- Setting sections -->
<string name="thumbnails">Miniatuurvoorbeelden</string>

View file

@ -31,7 +31,7 @@
<string name="fix_date_taken">Napraw datę utworzenia</string>
<string name="fixing">Naprawiam…</string>
<string name="dates_fixed_successfully">Daty zostały naprawione</string>
<string name="share_resized">Share a resized version</string>
<string name="share_resized">Udostępnij zmienioną wersję</string>
<!-- Filter -->
<string name="filter_media">Filtruj multimedia</string>
@ -89,7 +89,7 @@
<string name="flip_horizontally">Przewróć w poziomie</string>
<string name="flip_vertically">Przewróć w pionie</string>
<string name="free_aspect_ratio">Wolne</string> <!-- available as an option: 1:1, 4:3, 16:9, free -->
<string name="other_aspect_ratio">Inny</string> <!-- available as an option: 1:1, 4:3, 16:9, free, other -->
<string name="other_aspect_ratio">Inne</string> <!-- available as an option: 1:1, 4:3, 16:9, free, other -->
<!-- Set wallpaper -->
<string name="simple_wallpaper">Tapeta</string>
@ -116,7 +116,7 @@
   <string name="loop_slideshow">Zapętlaj</string>
<string name="slideshow_ended">Pokaz slajdów zakończony</string>
<string name="no_media_for_slideshow">Nie znalazłem multimediów do pokazu slajdów</string>
<string name="use_crossfade_animation">Use crossfade animations</string>
<string name="use_crossfade_animation">Używaj animacji przejścia</string>
<!-- View types -->
   <string name="change_view_type">Zmień typ widoku</string>
@ -170,9 +170,10 @@
<string name="show_highest_quality">Pokazuj obrazy w najwyższej możliwej rozdzielczości</string>
<string name="show_recycle_bin_last">Pokazuj kosz jako ostatni element na głównym ekranie</string>
<string name="allow_down_gesture">Zezwalaj na zamykanie pełnoekranowego widoku gestem pociągnięcia w dół</string>
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string>
<string name="allow_one_to_one_zoom">Zezwalaj na powiększanie 1:1 dwoma podwójnymi dotknięciami</string>
<string name="open_videos_on_separate_screen">Zawsze otwieraj filmy na osobnym ekranie z nowymi poziomymi gestami</string>
<string name="show_notch">Pokazuj wcięcie (jeśli dostępne)</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections -->
   <string name="thumbnails">Miniatury</string>
@ -215,7 +216,7 @@
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->
<string name="app_short_description">An offline gallery for managing your files without ads, respecting your privacy.</string>
<string name="app_short_description">Galeria pozwalająca na zarządzanie Twoimi plikami bez reklam, szanująca Twoją prywatność.</string>
<string name="app_long_description">
Wysoce konfigurowalna galeria obsługująca wiele formatów obrazów i filmów, w tym SVG, RAW oraz multimedia panoramiczne.

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections -->
<string name="thumbnails">Miniaturas</string>

View file

@ -172,7 +172,8 @@
<string name="allow_down_gesture">Sair de ecrã completo com um gesto para baixo</string>
<string name="allow_one_to_one_zoom">Permitir ampliação 1:1 com dois toques</string>
<string name="open_videos_on_separate_screen">Abrir vídeos em ecrã distinto com os novos toques horizontais</string>
<string name="show_notch">Show a notch if available</string>
<string name="show_notch">Mostrar \"notch\", se disponível</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections -->
<string name="thumbnails">Miniaturas</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Масштаб 1:1 двумя двойными нажатиями</string>
<string name="open_videos_on_separate_screen">Воспроизводить видео на отдельном экране с управлением позицией горизонтальными жестами</string>
<string name="show_notch">Показывать метку при наличии</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections -->
<string name="thumbnails">Миниатюры</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Povoliť 1:1 priblíženie dvojnásobným dvojklikom</string>
<string name="open_videos_on_separate_screen">Vždy otvárať videá na vlastnej obrazovke s novými vodorovnými gestami</string>
<string name="show_notch">Zobraziť výrez obrazovky, ak je dostupný</string>
<string name="allow_rotating_gestures">Povoliť otáčanie obrázkov gestami</string>
<!-- Setting sections -->
<string name="thumbnails">Náhľady</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Dovoli 1:1 povečavo z dvojnim pritiskom</string>
<string name="open_videos_on_separate_screen">Vedno odpri videoposnetke na ločenem zaslonu z novimi horizontalnimi gestami</string>
<string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections -->
<string name="thumbnails">Sličice</string>

View file

@ -31,7 +31,7 @@
<string name="fix_date_taken">Korrigera fotodatum</string>
<string name="fixing">Korrigerar…</string>
<string name="dates_fixed_successfully">Datumen har korrigerats</string>
<string name="share_resized">Share a resized version</string>
<string name="share_resized">Dela en version med ändrad storlek</string>
<!-- Filter -->
<string name="filter_media">Filtrera media</string>
@ -89,7 +89,7 @@
<string name="flip_horizontally">Vänd horisontellt</string>
<string name="flip_vertically">Vänd vertikalt</string>
<string name="free_aspect_ratio">Fritt</string> <!-- available as an option: 1:1, 4:3, 16:9, free -->
<string name="other_aspect_ratio">Other</string> <!-- available as an option: 1:1, 4:3, 16:9, free, other -->
<string name="other_aspect_ratio">Annat</string> <!-- available as an option: 1:1, 4:3, 16:9, free, other -->
<!-- Set wallpaper -->
<string name="simple_wallpaper">Bakgrund</string>
@ -116,7 +116,7 @@
<string name="loop_slideshow">Spela upp i en slinga</string>
<string name="slideshow_ended">Bildspelet har avslutats</string>
<string name="no_media_for_slideshow">Ingen media hittades för bildspelet</string>
<string name="use_crossfade_animation">Use crossfade animations</string>
<string name="use_crossfade_animation">Använd övertoningsanimationer</string>
<!-- View types -->
<string name="change_view_type">Ändra vy</string>
@ -134,18 +134,18 @@
<string name="by_extension">Filnamnstillägg</string>
<!-- Widgets -->
<string name="folder_on_widget">Folder shown on the widget:</string>
<string name="show_folder_name">Show folder name</string>
<string name="folder_on_widget">Mapp som visas i widgeten:</string>
<string name="show_folder_name">Visa mappnamnet</string>
<!-- Settings -->
<string name="autoplay_videos">Spela upp videor automatiskt</string>
<string name="remember_last_video_position">Remember last video playback position</string>
<string name="remember_last_video_position">Kom ihåg senaste videouppspelningsposition</string>
<string name="toggle_filename">Visa/dölj filnamn</string>
<string name="loop_videos">Spela upp videor om och om igen</string>
<string name="animate_gifs">Animera GIF-bilders miniatyrer</string>
<string name="max_brightness">Maximal ljusstyrka när media visas i helskärmsläge</string>
<string name="crop_thumbnails">Beskär miniatyrer till kvadrater</string>
<string name="show_thumbnail_video_duration">Show video durations</string>
<string name="show_thumbnail_video_duration">Visa videolängder</string>
<string name="screen_rotation_by">Rotera media i helskärmsläge</string>
<string name="screen_rotation_system_setting">Systeminställning</string>
<string name="screen_rotation_device_rotation">Enhetens rotation</string>
@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections -->
<string name="thumbnails">Miniatyrer</string>
@ -217,7 +218,7 @@
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->
<string name="app_short_description">An offline gallery for managing your files without ads, respecting your privacy.</string>
<string name="app_short_description">Ett offlinegalleri för dina filer utan reklam, respekterar din integritet.</string>
<string name="app_long_description">
A highly customizable gallery capable of displaying many different image and video types including SVGs, RAWs, panoramic photos and videos.

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections -->
<string name="thumbnails">Küçük resimler</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Дозволити масштабування до 1:1 подвійним тапом</string>
<string name="open_videos_on_separate_screen">Завжди відкривати відео на окремому екрані з новими горизонтальними жестами</string>
<string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections -->
<string name="thumbnails">Ескізи</string>

View file

@ -172,7 +172,8 @@
<string name="allow_down_gesture">使用下滑手势关闭全屏视图</string>
<string name="allow_one_to_one_zoom">双击两次后 1:1 放大图像</string>
<string name="open_videos_on_separate_screen">使用新的水平手势在独立页面播放视频</string>
<string name="show_notch">Show a notch if available</string>
<string name="show_notch">显示留海(如果可用)</string>
<string name="allow_rotating_gestures">允许使用手势旋转图像</string>
<!-- Setting sections -->
<string name="thumbnails">缩略图</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">允許用兩次雙擊來1:1縮放</string>
<string name="open_videos_on_separate_screen">總是用新的水平手勢在獨立畫面開啟影片</string>
<string name="show_notch">如果可以,顯示瀏海螢幕</string>
<string name="allow_rotating_gestures">允許用手勢來旋轉圖片</string>
<!-- Setting sections -->
<string name="thumbnails">縮圖</string>

View file

@ -173,6 +173,7 @@
<string name="allow_one_to_one_zoom">Allow 1:1 zooming in with two double taps</string>
<string name="open_videos_on_separate_screen">Always open videos on a separate screen with new horizontal gestures</string>
<string name="show_notch">Show a notch if available</string>
<string name="allow_rotating_gestures">Allow rotating images with gestures</string>
<!-- Setting sections -->
<string name="thumbnails">Thumbnails</string>

View file

@ -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