Merge pull request #7 from SimpleMobileTools/master

merge
This commit is contained in:
fiepi 2017-10-25 17:12:43 +08:00 committed by GitHub
commit e4da7ae89b
37 changed files with 312 additions and 447 deletions

View file

@ -1,6 +1,15 @@
Changelog Changelog
========== ==========
Version 2.16.1 *(2017-10-24)*
----------------------------
* Added a toggle for hiding folder media count on the main screen
* Fixed SD card folders not being visible on some devices
* Fixed videos not playing properly in some cases
* Do not modify last_modified at copy/move/rename
* Added support for 3gpp videos
Version 2.16.0 *(2017-10-19)* Version 2.16.0 *(2017-10-19)*
---------------------------- ----------------------------

View file

@ -10,8 +10,8 @@ android {
applicationId "com.simplemobiletools.gallery" applicationId "com.simplemobiletools.gallery"
minSdkVersion 16 minSdkVersion 16
targetSdkVersion 23 targetSdkVersion 23
versionCode 136 versionCode 137
versionName "2.16.0" versionName "2.16.1"
} }
signingConfigs { signingConfigs {
@ -37,7 +37,7 @@ android {
} }
dependencies { dependencies {
compile 'com.simplemobiletools:commons:2.30.6' compile 'com.simplemobiletools:commons:2.31.11'
compile 'com.davemorrissey.labs:subsampling-scale-image-view:3.6.0' compile 'com.davemorrissey.labs:subsampling-scale-image-view:3.6.0'
compile 'com.theartofdev.edmodo:android-image-cropper:2.4.0' compile 'com.theartofdev.edmodo:android-image-cropper:2.4.0'
compile 'com.bignerdranch.android:recyclerview-multiselect:0.2' compile 'com.bignerdranch.android:recyclerview-multiselect:0.2'

View file

@ -10,14 +10,10 @@ import android.provider.MediaStore
import android.util.Log import android.util.Log
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import com.simplemobiletools.commons.extensions.getCompressionFormat import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.extensions.getFileOutputStream
import com.simplemobiletools.commons.extensions.scanPath
import com.simplemobiletools.commons.extensions.toast
import com.simplemobiletools.gallery.R import com.simplemobiletools.gallery.R
import com.simplemobiletools.gallery.dialogs.ResizeDialog import com.simplemobiletools.gallery.dialogs.ResizeDialog
import com.simplemobiletools.gallery.dialogs.SaveAsDialog import com.simplemobiletools.gallery.dialogs.SaveAsDialog
import com.simplemobiletools.gallery.extensions.getRealPathFromURI
import com.simplemobiletools.gallery.extensions.openEditor import com.simplemobiletools.gallery.extensions.openEditor
import com.theartofdev.edmodo.cropper.CropImageView import com.theartofdev.edmodo.cropper.CropImageView
import kotlinx.android.synthetic.main.view_crop_image.* import kotlinx.android.synthetic.main.view_crop_image.*

View file

@ -56,6 +56,7 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
private var mStoredAnimateGifs = true private var mStoredAnimateGifs = true
private var mStoredCropThumbnails = true private var mStoredCropThumbnails = true
private var mStoredScrollHorizontally = true private var mStoredScrollHorizontally = true
private var mStoredShowMediaCount = true
private var mStoredTextColor = 0 private var mStoredTextColor = 0
private var mLoadedInitialPhotos = false private var mLoadedInitialPhotos = false
private var mLatestMediaId = 0L private var mLatestMediaId = 0L
@ -80,10 +81,7 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
removeTempFolder() removeTempFolder()
directories_refresh_layout.setOnRefreshListener({ getDirectories() }) directories_refresh_layout.setOnRefreshListener({ getDirectories() })
mDirs = ArrayList() mDirs = ArrayList()
mStoredAnimateGifs = config.animateGifs storeStateVariables()
mStoredCropThumbnails = config.cropThumbnails
mStoredScrollHorizontally = config.scrollHorizontally
mStoredTextColor = config.textColor
checkWhatsNewDialog() checkWhatsNewDialog()
directories_empty_text.setOnClickListener { directories_empty_text.setOnClickListener {
@ -134,6 +132,13 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
directories_grid.adapter?.notifyDataSetChanged() directories_grid.adapter?.notifyDataSetChanged()
} }
if (mStoredShowMediaCount != config.showMediaCount) {
(directories_grid.adapter as? DirectoryAdapter)?.apply {
showMediaCount = config.showMediaCount
notifyDataSetChanged()
}
}
if (mStoredScrollHorizontally != config.scrollHorizontally) { if (mStoredScrollHorizontally != config.scrollHorizontally) {
(directories_grid.adapter as? DirectoryAdapter)?.apply { (directories_grid.adapter as? DirectoryAdapter)?.apply {
scrollVertically = config.viewTypeFolders == VIEW_TYPE_LIST || !config.scrollHorizontally scrollVertically = config.viewTypeFolders == VIEW_TYPE_LIST || !config.scrollHorizontally
@ -157,10 +162,7 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
storeDirectories() storeDirectories()
directories_refresh_layout.isRefreshing = false directories_refresh_layout.isRefreshing = false
mIsGettingDirs = false mIsGettingDirs = false
mStoredAnimateGifs = config.animateGifs storeStateVariables()
mStoredCropThumbnails = config.cropThumbnails
mStoredScrollHorizontally = config.scrollHorizontally
mStoredTextColor = config.textColor
directories_grid.listener = null directories_grid.listener = null
mLastMediaHandler.removeCallbacksAndMessages(null) mLastMediaHandler.removeCallbacksAndMessages(null)
@ -175,6 +177,16 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
removeTempFolder() removeTempFolder()
} }
private fun storeStateVariables() {
config.apply {
mStoredAnimateGifs = animateGifs
mStoredCropThumbnails = cropThumbnails
mStoredScrollHorizontally = scrollHorizontally
mStoredShowMediaCount = showMediaCount
mStoredTextColor = textColor
}
}
private fun removeTempFolder() { private fun removeTempFolder() {
val newFolder = File(config.tempFolderPath) val newFolder = File(config.tempFolderPath)
if (newFolder.exists() && newFolder.isDirectory) { if (newFolder.exists() && newFolder.isDirectory) {
@ -188,10 +200,11 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
private fun tryloadGallery() { private fun tryloadGallery() {
handlePermission(PERMISSION_WRITE_STORAGE) { handlePermission(PERMISSION_WRITE_STORAGE) {
if (it) { if (it) {
if (config.showAll) if (config.showAll) {
showAllMedia() showAllMedia()
else } else {
getDirectories() getDirectories()
}
setupLayoutManager() setupLayoutManager()
checkIfColorChanged() checkIfColorChanged()
@ -305,10 +318,11 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
private fun getRecyclerAdapter() = (directories_grid.adapter as DirectoryAdapter) private fun getRecyclerAdapter() = (directories_grid.adapter as DirectoryAdapter)
private fun setupLayoutManager() { private fun setupLayoutManager() {
if (config.viewTypeFolders == VIEW_TYPE_GRID) if (config.viewTypeFolders == VIEW_TYPE_GRID) {
setupGridLayoutManager() setupGridLayoutManager()
else } else {
setupListLayoutManager() setupListLayoutManager()
}
} }
private fun setupGridLayoutManager() { private fun setupGridLayoutManager() {
@ -466,7 +480,7 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
private fun fillIntentPath(resultData: Intent, resultIntent: Intent) { private fun fillIntentPath(resultData: Intent, resultIntent: Intent) {
val path = resultData.data.path val path = resultData.data.path
val uri = Uri.fromFile(File(path)) val uri = Uri.fromFile(File(path))
val type = File(path).getMimeType("image/jpeg") val type = path.getMimeTypeFromPath()
resultIntent.setDataAndTypeAndNormalize(uri, type) resultIntent.setDataAndTypeAndNormalize(uri, type)
resultIntent.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION resultIntent.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION
} }
@ -624,6 +638,7 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
add(Release(127, R.string.release_127)) add(Release(127, R.string.release_127))
add(Release(133, R.string.release_133)) add(Release(133, R.string.release_133))
add(Release(136, R.string.release_136)) add(Release(136, R.string.release_136))
add(Release(137, R.string.release_137))
checkWhatsNew(this, BuildConfig.VERSION_CODE) checkWhatsNew(this, BuildConfig.VERSION_CODE)
} }
} }

View file

@ -10,6 +10,7 @@ import android.provider.MediaStore
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import com.simplemobiletools.commons.extensions.getRealPathFromURI
import com.simplemobiletools.commons.extensions.scanPath import com.simplemobiletools.commons.extensions.scanPath
import com.simplemobiletools.commons.extensions.toast import com.simplemobiletools.commons.extensions.toast
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE

View file

@ -49,6 +49,7 @@ class SettingsActivity : SimpleActivity() {
setupPasswordProtection() setupPasswordProtection()
setupDeleteEmptyFolders() setupDeleteEmptyFolders()
setupAllowVideoGestures() setupAllowVideoGestures()
setupShowMediaCount()
setupShowExtendedDetails() setupShowExtendedDetails()
setupManageExtendedDetails() setupManageExtendedDetails()
updateTextColors(settings_holder) updateTextColors(settings_holder)
@ -198,6 +199,14 @@ class SettingsActivity : SimpleActivity() {
} }
} }
private fun setupShowMediaCount() {
settings_show_media_count.isChecked = config.showMediaCount
settings_show_media_count_holder.setOnClickListener {
settings_show_media_count.toggle()
config.showMediaCount = settings_show_media_count.isChecked
}
}
private fun setupScreenRotation() { private fun setupScreenRotation() {
settings_screen_rotation.text = getScreenRotationText() settings_screen_rotation.text = getScreenRotationText()
settings_screen_rotation_holder.setOnClickListener { settings_screen_rotation_holder.setOnClickListener {

View file

@ -273,7 +273,6 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1 || !isDestroyed) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1 || !isDestroyed) {
view_pager.apply { view_pager.apply {
adapter = pagerAdapter adapter = pagerAdapter
adapter!!.notifyDataSetChanged()
currentItem = mPos currentItem = mPos
addOnPageChangeListener(this@ViewPagerActivity) addOnPageChangeListener(this@ViewPagerActivity)
} }
@ -731,10 +730,11 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
} }
private fun getCurrentMedium(): Medium? { private fun getCurrentMedium(): Medium? {
return if (getCurrentMedia().isEmpty() || mPos == -1) return if (getCurrentMedia().isEmpty() || mPos == -1) {
null null
else } else {
getCurrentMedia()[Math.min(mPos, getCurrentMedia().size - 1)] getCurrentMedia()[Math.min(mPos, getCurrentMedia().size - 1)]
}
} }
private fun getCurrentMedia() = if (mAreSlideShowMediaVisible) mSlideshowMedia else mMedia private fun getCurrentMedia() = if (mAreSlideShowMediaVisible) mSlideshowMedia else mMedia
@ -743,9 +743,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
private fun getCurrentFile() = File(getCurrentPath()) private fun getCurrentFile() = File(getCurrentPath())
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) { override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {}
}
override fun onPageSelected(position: Int) { override fun onPageSelected(position: Int) {
if (view_pager.offscreenPageLimit == 1) { if (view_pager.offscreenPageLimit == 1) {
@ -759,7 +757,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
} }
override fun onPageScrollStateChanged(state: Int) { override fun onPageScrollStateChanged(state: Int) {
if (state == ViewPager.SCROLL_STATE_IDLE) { if (state == ViewPager.SCROLL_STATE_IDLE && getCurrentMedium() != null) {
checkOrientation() checkOrientation()
} }
} }

View file

@ -30,22 +30,25 @@ import java.util.*
class DirectoryAdapter(val activity: SimpleActivity, var dirs: MutableList<Directory>, val listener: DirOperationsListener?, val isPickIntent: Boolean, class DirectoryAdapter(val activity: SimpleActivity, var dirs: MutableList<Directory>, val listener: DirOperationsListener?, val isPickIntent: Boolean,
val itemClick: (Directory) -> Unit) : RecyclerView.Adapter<DirectoryAdapter.ViewHolder>() { val itemClick: (Directory) -> Unit) : RecyclerView.Adapter<DirectoryAdapter.ViewHolder>() {
val multiSelector = MultiSelector()
val config = activity.config val config = activity.config
val isListViewType = config.viewTypeFolders == VIEW_TYPE_LIST
var actMode: ActionMode? = null var actMode: ActionMode? = null
var itemViews = SparseArray<View>()
val selectedPositions = HashSet<Int>()
var primaryColor = config.primaryColor var primaryColor = config.primaryColor
var textColor = config.textColor
var pinnedFolders = config.pinnedFolders
var scrollVertically = !config.scrollHorizontally var scrollVertically = !config.scrollHorizontally
var showMediaCount = config.showMediaCount
private val multiSelector = MultiSelector()
private val isListViewType = config.viewTypeFolders == VIEW_TYPE_LIST
private var itemViews = SparseArray<View>()
private val selectedPositions = HashSet<Int>()
private var textColor = config.textColor
private var pinnedFolders = config.pinnedFolders
fun toggleItemSelection(select: Boolean, pos: Int) { fun toggleItemSelection(select: Boolean, pos: Int) {
if (select) { if (select) {
itemViews[pos]?.dir_check?.background?.setColorFilter(primaryColor, PorterDuff.Mode.SRC_IN) if (itemViews[pos] != null) {
selectedPositions.add(pos) itemViews[pos].dir_check?.background?.setColorFilter(primaryColor, PorterDuff.Mode.SRC_IN)
selectedPositions.add(pos)
}
} else { } else {
selectedPositions.remove(pos) selectedPositions.remove(pos)
} }
@ -350,7 +353,7 @@ class DirectoryAdapter(val activity: SimpleActivity, var dirs: MutableList<Direc
override fun onBindViewHolder(holder: ViewHolder, position: Int) { override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val dir = dirs[position] val dir = dirs[position]
itemViews.put(position, holder.bindView(dir, pinnedFolders.contains(dir.path), scrollVertically, isListViewType, textColor)) itemViews.put(position, holder.bindView(dir, pinnedFolders.contains(dir.path), scrollVertically, isListViewType, textColor, showMediaCount))
toggleItemSelection(selectedPositions.contains(position), position) toggleItemSelection(selectedPositions.contains(position), position)
holder.itemView.tag = holder holder.itemView.tag = holder
} }
@ -415,7 +418,7 @@ class DirectoryAdapter(val activity: SimpleActivity, var dirs: MutableList<Direc
class ViewHolder(val view: View, val adapterListener: MyAdapterListener, val activity: SimpleActivity, val multiSelectorCallback: ModalMultiSelectorCallback, class ViewHolder(val view: View, val adapterListener: MyAdapterListener, val activity: SimpleActivity, val multiSelectorCallback: ModalMultiSelectorCallback,
val multiSelector: MultiSelector, val listener: DirOperationsListener?, val isPickIntent: Boolean, val itemClick: (Directory) -> (Unit)) : val multiSelector: MultiSelector, val listener: DirOperationsListener?, val isPickIntent: Boolean, val itemClick: (Directory) -> (Unit)) :
SwappingHolder(view, MultiSelector()) { SwappingHolder(view, MultiSelector()) {
fun bindView(directory: Directory, isPinned: Boolean, scrollVertically: Boolean, isListView: Boolean, textColor: Int): View { fun bindView(directory: Directory, isPinned: Boolean, scrollVertically: Boolean, isListView: Boolean, textColor: Int, showMediaCount: Boolean): View {
itemView.apply { itemView.apply {
dir_name.text = directory.name dir_name.text = directory.name
dir_path?.text = "${directory.path.substringBeforeLast("/")}/" dir_path?.text = "${directory.path.substringBeforeLast("/")}/"
@ -423,6 +426,7 @@ class DirectoryAdapter(val activity: SimpleActivity, var dirs: MutableList<Direc
activity.loadImage(directory.tmb, dir_thumbnail, scrollVertically) activity.loadImage(directory.tmb, dir_thumbnail, scrollVertically)
dir_pin.beVisibleIf(isPinned) dir_pin.beVisibleIf(isPinned)
dir_sd_card.beVisibleIf(activity.isPathOnSD(directory.path)) dir_sd_card.beVisibleIf(activity.isPathOnSD(directory.path))
photo_cnt.beVisibleIf(showMediaCount)
if (isListView) { if (isListView) {
dir_name.setTextColor(textColor) dir_name.setTextColor(textColor)

View file

@ -42,8 +42,10 @@ class MediaAdapter(val activity: SimpleActivity, var media: MutableList<Medium>,
fun toggleItemSelection(select: Boolean, pos: Int) { fun toggleItemSelection(select: Boolean, pos: Int) {
if (select) { if (select) {
itemViews[pos]?.medium_check?.background?.setColorFilter(primaryColor, PorterDuff.Mode.SRC_IN) if (itemViews[pos] != null) {
selectedPositions.add(pos) itemViews[pos].medium_check?.background?.setColorFilter(primaryColor, PorterDuff.Mode.SRC_IN)
selectedPositions.add(pos)
}
} else { } else {
selectedPositions.remove(pos) selectedPositions.remove(pos)
} }

View file

@ -65,7 +65,7 @@ fun Activity.shareMedia(media: List<Medium>) {
Intent().apply { Intent().apply {
action = Intent.ACTION_SEND_MULTIPLE action = Intent.ACTION_SEND_MULTIPLE
type = "image/* video/*" type = uris.getMimeType()
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris) putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris)
startActivity(Intent.createChooser(this, shareTitle)) startActivity(Intent.createChooser(this, shareTitle))
@ -88,7 +88,7 @@ fun Activity.setAs(uri: Uri, file: File, showToast: Boolean = true): Boolean {
var success = false var success = false
Intent().apply { Intent().apply {
action = Intent.ACTION_ATTACH_DATA action = Intent.ACTION_ATTACH_DATA
setDataAndType(uri, file.getMimeType("image/*")) setDataAndType(uri, file.getMimeType())
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
val chooser = Intent.createChooser(this, getString(R.string.set_as)) val chooser = Intent.createChooser(this, getString(R.string.set_as))
@ -261,7 +261,6 @@ fun SimpleActivity.toggleFileVisibility(oldFile: File, hide: Boolean, callback:
} }
val newFile = File(path, filename) val newFile = File(path, filename)
renameFile(oldFile, newFile) { renameFile(oldFile, newFile) {
newFile.setLastModified(System.currentTimeMillis())
callback(newFile) callback(newFile)
} }
} }

View file

@ -3,12 +3,9 @@ package com.simplemobiletools.gallery.extensions
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.res.Configuration import android.content.res.Configuration
import android.database.Cursor
import android.graphics.Point import android.graphics.Point
import android.media.AudioManager import android.media.AudioManager
import android.net.Uri
import android.os.Build import android.os.Build
import android.provider.MediaStore
import android.view.WindowManager import android.view.WindowManager
import com.simplemobiletools.commons.extensions.humanizePath import com.simplemobiletools.commons.extensions.humanizePath
import com.simplemobiletools.gallery.activities.SettingsActivity import com.simplemobiletools.gallery.activities.SettingsActivity
@ -44,22 +41,6 @@ val Context.realScreenSize: Point
return size return size
} }
fun Context.getRealPathFromURI(uri: Uri): String? {
var cursor: Cursor? = null
try {
val projection = arrayOf(MediaStore.Images.Media.DATA)
cursor = contentResolver.query(uri, projection, null, null, null)
if (cursor?.moveToFirst() == true) {
val index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA)
return cursor.getString(index)
}
} catch (e: Exception) {
} finally {
cursor?.close()
}
return null
}
fun Context.getHumanizedFilename(path: String): String { fun Context.getHumanizedFilename(path: String): String {
val humanized = humanizePath(path) val humanized = humanizePath(path)
return humanized.substring(humanized.lastIndexOf("/") + 1) return humanized.substring(humanized.lastIndexOf("/") + 1)

View file

@ -275,7 +275,7 @@ class PhotoFragment : ViewPagerFragment() {
view.photo_details.apply { view.photo_details.apply {
text = getMediumExtendedDetails(medium) text = getMediumExtendedDetails(medium)
setTextColor(context.config.textColor) setTextColor(context.config.textColor)
beVisible() beVisibleIf(text.isNotEmpty())
onGlobalLayout { onGlobalLayout {
if (height != 0) { if (height != 0) {
val smallMargin = resources.getDimension(R.dimen.small_margin) val smallMargin = resources.getDimension(R.dimen.small_margin)

View file

@ -9,7 +9,6 @@ import android.os.Bundle
import android.os.Handler import android.os.Handler
import android.provider.Settings import android.provider.Settings
import android.util.DisplayMetrics import android.util.DisplayMetrics
import android.util.Log
import android.view.* import android.view.*
import android.view.animation.AnimationUtils import android.view.animation.AnimationUtils
import android.widget.SeekBar import android.widget.SeekBar
@ -21,11 +20,11 @@ import com.simplemobiletools.gallery.extensions.*
import com.simplemobiletools.gallery.helpers.MEDIUM import com.simplemobiletools.gallery.helpers.MEDIUM
import com.simplemobiletools.gallery.models.Medium import com.simplemobiletools.gallery.models.Medium
import kotlinx.android.synthetic.main.pager_video_item.view.* import kotlinx.android.synthetic.main.pager_video_item.view.*
import java.io.IOException
class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSeekBarChangeListener { class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSeekBarChangeListener {
private val CLICK_MAX_DURATION = 150 private val CLICK_MAX_DURATION = 150
private val SLIDE_INFO_FADE_DELAY = 1000L private val SLIDE_INFO_FADE_DELAY = 1000L
private val PROGRESS = "progress"
private var mMediaPlayer: MediaPlayer? = null private var mMediaPlayer: MediaPlayer? = null
private var mSurfaceView: SurfaceView? = null private var mSurfaceView: SurfaceView? = null
@ -40,6 +39,7 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
private var mIsFragmentVisible = false private var mIsFragmentVisible = false
private var mPlayOnPrepare = false private var mPlayOnPrepare = false
private var mStoredShowExtendedDetails = false private var mStoredShowExtendedDetails = false
private var wasInit = false
private var mStoredExtendedDetails = 0 private var mStoredExtendedDetails = 0
private var mCurrTime = 0 private var mCurrTime = 0
private var mDuration = 0 private var mDuration = 0
@ -59,11 +59,6 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
lateinit var medium: Medium lateinit var medium: Medium
lateinit var mTimeHolder: View lateinit var mTimeHolder: View
companion object {
private val TAG = VideoFragment::class.java.simpleName
private val PROGRESS = "progress"
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
mView = inflater.inflate(R.layout.pager_video_item, container, false) mView = inflater.inflate(R.layout.pager_video_item, container, false)
mTimeHolder = mView.video_time_holder mTimeHolder = mView.video_time_holder
@ -76,6 +71,7 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
mIsFullscreen = activity.window.decorView.systemUiVisibility and View.SYSTEM_UI_FLAG_FULLSCREEN == View.SYSTEM_UI_FLAG_FULLSCREEN mIsFullscreen = activity.window.decorView.systemUiVisibility and View.SYSTEM_UI_FLAG_FULLSCREEN == View.SYSTEM_UI_FLAG_FULLSCREEN
checkFullscreen() checkFullscreen()
wasInit = true
return mView return mView
} }
@ -129,21 +125,21 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
initTimeHolder() initTimeHolder()
checkExtendedDetails() checkExtendedDetails()
initMediaPlayer()
} }
override fun setMenuVisibility(menuVisible: Boolean) { override fun setMenuVisibility(menuVisible: Boolean) {
super.setMenuVisibility(menuVisible) super.setMenuVisibility(menuVisible)
if (mIsFragmentVisible && !menuVisible) {
pauseVideo()
releaseMediaPlayer()
}
mIsFragmentVisible = menuVisible mIsFragmentVisible = menuVisible
if (menuVisible) { if (menuVisible && wasInit) {
if (mSurfaceView != null && mSurfaceHolder!!.surface.isValid) { initMediaPlayer()
initMediaPlayer()
}
if (context?.config?.autoplayVideos == true) { if (context?.config?.autoplayVideos == true) {
playVideo() playVideo()
} }
} else if (mIsPlaying) {
pauseVideo()
} }
} }
@ -356,6 +352,8 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
if (activity == null || !isAdded) if (activity == null || !isAdded)
return return
initMediaPlayer()
mIsPlaying = !mIsPlaying mIsPlaying = !mIsPlaying
if (mIsPlaying) { if (mIsPlaying) {
playVideo() playVideo()
@ -383,8 +381,9 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
} }
private fun initMediaPlayer() { private fun initMediaPlayer() {
if (mMediaPlayer != null) if (mMediaPlayer != null || !mIsFragmentVisible) {
return return
}
try { try {
mMediaPlayer = MediaPlayer().apply { mMediaPlayer = MediaPlayer().apply {
@ -394,10 +393,9 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
setOnVideoSizeChangedListener({ mediaPlayer, width, height -> setVideoSize() }) setOnVideoSizeChangedListener({ mediaPlayer, width, height -> setVideoSize() })
setOnPreparedListener { videoPrepared(it) } setOnPreparedListener { videoPrepared(it) }
setAudioStreamType(AudioManager.STREAM_MUSIC) setAudioStreamType(AudioManager.STREAM_MUSIC)
prepareAsync() prepare()
} }
} catch (e: IOException) { } catch (e: Exception) {
Log.e(TAG, "init media player failed $e")
releaseMediaPlayer() releaseMediaPlayer()
} }
} }
@ -447,7 +445,9 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
} }
override fun surfaceCreated(holder: SurfaceHolder) { override fun surfaceCreated(holder: SurfaceHolder) {
mSurfaceHolder = holder
if (mIsFragmentVisible)
initMediaPlayer()
} }
override fun surfaceChanged(holder: SurfaceHolder, format: Int, width: Int, height: Int) { override fun surfaceChanged(holder: SurfaceHolder, format: Int, width: Int, height: Int) {
@ -468,7 +468,6 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
initMediaPlayer() initMediaPlayer()
if (mMediaPlayer == null) { if (mMediaPlayer == null) {
activity.toast(R.string.unknown_error_occurred)
return return
} }
@ -506,7 +505,7 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
mView.video_details.apply { mView.video_details.apply {
text = getMediumExtendedDetails(medium) text = getMediumExtendedDetails(medium)
setTextColor(context.config.textColor) setTextColor(context.config.textColor)
beVisible() beVisibleIf(text.isNotEmpty())
onGlobalLayout { onGlobalLayout {
if (height != 0) { if (height != 0) {
val smallMargin = resources.getDimension(R.dimen.small_margin) val smallMargin = resources.getDimension(R.dimen.small_margin)

View file

@ -245,6 +245,10 @@ class Config(context: Context) : BaseConfig(context) {
get() = prefs.getBoolean(ALLOW_VIDEO_GESTURES, true) get() = prefs.getBoolean(ALLOW_VIDEO_GESTURES, true)
set(allowVideoGestures) = prefs.edit().putBoolean(ALLOW_VIDEO_GESTURES, allowVideoGestures).apply() set(allowVideoGestures) = prefs.edit().putBoolean(ALLOW_VIDEO_GESTURES, allowVideoGestures).apply()
var showMediaCount: Boolean
get() = prefs.getBoolean(SHOW_MEDIA_COUNT, true)
set(showMediaCount) = prefs.edit().putBoolean(SHOW_MEDIA_COUNT, showMediaCount).apply()
var slideshowInterval: Int var slideshowInterval: Int
get() = prefs.getInt(SLIDESHOW_INTERVAL, SLIDESHOW_DEFAULT_INTERVAL) get() = prefs.getInt(SLIDESHOW_INTERVAL, SLIDESHOW_DEFAULT_INTERVAL)
set(slideshowInterval) = prefs.edit().putInt(SLIDESHOW_INTERVAL, slideshowInterval).apply() set(slideshowInterval) = prefs.edit().putInt(SLIDESHOW_INTERVAL, slideshowInterval).apply()

View file

@ -36,6 +36,7 @@ val HIDE_SYSTEM_UI = "hide_system_ui"
val REPLACE_SHARE_WITH_ROTATE = "replace_share_with_rotate" val REPLACE_SHARE_WITH_ROTATE = "replace_share_with_rotate"
val DELETE_EMPTY_FOLDERS = "delete_empty_folders" val DELETE_EMPTY_FOLDERS = "delete_empty_folders"
val ALLOW_VIDEO_GESTURES = "allow_video_gestures" val ALLOW_VIDEO_GESTURES = "allow_video_gestures"
val SHOW_MEDIA_COUNT = "show_media_count"
val TEMP_FOLDER_PATH = "temp_folder_path" val TEMP_FOLDER_PATH = "temp_folder_path"
val VIEW_TYPE_FOLDERS = "view_type_folders" val VIEW_TYPE_FOLDERS = "view_type_folders"
val VIEW_TYPE_FILES = "view_type_files" val VIEW_TYPE_FILES = "view_type_files"

View file

@ -1,10 +1,9 @@
package com.simplemobiletools.gallery.models package com.simplemobiletools.gallery.models
import com.simplemobiletools.commons.extensions.getMimeType import com.simplemobiletools.commons.extensions.getMimeTypeFromPath
import com.simplemobiletools.commons.extensions.isGif import com.simplemobiletools.commons.extensions.isGif
import com.simplemobiletools.commons.extensions.isPng import com.simplemobiletools.commons.extensions.isPng
import com.simplemobiletools.commons.helpers.* import com.simplemobiletools.commons.helpers.*
import java.io.File
import java.io.Serializable import java.io.Serializable
data class Medium(var name: String, var path: String, val video: Boolean, val modified: Long, val taken: Long, val size: Long) : Serializable, Comparable<Medium> { data class Medium(var name: String, var path: String, val video: Boolean, val modified: Long, val taken: Long, val size: Long) : Serializable, Comparable<Medium> {
@ -21,7 +20,7 @@ data class Medium(var name: String, var path: String, val video: Boolean, val mo
fun isImage() = !isGif() && !video fun isImage() = !isGif() && !video
fun getMimeType() = File(path).getMimeType() fun getMimeType() = path.getMimeTypeFromPath()
override fun compareTo(other: Medium): Int { override fun compareTo(other: Medium): Int {
var result: Int var result: Int

View file

@ -328,6 +328,26 @@
</RelativeLayout> </RelativeLayout>
<RelativeLayout
android:id="@+id/settings_show_media_count_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/medium_margin"
android:background="?attr/selectableItemBackground"
android:padding="@dimen/activity_margin">
<com.simplemobiletools.commons.views.MySwitchCompat
android:id="@+id/settings_show_media_count"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
android:clickable="false"
android:paddingLeft="@dimen/medium_margin"
android:paddingStart="@dimen/medium_margin"
android:text="@string/show_media_count"/>
</RelativeLayout>
<RelativeLayout <RelativeLayout
android:id="@+id/settings_show_extended_details_holder" android:id="@+id/settings_show_extended_details_holder"
android:layout_width="match_parent" android:layout_width="match_parent"

View file

@ -125,6 +125,7 @@
<string name="hide_system_ui_at_fullscreen">Automatically hide system UI at fullscreen media</string> <string name="hide_system_ui_at_fullscreen">Automatically hide system UI at fullscreen media</string>
<string name="delete_empty_folders">Delete empty folders after deleting their content</string> <string name="delete_empty_folders">Delete empty folders after deleting their content</string>
<string name="allow_video_gestures">Allow controlling video volume and brightness with vertical gestures</string> <string name="allow_video_gestures">Allow controlling video volume and brightness with vertical gestures</string>
<string name="show_media_count">Show folder media count on the main view</string>
<string name="replace_share_with_rotate">Replace Share with Rotate at fullscreen menu</string> <string name="replace_share_with_rotate">Replace Share with Rotate at fullscreen menu</string>
<string name="show_extended_details">Show extended details over fullscreen media</string> <string name="show_extended_details">Show extended details over fullscreen media</string>
<string name="manage_extended_details">Manage extended details</string> <string name="manage_extended_details">Manage extended details</string>

View file

@ -125,6 +125,7 @@
<string name="hide_system_ui_at_fullscreen">Automatically hide system UI at fullscreen media</string> <string name="hide_system_ui_at_fullscreen">Automatically hide system UI at fullscreen media</string>
<string name="delete_empty_folders">Delete empty folders after deleting their content</string> <string name="delete_empty_folders">Delete empty folders after deleting their content</string>
<string name="allow_video_gestures">Allow controlling video volume and brightness with vertical gestures</string> <string name="allow_video_gestures">Allow controlling video volume and brightness with vertical gestures</string>
<string name="show_media_count">Show folder media count on the main view</string>
<string name="replace_share_with_rotate">Replace Share with Rotate at fullscreen menu</string> <string name="replace_share_with_rotate">Replace Share with Rotate at fullscreen menu</string>
<string name="show_extended_details">Show extended details over fullscreen media</string> <string name="show_extended_details">Show extended details over fullscreen media</string>
<string name="manage_extended_details">Manage extended details</string> <string name="manage_extended_details">Manage extended details</string>

View file

@ -125,6 +125,7 @@
<string name="hide_system_ui_at_fullscreen">Systemleisten ausblenden im Vollbild</string> <string name="hide_system_ui_at_fullscreen">Systemleisten ausblenden im Vollbild</string>
<string name="delete_empty_folders">Nach Löschen leere Ordner löschen</string> <string name="delete_empty_folders">Nach Löschen leere Ordner löschen</string>
<string name="allow_video_gestures">Gesten für Videolautstärke/Helligkeit</string> <string name="allow_video_gestures">Gesten für Videolautstärke/Helligkeit</string>
<string name="show_media_count">Show folder media count on the main view</string>
<string name="replace_share_with_rotate">Teilen/Drehen im Vollbild-Menü vertauschen</string> <string name="replace_share_with_rotate">Teilen/Drehen im Vollbild-Menü vertauschen</string>
<string name="show_extended_details">Eigenschaften anzeigen im Vollbild</string> <string name="show_extended_details">Eigenschaften anzeigen im Vollbild</string>
<string name="manage_extended_details">Eigenschaften auswählen</string> <string name="manage_extended_details">Eigenschaften auswählen</string>

View file

@ -125,6 +125,7 @@
<string name="hide_system_ui_at_fullscreen">Ocultar automáticamente la interfaz de usuario del sistema en medios de pantalla completa</string> <string name="hide_system_ui_at_fullscreen">Ocultar automáticamente la interfaz de usuario del sistema en medios de pantalla completa</string>
<string name="delete_empty_folders">Delete empty folders after deleting their content</string> <string name="delete_empty_folders">Delete empty folders after deleting their content</string>
<string name="allow_video_gestures">Allow controlling video volume and brightness with vertical gestures</string> <string name="allow_video_gestures">Allow controlling video volume and brightness with vertical gestures</string>
<string name="show_media_count">Show folder media count on the main view</string>
<string name="replace_share_with_rotate">Reemplazar Compartir con Girar en el menú de pantalla completa</string> <string name="replace_share_with_rotate">Reemplazar Compartir con Girar en el menú de pantalla completa</string>
<string name="show_extended_details">Show extended details over fullscreen media</string> <string name="show_extended_details">Show extended details over fullscreen media</string>
<string name="manage_extended_details">Manage extended details</string> <string name="manage_extended_details">Manage extended details</string>

View file

@ -125,6 +125,7 @@
<string name="hide_system_ui_at_fullscreen">Piilota järjestelmän UI automaattisesti koko näytön mediassa</string> <string name="hide_system_ui_at_fullscreen">Piilota järjestelmän UI automaattisesti koko näytön mediassa</string>
<string name="delete_empty_folders">Poista tyhjät kansiot kansion tyhjennyksen jälkeen</string> <string name="delete_empty_folders">Poista tyhjät kansiot kansion tyhjennyksen jälkeen</string>
<string name="allow_video_gestures">Salli videon äänenvoimakkuuden ja kirkkauden säätö pystysuorilla eleillä</string> <string name="allow_video_gestures">Salli videon äänenvoimakkuuden ja kirkkauden säätö pystysuorilla eleillä</string>
<string name="show_media_count">Show folder media count on the main view</string>
<string name="replace_share_with_rotate">Korvaa jakaminen kääntämisellä koko näytön tilassa</string> <string name="replace_share_with_rotate">Korvaa jakaminen kääntämisellä koko näytön tilassa</string>
<string name="show_extended_details">Show extended details over fullscreen media</string> <string name="show_extended_details">Show extended details over fullscreen media</string>
<string name="manage_extended_details">Manage extended details</string> <string name="manage_extended_details">Manage extended details</string>

View file

@ -125,6 +125,7 @@
<string name="hide_system_ui_at_fullscreen">Masquer automatiquement l\'interface utilisateur si média plein écran</string> <string name="hide_system_ui_at_fullscreen">Masquer automatiquement l\'interface utilisateur si média plein écran</string>
<string name="delete_empty_folders">Supprimer les dossiers vides après avoir supprimé leur contenu</string> <string name="delete_empty_folders">Supprimer les dossiers vides après avoir supprimé leur contenu</string>
<string name="allow_video_gestures">Permettre le contrôle du volume vidéo et de la luminosité avec des gestes verticaux</string> <string name="allow_video_gestures">Permettre le contrôle du volume vidéo et de la luminosité avec des gestes verticaux</string>
<string name="show_media_count">Show folder media count on the main view</string>
<string name="replace_share_with_rotate">Remplacer Partager par Pivoter si menu en plein écran</string> <string name="replace_share_with_rotate">Remplacer Partager par Pivoter si menu en plein écran</string>
<string name="show_extended_details">Afficher les détails supplémentaires par dessus le média en plein écran</string> <string name="show_extended_details">Afficher les détails supplémentaires par dessus le média en plein écran</string>
<string name="manage_extended_details">Gérer les détails supplémentaires</string> <string name="manage_extended_details">Gérer les détails supplémentaires</string>

View file

@ -125,6 +125,7 @@
<string name="hide_system_ui_at_fullscreen">Automatically hide system UI at fullscreen media</string> <string name="hide_system_ui_at_fullscreen">Automatically hide system UI at fullscreen media</string>
<string name="delete_empty_folders">Delete empty folders after deleting their content</string> <string name="delete_empty_folders">Delete empty folders after deleting their content</string>
<string name="allow_video_gestures">Allow controlling video volume and brightness with vertical gestures</string> <string name="allow_video_gestures">Allow controlling video volume and brightness with vertical gestures</string>
<string name="show_media_count">Show folder media count on the main view</string>
<string name="replace_share_with_rotate">Replace Share with Rotate at fullscreen menu</string> <string name="replace_share_with_rotate">Replace Share with Rotate at fullscreen menu</string>
<string name="show_extended_details">Show extended details over fullscreen media</string> <string name="show_extended_details">Show extended details over fullscreen media</string>
<string name="manage_extended_details">Manage extended details</string> <string name="manage_extended_details">Manage extended details</string>

View file

@ -125,6 +125,7 @@
<string name="hide_system_ui_at_fullscreen">Nascondi UI di sistema con media a schermo intero</string> <string name="hide_system_ui_at_fullscreen">Nascondi UI di sistema con media a schermo intero</string>
<string name="delete_empty_folders">Elimina cartelle vuote dopo averne eliminato il contenuto</string> <string name="delete_empty_folders">Elimina cartelle vuote dopo averne eliminato il contenuto</string>
<string name="allow_video_gestures">Gestisci il volume e la luminosità dei video con gesti verticali</string> <string name="allow_video_gestures">Gestisci il volume e la luminosità dei video con gesti verticali</string>
<string name="show_media_count">Show folder media count on the main view</string>
<string name="replace_share_with_rotate">Sostituisci Condividi con Ruota a schermo intero</string> <string name="replace_share_with_rotate">Sostituisci Condividi con Ruota a schermo intero</string>
<string name="show_extended_details">Show extended details over fullscreen media</string> <string name="show_extended_details">Show extended details over fullscreen media</string>
<string name="manage_extended_details">Manage extended details</string> <string name="manage_extended_details">Manage extended details</string>

View file

@ -125,6 +125,7 @@
<string name="hide_system_ui_at_fullscreen">フルスクリーン時にシステムUIを非表示にする</string> <string name="hide_system_ui_at_fullscreen">フルスクリーン時にシステムUIを非表示にする</string>
<string name="delete_empty_folders">メディアの削除後にフォルダーが空になった場合、そのフォルダーを削除する</string> <string name="delete_empty_folders">メディアの削除後にフォルダーが空になった場合、そのフォルダーを削除する</string>
<string name="allow_video_gestures">ビデオ再生中に、音量と明るさを縦方向のジェスチャーで変更する</string> <string name="allow_video_gestures">ビデオ再生中に、音量と明るさを縦方向のジェスチャーで変更する</string>
<string name="show_media_count">Show folder media count on the main view</string>
<string name="replace_share_with_rotate">フルスクリーンメニューの「共有」を「回転」に置き換える</string> <string name="replace_share_with_rotate">フルスクリーンメニューの「共有」を「回転」に置き換える</string>
<string name="show_extended_details">Show extended details over fullscreen media</string> <string name="show_extended_details">Show extended details over fullscreen media</string>
<string name="manage_extended_details">Manage extended details</string> <string name="manage_extended_details">Manage extended details</string>

View file

@ -25,7 +25,7 @@
<string name="set_as">Ustaw jako</string> <string name="set_as">Ustaw jako</string>
<string name="volume">Głośność</string> <string name="volume">Głośność</string>
<string name="brightness">Jasność</string> <string name="brightness">Jasność</string>
<string name="do_not_ask_again">Do not ask again in this session</string> <string name="do_not_ask_again">Nie pytaj więcej w tej sesji</string>
<!-- Filter --> <!-- Filter -->
<string name="filter_media">Filtruj multimedia</string> <string name="filter_media">Filtruj multimedia</string>
@ -125,9 +125,10 @@
<string name="hide_system_ui_at_fullscreen">Ukrywaj interfejs przy pełnoekranowym podglądzie</string> <string name="hide_system_ui_at_fullscreen">Ukrywaj interfejs przy pełnoekranowym podglądzie</string>
<string name="delete_empty_folders">Usuwaj puste foldery po usunięciu ich zawartości</string> <string name="delete_empty_folders">Usuwaj puste foldery po usunięciu ich zawartości</string>
<string name="allow_video_gestures">Zezwalaj na kontrolę jasności i głośności filmów pionowymi gestami</string> <string name="allow_video_gestures">Zezwalaj na kontrolę jasności i głośności filmów pionowymi gestami</string>
<string name="show_media_count">Pokazuj liczbę elementów w folderach w głównym widoku</string>
<string name="replace_share_with_rotate">Zamień funkcję udostępniania na obracanie w menu pełnoekranowym</string> <string name="replace_share_with_rotate">Zamień funkcję udostępniania na obracanie w menu pełnoekranowym</string>
<string name="show_extended_details">Show extended details over fullscreen media</string> <string name="show_extended_details">Dodatkowe szczegóły przy podglądzie pełnoekranowym</string>
<string name="manage_extended_details">Manage extended details</string> <string name="manage_extended_details">Zarządzaj dodatkowymi szczegółami</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have --> <!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars --> <!-- Short description has to have less than 80 chars -->

View file

@ -22,18 +22,18 @@
<string name="change_cover_image">Trocar imagem de capa</string> <string name="change_cover_image">Trocar imagem de capa</string>
<string name="select_photo">Selecionar foto</string> <string name="select_photo">Selecionar foto</string>
<string name="use_default">Usar padrão</string> <string name="use_default">Usar padrão</string>
<string name="set_as">Set as</string> <string name="set_as">Definir como</string>
<string name="volume">Volume</string> <string name="volume">Volume</string>
<string name="brightness">Brightness</string> <string name="brightness">Brilho</string>
<string name="do_not_ask_again">Do not ask again in this session</string> <string name="do_not_ask_again">Não perguntar novamente por enquanto</string>
<!-- Filter --> <!-- Filter -->
<string name="filter_media">Filter media</string> <string name="filter_media">Filtrar mídia</string>
<string name="images">Images</string> <string name="images">Imagens</string>
<string name="videos">Videos</string> <string name="videos">Vídeos</string>
<string name="gifs">GIFs</string> <string name="gifs">GIFs</string>
<string name="no_media_with_filters">No media files have been found with the selected filters.</string> <string name="no_media_with_filters">Nenhum arquivo de mídia encontrado a partir dos filtros selecionados.</string>
<string name="change_filters_underlined"><u>Change filters</u></string> <string name="change_filters_underlined"><u>Mudar filtros</u></string>
<!-- Hide / Exclude --> <!-- Hide / Exclude -->
<string name="hide_folder_description">Esta opção oculta uma pasta com a adição de um arquivo \'.nomedia\' dentro dela, e irá ocultar todas as subpastas que estejam dentro da mesma. Você poderá rever essas pastas com a opção \'Mostrar pastas ocultas\'. Continuar?</string> <string name="hide_folder_description">Esta opção oculta uma pasta com a adição de um arquivo \'.nomedia\' dentro dela, e irá ocultar todas as subpastas que estejam dentro da mesma. Você poderá rever essas pastas com a opção \'Mostrar pastas ocultas\'. Continuar?</string>
@ -77,7 +77,7 @@
<string name="flip">Inverter</string> <string name="flip">Inverter</string>
<string name="flip_horizontally">Horizontalmente</string> <string name="flip_horizontally">Horizontalmente</string>
<string name="flip_vertically">Verticalmente</string> <string name="flip_vertically">Verticalmente</string>
<string name="edit_with">Edit with</string> <string name="edit_with">Editar com</string>
<!-- Set wallpaper --> <!-- Set wallpaper -->
<string name="simple_wallpaper">Simple Wallpaper</string> <string name="simple_wallpaper">Simple Wallpaper</string>
@ -92,21 +92,21 @@
<!-- Slideshow --> <!-- Slideshow -->
<string name="slideshow">Slideshow</string> <string name="slideshow">Slideshow</string>
<string name="interval">Interval (seconds):</string> <string name="interval">Intervalo (segundos):</string>
<string name="include_photos">Include photos</string> <string name="include_photos">Incluir fotos</string>
<string name="include_videos">Include videos</string> <string name="include_videos">Incluir videos</string>
<string name="include_gifs">Include GIFs</string> <string name="include_gifs">Incluir GIFs</string>
<string name="random_order">Random order</string> <string name="random_order">Ordem aleatória</string>
<string name="use_fade">Use fade animations</string> <string name="use_fade">Usar animação de esmaecimento</string>
<string name="move_backwards">Move backwards</string> <string name="move_backwards">Retroceder</string>
<string name="loop_slideshow">Loop slideshow</string> <string name="loop_slideshow">Apresentação em ciclo</string>
<string name="slideshow_ended">The slideshow ended</string> <string name="slideshow_ended">Fim da apresentação</string>
<string name="no_media_for_slideshow">No media for the slideshow have been found</string> <string name="no_media_for_slideshow">Nenhuma mídia encontrada para a apresentação</string>
<!-- View types --> <!-- View types -->
<string name="change_view_type">Change view type</string> <string name="change_view_type">Alterar modo de visualização</string>
<string name="grid">Grid</string> <string name="grid">Grade</string>
<string name="list">List</string> <string name="list">Lista</string>
<!-- Settings --> <!-- Settings -->
<string name="show_hidden_media">Mostrar pastas ocultas</string> <string name="show_hidden_media">Mostrar pastas ocultas</string>
@ -122,12 +122,13 @@
<string name="screen_rotation_aspect_ratio">Proporção da mídia</string> <string name="screen_rotation_aspect_ratio">Proporção da mídia</string>
<string name="dark_background_at_fullscreen">Fundo de tela escuro em mídia tela cheia</string> <string name="dark_background_at_fullscreen">Fundo de tela escuro em mídia tela cheia</string>
<string name="scroll_thumbnails_horizontally">Rolar miniaturas horizontalmente</string> <string name="scroll_thumbnails_horizontally">Rolar miniaturas horizontalmente</string>
<string name="hide_system_ui_at_fullscreen">Automatically hide system UI at fullscreen media</string> <string name="hide_system_ui_at_fullscreen">Esconder interface do sistema automaticamente quando em tela cheia</string>
<string name="delete_empty_folders">Delete empty folders after deleting their content</string> <string name="delete_empty_folders">Apagar pastas vazias após deleter seu conteúdo</string>
<string name="allow_video_gestures">Allow controlling video volume and brightness with vertical gestures</string> <string name="allow_video_gestures">Permitir controle do volume e brilho com gestos na vertical</string>
<string name="replace_share_with_rotate">Replace Share with Rotate at fullscreen menu</string> <string name="show_media_count">Show folder media count on the main view</string>
<string name="show_extended_details">Show extended details over fullscreen media</string> <string name="replace_share_with_rotate">Substituir botão "Compartilhar" por "Rotação de tela" quando em tela cheia</string>
<string name="manage_extended_details">Manage extended details</string> <string name="show_extended_details">Exibir detalhes extendidos quando em tela cheia</string>
<string name="manage_extended_details">Gerenciar detalhes extendidos</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have --> <!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars --> <!-- Short description has to have less than 80 chars -->

View file

@ -125,6 +125,7 @@
<string name="hide_system_ui_at_fullscreen">Ocultar interface do sistema se em ecrã completo</string> <string name="hide_system_ui_at_fullscreen">Ocultar interface do sistema se em ecrã completo</string>
<string name="delete_empty_folders">Apagar as pastas vazias depois de remover o seu conteúdo</string> <string name="delete_empty_folders">Apagar as pastas vazias depois de remover o seu conteúdo</string>
<string name="allow_video_gestures">Permitir controlo do volume e brilho dos vídeos através de gestos verticais</string> <string name="allow_video_gestures">Permitir controlo do volume e brilho dos vídeos através de gestos verticais</string>
<string name="show_media_count">Show folder media count on the main view</string>
<string name="replace_share_with_rotate">Substituir a opção Partilhar pela opção Rodar se em ecrã completo</string> <string name="replace_share_with_rotate">Substituir a opção Partilhar pela opção Rodar se em ecrã completo</string>
<string name="show_extended_details">Show extended details over fullscreen media</string> <string name="show_extended_details">Show extended details over fullscreen media</string>
<string name="manage_extended_details">Manage extended details</string> <string name="manage_extended_details">Manage extended details</string>

View file

@ -125,6 +125,7 @@
<string name="hide_system_ui_at_fullscreen">Автоматически скрывать системный интерфейс в полноэкранном режиме</string> <string name="hide_system_ui_at_fullscreen">Автоматически скрывать системный интерфейс в полноэкранном режиме</string>
<string name="delete_empty_folders">Удалять пустые папки после удаления их содержимого</string> <string name="delete_empty_folders">Удалять пустые папки после удаления их содержимого</string>
<string name="allow_video_gestures">Управлять громкостью и яркостью видео с помощью вертикальных жестов</string> <string name="allow_video_gestures">Управлять громкостью и яркостью видео с помощью вертикальных жестов</string>
<string name="show_media_count">Show folder media count on the main view</string>
<string name="replace_share_with_rotate">Заменить \'Поделиться\' на \'Повернуть\' в меню полноэкранного режима</string> <string name="replace_share_with_rotate">Заменить \'Поделиться\' на \'Повернуть\' в меню полноэкранного режима</string>
<string name="show_extended_details">Show extended details over fullscreen media</string> <string name="show_extended_details">Show extended details over fullscreen media</string>
<string name="manage_extended_details">Manage extended details</string> <string name="manage_extended_details">Manage extended details</string>

View file

@ -125,6 +125,7 @@
<string name="hide_system_ui_at_fullscreen">Automaticky skrývať systémové lišty pri celoobrazovkových médiách</string> <string name="hide_system_ui_at_fullscreen">Automaticky skrývať systémové lišty pri celoobrazovkových médiách</string>
<string name="delete_empty_folders">Odstrániť prázdne priečinky po vymazaní ich obsahu</string> <string name="delete_empty_folders">Odstrániť prázdne priečinky po vymazaní ich obsahu</string>
<string name="allow_video_gestures">Povoliť ovládanie hlasitosti a jasu videí vertikálnymi ťahmi</string> <string name="allow_video_gestures">Povoliť ovládanie hlasitosti a jasu videí vertikálnymi ťahmi</string>
<string name="show_media_count">Zobraziť počet médií v priečinku na hlavnej obrazovke</string>
<string name="replace_share_with_rotate">Nahradiť Zdieľanie s Otočením v celoobrazovkovom menu</string> <string name="replace_share_with_rotate">Nahradiť Zdieľanie s Otočením v celoobrazovkovom menu</string>
<string name="show_extended_details">Zobraziť rozšírené vlastnosti ponad celoobrazovkové médiá</string> <string name="show_extended_details">Zobraziť rozšírené vlastnosti ponad celoobrazovkové médiá</string>
<string name="manage_extended_details">Spravovať rozšírené vlastnosti</string> <string name="manage_extended_details">Spravovať rozšírené vlastnosti</string>

View file

@ -125,6 +125,7 @@
<string name="hide_system_ui_at_fullscreen">Dölj systemanvändargränssnittet automatiskt när media visas i helskärmsläge</string> <string name="hide_system_ui_at_fullscreen">Dölj systemanvändargränssnittet automatiskt när media visas i helskärmsläge</string>
<string name="delete_empty_folders">Ta bort tomma mappar när deras innehåll tas bort</string> <string name="delete_empty_folders">Ta bort tomma mappar när deras innehåll tas bort</string>
<string name="allow_video_gestures">Tillåt styrning av videovolym och videoljusstyrka med vertikala gester</string> <string name="allow_video_gestures">Tillåt styrning av videovolym och videoljusstyrka med vertikala gester</string>
<string name="show_media_count">Show folder media count on the main view</string>
<string name="replace_share_with_rotate">Ersätt Dela med Rotera i helskärmsmenyn</string> <string name="replace_share_with_rotate">Ersätt Dela med Rotera i helskärmsmenyn</string>
<string name="show_extended_details">Show extended details over fullscreen media</string> <string name="show_extended_details">Show extended details over fullscreen media</string>
<string name="manage_extended_details">Manage extended details</string> <string name="manage_extended_details">Manage extended details</string>

View file

@ -125,6 +125,7 @@
<string name="hide_system_ui_at_fullscreen">Automatically hide system UI at fullscreen media</string> <string name="hide_system_ui_at_fullscreen">Automatically hide system UI at fullscreen media</string>
<string name="delete_empty_folders">Delete empty folders after deleting their content</string> <string name="delete_empty_folders">Delete empty folders after deleting their content</string>
<string name="allow_video_gestures">Allow controlling video volume and brightness with vertical gestures</string> <string name="allow_video_gestures">Allow controlling video volume and brightness with vertical gestures</string>
<string name="show_media_count">Show folder media count on the main view</string>
<string name="replace_share_with_rotate">Replace Share with Rotate at fullscreen menu</string> <string name="replace_share_with_rotate">Replace Share with Rotate at fullscreen menu</string>
<string name="show_extended_details">Show extended details over fullscreen media</string> <string name="show_extended_details">Show extended details over fullscreen media</string>
<string name="manage_extended_details">Manage extended details</string> <string name="manage_extended_details">Manage extended details</string>

View file

@ -1,341 +1,150 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="abc_action_bar_home_description">转到主屏幕</string>
<string name="abc_action_bar_home_description_format">%1$s%2$s</string>
<string name="abc_action_bar_home_subtitle_description_format">%1$s - %2$s%3$s</string>
<string name="abc_action_bar_up_description">转到上一层级</string>
<string name="abc_action_menu_overflow_description">更多选项</string>
<string name="abc_action_mode_done">完成</string>
<string name="abc_activity_chooser_view_see_all">查看全部</string>
<string name="abc_activitychooserview_choose_application">选择应用</string>
<string name="abc_capital_off">关闭</string>
<string name="abc_capital_on">开启</string>
<string name="abc_search_hint">搜索…</string>
<string name="abc_searchview_description_clear">清除查询</string>
<string name="abc_searchview_description_query">搜索查询</string>
<string name="abc_searchview_description_search">搜索</string>
<string name="abc_searchview_description_submit">提交查询</string>
<string name="abc_searchview_description_voice">语音搜索</string>
<string name="abc_shareactionprovider_share_with">分享方式</string>
<string name="abc_shareactionprovider_share_with_application">通过%s分享</string>
<string name="abc_toolbar_collapse_description">收起</string>
<string name="fingerprint_acquired_imager_dirty">指纹传感器有脏污。请擦拭干净,然后重试。</string>
<string name="fingerprint_acquired_insufficient">无法处理指纹,请重试。</string>
<string name="fingerprint_acquired_partial">仅检测到部分指纹,请重试。</string>
<string name="fingerprint_acquired_too_fast">手指移动太快,请重试。</string>
<string name="fingerprint_acquired_too_slow">手指移动太慢,请重试。</string>
<string name="fingerprint_error_canceled">指纹操作已取消。</string>
<string name="fingerprint_error_hw_not_available">指纹硬件无法使用。</string>
<string name="fingerprint_error_lockout">尝试次数过多,请稍后重试。</string>
<string name="fingerprint_error_no_space">无法存储指纹。请移除一个现有的指纹。</string>
<string name="fingerprint_error_timeout">指纹录入操作超时,请重试。</string>
<string name="fingerprint_error_unable_to_process">请重试。</string>
<string name="fingerprint_not_recognized">无法识别</string>
<string name="fingerprints">指纹:</string>
<string name="search_menu_title">搜索</string>
<string name="status_bar_notification_info_overflow">999+</string>
<string name="about">关于</string>
<string name="add_fingerprint">添加指纹</string>
<string name="add_folder">添加目录</string>
<string name="additional_info">额外信息</string>
<string name="album">专辑</string>
<string name="all_folders">所有目录</string>
<string name="allow_video_gestures">使用纵向滑动手势控制视频音量和亮度</string>
<string name="an_error_occurred">啊哦,出错啦: %s</string>
<string name="animate_gifs">GIF 缩略图</string>
<string name="app_launcher_name">简约图库</string>
<string name="app_long_description">一个观看照片和视频的简单实用工具。项目可以根据日期、大小、名称来递增或递减排序,照片可以缩放。媒体文件根据屏幕的大小排列在多个方格中,您可以使用缩放手势来调整每一列的方格数量。媒体文件可以被重命名、分享、删除、复制以及移动。照片亦可被剪切、旋转或是直接在应用中设为壁纸。 相册亦提供能让第三方应用预览图片/视频、向电子邮件客户端添加附件等的功能。非常适合日常使用。 应用不包含广告与不必要的权限。它是完全开放源代码的,并内置自定义颜色主题。 这个应用只是一系列应用中的一小部份。您可以在 http://www.simplemobiletools.com 找到其余的应用。</string>
<string name="app_name">简约图库</string> <string name="app_name">简约图库</string>
<string name="app_short_description">一个没有广告,用来观看照片及视频的相册。</string> <string name="app_launcher_name">简约图库</string>
<string name="app_version">应用版本:%1$s</string>
<string name="append">"应用到 '_1'"</string>
<string name="apply_to_all">应用到全部冲突项</string>
<string name="artist">艺术家</string>
<string name="ascending">递增</string>
<string name="authentication_blocked">验证已被阻止,请稍后再试</string>
<string name="authentication_failed">验证失败</string>
<string name="autoplay_videos">自动播放</string>
<string name="background_color">背景色</string>
<string name="brightness">亮度</string>
<string name="camera">相机</string>
<string name="cancel">取消</string>
<string name="change_cover_image">更改封面图片</string>
<string name="change_filters_underlined"><u>更改过滤器</u></string>
<string name="change_view_type">更改视图类型</string>
<string name="changing_color_description">更改颜色将切换到自定义主题</string>
<string name="click_select_destination">点击此处以设置目标路径</string>
<string name="confirm_selection">确认选择</string>
<string name="confirm_storage_access_text">请选择 SD 卡根目录并授予写权限</string>
<string name="confirm_storage_access_text_sd">如果您未找到 SD 卡目录,请尝试</string>
<string name="confirm_storage_access_title">确认外部存储器访问权限</string>
<string name="copy">复制</string>
<string name="copy_failed">无法复制文件</string>
<string name="copy_move">复制/移动</string>
<string name="copy_move_failed">操作失败</string>
<string name="copy_to">复制到</string>
<string name="copying">正在复制…</string>
<string name="copying_success">复制成功</string>
<string name="copying_success_partial">无法复制相同文件</string>
<string name="copyright">v %1$s Copyright © Simple Mobile Tools %2$d</string>
<string name="could_not_create_file">创建文件 %s 失败</string>
<string name="could_not_create_folder">创建文件夹 %s 失败</string>
<string name="create_new">新建</string>
<string name="create_new_folder">新建文件夹</string>
<string name="crop_thumbnails">裁剪缩略图</string>
<string name="cropper_title">Android Image Cropper图像裁剪和旋转</string>
<string name="custom">自定义</string>
<string name="customize_colors">自定义颜色</string>
<string name="dark_background_at_fullscreen">全屏时黑色背景</string>
<string name="dark_theme">深色主题</string>
<string name="date_taken">拍摄日期</string>
<string name="delete">删除</string>
<string name="delete_empty_folders">删除没有内容的空文件夹</string>
<string name="descending">递减</string>
<string name="destination">目标路径</string>
<string name="device_os">设备系统:%1$s</string>
<string name="direct_children_count">子目录数</string>
<string name="discard">丢弃</string>
<string name="do_not_ask_again">不再询问</string>
<string name="donate">捐赠</string>
<string name="donate_please">"您已使用此应用一段时间了。
可您知道么,我并不就职于一个大公司。开发应用耗时耗力,且我想依旧保持免费,您的捐赠会给我更多动力。
您可以通过购买付费应用 Simple Thank You 或捐赠比特币来支持我。
更多信息请查阅 http://simplemobiletools.com/donate.
非常感谢!"</string>
<string name="donate_underlined"><u>捐赠</u></string>
<string name="duration">时长</string>
<string name="edit">编辑</string> <string name="edit">编辑</string>
<string name="edit_image_with">编辑方式:</string> <string name="open_camera">打开相机</string>
<string name="edit_with">编辑方式</string> <string name="open_with">打开方式</string>
<string name="editor">编辑器</string> <string name="no_app_found">未找到可用应用</string>
<string name="email_label">发送反馈</string> <string name="hidden">(隐藏)</string>
<string name="empty_name">请输入名称</string> <string name="pin_folder">锁定目录</string>
<string name="enter_pin">输入密码</string> <string name="unpin_folder">解除锁定目录</string>
<string name="error_saving_file">不能覆盖源文件</string> <string name="show_all">文件视图</string>
<string name="exclude">排除</string> <string name="all_folders">所有目录</string>
<string name="exclude_folder_description">目录及其子目录中的媒体将不会在 Simple Gallery 中显示,您可以在设置更改。</string> <string name="folder_view">目录视图</string>
<string name="exclude_folder_parent">是否排除父目录?</string> <string name="other_folder">其他目录</string>
<string name="excluded_activity_placeholder">此目录及其子目录中的媒体将不会在 Simple Gallery 中显示,但是其它应用可以访问。如果您想对其它应用隐藏,请使用隐藏功能。</string> <string name="show_on_map">在地图中显示</string>
<string name="excluded_folders">排除目录</string> <string name="unknown_location">未知位置</string>
<string name="exif">EXIF</string> <string name="no_map_application">未找到地图应用</string>
<string name="exposure_time">曝光时间</string> <string name="no_camera_app_found">未找到相机应用</string>
<string name="extension">扩展名</string> <string name="increase_column_count">增加一栏</string>
<string name="extension_cannot_be_empty">扩展名不能为空</string> <string name="reduce_column_count">减少一栏</string>
<string name="extra_large">超大</string> <string name="change_cover_image">更改封面图片</string>
<string name="f_number">光圈</string> <string name="select_photo">选择图片</string>
<string name="file">文件</string> <string name="use_default">使用默认</string>
<string name="file_already_exists">文件 %1$s 已存在</string> <string name="set_as">设置为</string>
<string name="file_already_exists_overwrite">文件 %1$s 已存在。是否覆盖?</string> <string name="volume">音量</string>
<string name="file_saved">文件保存成功</string> <string name="brightness">亮度</string>
<string name="filename">文件名</string> <string name="do_not_ask_again">不再提醒</string>
<string name="filename_cannot_be_empty">文件名不能为空</string>
<string name="filename_invalid_characters">文件名包含非法字符</string> <!-- Filter -->
<string name="files_count">总文件数</string>
<string name="filter_media">要显示的媒体文件</string> <string name="filter_media">要显示的媒体文件</string>
<string name="fingerprint">指纹</string> <string name="images">图片</string>
<string name="fingerprint_setup_successfully">保护设置成功。请重新安装本应用,以防复位时出现问题。</string> <string name="videos">适配</string>
<string name="gifs">GIFs</string>
<string name="no_media_with_filters">所选的过滤器没有找到媒体文件。</string>
<string name="change_filters_underlined"><u>更改过滤器</u></string>
<!-- Hide / Exclude -->
<string name="hide_folder_description">通过添加文件 \'.nomedia\' 到目录,可以防止目录及其子目录下的所有媒体被扫描。您可以通过设置中的 \'显示隐藏目录\' 选项改变设置,是否继续?</string>
<string name="exclude">排除</string>
<string name="excluded_folders">排除目录</string>
<string name="manage_excluded_folders">管理排除目录</string>
<string name="exclude_folder_description">目录及其子目录中的媒体将不会在“简约图库”中显示,您可以在设置更改。</string>
<string name="exclude_folder_parent">是否排除父目录?</string>
<string name="excluded_activity_placeholder">此目录及其子目录中的媒体将不会在“简约图库”中显示,但是其它应用可以访问。如果您想对其它应用隐藏,请使用隐藏功能。</string>
<string name="remove_all">移除全部</string>
<string name="remove_all_description">是否删除排除列表中的所有文件夹?此操作不会删除文件夹。</string>
<!-- Include folders -->
<string name="include_folders">包含目录</string>
<string name="manage_included_folders">管理包含目录</string>
<string name="add_folder">添加目录</string>
<string name="included_activity_placeholder">如果您还有应用未扫描到的媒体文件,请添加所在目录路径。</string>
<!-- Resizing -->
<string name="resize">缩放</string>
<string name="resize_and_save">缩放选定区域并保存</string>
<string name="width">宽度</string>
<string name="height">高度</string>
<string name="keep_aspect_ratio">保持纵横比</string>
<string name="invalid_values">请输入有效分辨率</string>
<!-- Editor -->
<string name="editor">编辑器</string>
<string name="save">保存</string>
<string name="rotate">旋转</string>
<string name="path">路径</string>
<string name="invalid_image_path">无效图片路径</string>
<string name="image_editing_failed">图片编辑失败</string>
<string name="edit_image_with">编辑方式:</string>
<string name="no_editor_found">未找到可用图片编辑器</string>
<string name="unknown_file_location">未知的文件路径</string>
<string name="error_saving_file">不能覆盖源文件</string>
<string name="rotate_left">向左旋转</string>
<string name="rotate_right">向右旋转</string>
<string name="rotate_one_eighty">旋转 180º</string>
<string name="flip">翻转</string> <string name="flip">翻转</string>
<string name="flip_horizontally">水平翻转</string> <string name="flip_horizontally">水平翻转</string>
<string name="flip_vertically">垂直翻转</string> <string name="flip_vertically">垂直翻转</string>
<string name="focal_length">焦距</string> <string name="edit_with">编辑方式</string>
<string name="folder">文件夹</string>
<string name="folder_view">目录视图</string> <!-- Set wallpaper -->
<string name="follow_us">关注我们:</string> <string name="simple_wallpaper">简约壁纸</string>
<string name="font_size">字体大小</string>
<string name="gifs">GIFs</string>
<string name="glide_title">滑动(图像加载和缓存)</string>
<string name="go_to_settings">去设置</string>
<string name="grid"></string>
<string name="gruveo">你在寻找一个简单而匿名的视频通话应用吗?请尝试我的另一个项目</string>
<string name="height">高度</string>
<string name="hidden">(隐藏)</string>
<string name="hide">隐藏</string>
<string name="hide_folder">隐藏文件夹</string>
<string name="hide_folder_description">"通过添加文件 '.nomedia' 到目录,可以防止目录及其子目录下的所有媒体被扫描。您可以通过设置中的 '显示隐藏目录' 选项改变设置,是否继续?"</string>
<string name="hide_system_ui_at_fullscreen">全屏时自动隐藏状态栏</string>
<string name="image_editing_failed">图片编辑失败</string>
<string name="images">图片</string>
<string name="include_folders">包含目录</string>
<string name="include_gifs">包含 GIFs</string>
<string name="include_photos">包含照片</string>
<string name="include_videos">包含视频</string>
<string name="included_activity_placeholder">如果您还有应用未扫描到的媒体文件,请添加所在目录路径。</string>
<string name="increase_column_count">增加一栏</string>
<string name="insert_pattern">绘制图案</string>
<string name="internal">内部存储器</string>
<string name="interval">间隔(秒):</string>
<string name="invalid_destination">无法写入到选中目标路径</string>
<string name="invalid_file_format">无效文件格式</string>
<string name="invalid_image_path">无效图片路径</string>
<string name="invalid_name">名称包含非法字符</string>
<string name="invalid_values">请输入有效分辨率</string>
<string name="invite_friends_underlined"><u>分享给好友</u></string>
<string name="invite_via">分享到</string>
<string name="iso_speed">ISO 速度</string>
<string name="items_selected">已选择项目</string>
<string name="joda_title">Joda-TimeJava日期替换</string>
<string name="keep_aspect_ratio">保持纵横比</string>
<string name="kotlin_title">Kotlin编程语言</string>
<string name="landscape_aspect_ratio">横向长宽比</string>
<string name="large"></string>
<string name="last_modified">修改日期</string>
<string name="light_theme">浅色主题</string>
<string name="list">列表</string>
<string name="loop_slideshow">循环幻灯片</string>
<string name="loop_videos">循环播放视频</string>
<string name="manage_excluded_folders">管理排除目录</string>
<string name="manage_extended_details">要显示的详细信息项目</string>
<string name="manage_included_folders">管理包含目录</string>
<string name="max_brightness">浏览时最大亮度</string>
<string name="medium"></string>
<string name="more_apps_underlined"><u>更多应用</u></string>
<string name="move">移动</string>
<string name="move_backwards">倒播</string>
<string name="move_to">移动到</string>
<string name="moving">正在移动…</string>
<string name="moving_success">文件移动成功</string>
<string name="moving_success_partial">无法移动相同文件</string>
<string name="multiselect_title">RecyclerView MultiSelect选择多个列表项</string>
<string name="name">名称</string>
<string name="name_taken">同名文件夹或文件已存在</string>
<string name="no"></string>
<string name="no_app_found">未找到可用应用</string>
<string name="no_camera_app_found">未找到相机应用</string>
<string name="no_capable_app_found">未找到可用应用</string>
<string name="no_editor_found">未找到可用图片编辑器</string>
<string name="no_files_selected">未选择文件</string>
<string name="no_fingerprints_registered">您还没有注册指纹,请先给你的设备添加一些指纹</string>
<string name="no_map_application">未找到地图应用</string>
<string name="no_media_for_slideshow">未发现可用媒体</string>
<string name="no_media_with_filters">所选的过滤器没有找到的媒体文件。</string>
<string name="no_storage_permissions">请授予权限以访问您的存储器</string>
<string name="notice">此应用使用了以下三方库。谢谢。</string>
<string name="ok">确认</string>
<string name="open_camera">打开相机</string>
<string name="open_with">打开方式</string>
<string name="other_folder">其他目录</string>
<string name="otto_title">Otto (event bus)</string>
<string name="out_of_memory_error">内存不足</string>
<string name="overwrite">覆盖</string>
<string name="password_protect_hidden_items">使用密码保护隐藏项</string>
<string name="path">路径</string>
<string name="pattern">图案</string>
<string name="pattern_title">PatternLockView图案保护</string>
<string name="photoview_title">PhotoView可缩放 gifs</string>
<string name="picasso_title">Picasso图像加载和缓存</string>
<string name="pin">密码</string>
<string name="pin_folder">锁定目录</string>
<string name="place_finger">请将手指放在指纹传感器上</string>
<string name="please_enter_pin">请输入密码</string>
<string name="please_select_destination">请选择目标路径</string>
<string name="portrait_aspect_ratio">纵向长宽比</string>
<string name="primary_color">主体色</string>
<string name="proceed_with_deletion">是否执行此删除操作?</string>
<string name="properties">属性</string>
<string name="protection_setup_successfully">密码设置成功。为防止遗忘,请重新安装本应用。</string>
<string name="random_order">随机顺序</string>
<string name="rate_us_underlined"><u>为我们打分</u></string>
<string name="reduce_column_count">减少一栏</string>
<string name="remove_all">移除全部</string>
<string name="remove_all_description">是否移除列表中的全部目录?目录不会被物理删除。</string>
<string name="rename">重命名</string>
<string name="rename_file">重命名文件</string>
<string name="rename_file_error">无法重命名文件</string>
<string name="rename_folder">重命名文件夹</string>
<string name="rename_folder_empty">文件夹名不能为空</string>
<string name="rename_folder_error">无法重命名文件夹</string>
<string name="rename_folder_exists">文件夹名已存在</string>
<string name="rename_folder_ok">文件夹重命名成功</string>
<string name="rename_folder_root">无法重命名存储器的根目录</string>
<string name="renaming_folder">重命名中...</string>
<string name="repeat_pattern">重复图案</string>
<string name="repeat_pin">重复密码</string>
<string name="replace_share_with_rotate">替换全屏时菜单栏的“分享”为“旋转”</string>
<string name="resize">缩放</string>
<string name="resize_and_save">缩放选定区域并保存</string>
<string name="resolution">分辨率</string>
<string name="restore_defaults">恢复默认</string>
<string name="root">根目录</string>
<string name="rotate">旋转</string>
<string name="rotate_left">向左旋转</string>
<string name="rotate_one_eighty">旋转 180º</string>
<string name="rotate_right">向右旋转</string>
<string name="rtl_viewpager_title">RtlViewPager从右到左滑动</string>
<string name="save">保存</string>
<string name="save_as">保存</string>
<string name="save_before_closing">您尚未保存更改,是否保存?</string>
<string name="saving">正在保存…</string>
<string name="screen_rotation_aspect_ratio">根据长宽比</string>
<string name="screen_rotation_by">全屏方向</string>
<string name="screen_rotation_device_rotation">设备方向</string>
<string name="screen_rotation_system_setting">系统设置</string>
<string name="scroll_thumbnails_horizontally">水平滚动缩略图</string>
<string name="sd_card">SD 卡</string>
<string name="search">搜索</string>
<string name="select_all">全选</string>
<string name="select_an_action">选择操作</string>
<string name="select_destination">选择目标路径</string>
<string name="select_file">选择文件</string>
<string name="select_folder">选择文件夹</string>
<string name="select_photo">选择图片</string>
<string name="select_storage">选择存储器</string>
<string name="set_as">设置为</string>
<string name="set_as_wallpaper">设为壁纸</string> <string name="set_as_wallpaper">设为壁纸</string>
<string name="set_as_wallpaper_failed">壁纸设置失败</string> <string name="set_as_wallpaper_failed">壁纸设置失败</string>
<string name="set_as_wallpaper_with">设为壁纸...</string> <string name="set_as_wallpaper_with">设为壁纸...</string>
<string name="setting_wallpaper">正在设置壁纸…</string> <string name="no_capable_app_found">未找到可用应用</string>
<string name="settings">设置</string> <string name="setting_wallpaper">正在设置壁纸&#8230;</string>
<string name="share">分享</string>
<string name="share_text">请前往 %2$s 看看我们的 %1$s 吧!</string>
<string name="share_via">分享到</string>
<string name="show_all">文件视图</string>
<string name="show_extended_details">全屏浏览媒体时显示详细信息</string>
<string name="show_hidden">显示隐藏文件和文件夹</string>
<string name="show_hidden_media">显示所有</string>
<string name="show_on_map">在地图中显示</string>
<string name="simple_wallpaper">简约壁纸</string>
<string name="size">大小</string>
<string name="skip">跳过</string>
<string name="slideshow">幻灯片</string>
<string name="slideshow_ended">幻灯片结束</string>
<string name="small"></string>
<string name="sort_by">排序方式</string>
<string name="source">原始路径</string>
<string name="source_and_destination_same">原始路径和目标路径不能相同</string>
<string name="stetho_title">Stetho调试数据库</string>
<string name="stop_showing_hidden">不显示隐藏的媒体文件</string>
<string name="subsampling_title">Subsampling Scale Image View可缩放图像浏览</string>
<string name="temporarily_show_hidden">显示/隐藏缓存内容</string>
<string name="text_color">文本颜色</string>
<string name="theme">主题</string>
<string name="third_party_licences">开放源代码</string>
<string name="third_party_licences_underlined"><u>开放源代码</u></string>
<string name="title">标题</string>
<string name="toggle_filename">显示文件名</string>
<string name="undo_changes">撤销更改</string>
<string name="undo_changes_confirmation">是否撤销您的更改?</string>
<string name="unhide">取消隐藏</string>
<string name="unhide_folder">取消隐藏文件夹</string>
<string name="unknown_error_occurred">未知错误</string>
<string name="unknown_file_location">未知的文件路径</string>
<string name="unknown_location">未知位置</string>
<string name="unpin_folder">解除锁定目录</string>
<string name="use_default">使用默认</string>
<string name="use_fade">使用渐变动画</string>
<string name="use_for_this_folder">仅应用于此文件夹</string>
<string name="videos">视频</string>
<string name="volume">音量</string>
<string name="wallpaper_set_successfully">壁纸设置成功</string> <string name="wallpaper_set_successfully">壁纸设置成功</string>
<string name="website_label">应用源码</string> <string name="portrait_aspect_ratio">纵向长宽比</string>
<string name="whats_new">更新日志</string> <string name="landscape_aspect_ratio">横向长宽比</string>
<string name="whats_new_disclaimer">* 此处仅列举了重大更新,更多修正可在使用中体验</string>
<string name="width">宽度</string> <!-- Slideshow -->
<string name="wrong_pattern">图案错误</string> <string name="slideshow">幻灯片</string>
<string name="wrong_pin">密码错误</string> <string name="interval">间隔(秒):</string>
<string name="wrong_root_selected">目录选择错误,请选择 SD 卡</string> <string name="include_photos">包括照片</string>
<string name="yes"></string> <string name="include_videos">包括视频</string>
<string name="include_gifs">包括 GIFs</string>
<string name="random_order">随机顺序</string>
<string name="use_fade">使用渐变动画</string>
<string name="move_backwards">倒播</string>
<string name="loop_slideshow">循环幻灯片</string>
<string name="slideshow_ended">幻灯片结束</string>
<string name="no_media_for_slideshow">未发现可用媒体</string>
<!-- View types -->
<string name="change_view_type">更改视图类型</string>
<string name="grid">网格</string>
<string name="list">列表</string>
<!-- Settings -->
<string name="show_hidden_media">显示所有</string>
<string name="autoplay_videos">自动播放</string>
<string name="toggle_filename">显示文件名</string>
<string name="loop_videos">循环播放视频</string>
<string name="animate_gifs">GIF 缩略图</string>
<string name="max_brightness">浏览时最大亮度</string>
<string name="crop_thumbnails">裁剪缩略图</string>
<string name="screen_rotation_by">全屏时方向</string>
<string name="screen_rotation_system_setting">系统设置</string>
<string name="screen_rotation_device_rotation">设备方向</string>
<string name="screen_rotation_aspect_ratio">根据长宽比</string>
<string name="dark_background_at_fullscreen">全屏时黑色背景</string>
<string name="scroll_thumbnails_horizontally">水平滚动缩略图</string>
<string name="hide_system_ui_at_fullscreen">全屏时自动隐藏状态栏</string>
<string name="delete_empty_folders">删除没有内容的空文件夹</string>
<string name="allow_video_gestures">使用纵向滑动手势控制视频音量和亮度</string>
<string name="show_media_count">在主界面显示文件夹媒体计数</string>
<string name="replace_share_with_rotate">替换全屏时菜单栏的“分享”为“旋转”</string>
<string name="show_extended_details">全屏浏览媒体时显示详细信息</string>
<string name="manage_extended_details">要显示的详细信息项目</string>
<!-- 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">一个没有广告,用来观看照片及视频的相册。</string>
<string name="app_long_description">
一个观看照片和视频的简单实用工具。项目可以根据日期、大小、名称来递增或递减排序,照片可以缩放。媒体文件根据屏幕的大小排列在多个方格中,您可以使用缩放手势来调整每一列的方格数量。媒体文件可以被重命名、分享、删除、复制以及移动。照片亦可被剪切、旋转或是直接在应用中设为壁纸。
相册亦提供能让第三方应用预览图片/视频、向电子邮件客户端添加附件等的功能。非常适合日常使用。
应用不包含广告与不必要的权限。它是完全开放源代码的,并内置自定义颜色主题。
这个应用只是一系列应用中的一小部份。您可以在 http://www.simplemobiletools.com 找到其余的应用。
</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
-->
</resources> </resources>

View file

@ -125,6 +125,7 @@
<string name="hide_system_ui_at_fullscreen">全螢幕時自動隱藏系統介面</string> <string name="hide_system_ui_at_fullscreen">全螢幕時自動隱藏系統介面</string>
<string name="delete_empty_folders">刪除內容後刪除空白資料夾</string> <string name="delete_empty_folders">刪除內容後刪除空白資料夾</string>
<string name="allow_video_gestures">允許用上下手勢來控制影片的音量和亮度</string> <string name="allow_video_gestures">允許用上下手勢來控制影片的音量和亮度</string>
<string name="show_media_count">Show folder media count on the main view</string>
<string name="replace_share_with_rotate">將全螢幕選單的分享取代為旋轉</string> <string name="replace_share_with_rotate">將全螢幕選單的分享取代為旋轉</string>
<string name="show_extended_details">Show extended details over fullscreen media</string> <string name="show_extended_details">Show extended details over fullscreen media</string>
<string name="manage_extended_details">Manage extended details</string> <string name="manage_extended_details">Manage extended details</string>

View file

@ -2,6 +2,7 @@
<resources> <resources>
<!-- Release notes --> <!-- Release notes -->
<string name="release_137">Added an option to hide folder media count on the main screen</string>
<string name="release_136">Added an option to show customizable extended details over fullscreen media</string> <string name="release_136">Added an option to show customizable extended details over fullscreen media</string>
<string name="release_133"> <string name="release_133">
Added fingerprint to hidden item protection\n Added fingerprint to hidden item protection\n

View file

@ -125,6 +125,7 @@
<string name="hide_system_ui_at_fullscreen">Automatically hide system UI at fullscreen media</string> <string name="hide_system_ui_at_fullscreen">Automatically hide system UI at fullscreen media</string>
<string name="delete_empty_folders">Delete empty folders after deleting their content</string> <string name="delete_empty_folders">Delete empty folders after deleting their content</string>
<string name="allow_video_gestures">Allow controlling video volume and brightness with vertical gestures</string> <string name="allow_video_gestures">Allow controlling video volume and brightness with vertical gestures</string>
<string name="show_media_count">Show folder media count on the main view</string>
<string name="replace_share_with_rotate">Replace Share with Rotate at fullscreen menu</string> <string name="replace_share_with_rotate">Replace Share with Rotate at fullscreen menu</string>
<string name="show_extended_details">Show extended details over fullscreen media</string> <string name="show_extended_details">Show extended details over fullscreen media</string>
<string name="manage_extended_details">Manage extended details</string> <string name="manage_extended_details">Manage extended details</string>