Его можно обрабатывать с помощью функций синхронизации времени step-end
и step-start
Например: https://jsfiddle.net/y72h8Lky/
$(".run").on("click", function() {
$(".popup").addClass("show");
});
$(".popup").on("click", function() {
$(".popup").removeClass("show");
})
.popup {
opacity: 0;
display: block;
position: absolute;
top: 100%;
bottom: 0;
left: 0;
right: 0;
z-index: 1450;
background-color: rgba(0, 175, 236, 0.6);
transition: opacity 0.3s ease-out, top 0.3s step-end;
}
.popup.show {
transition: opacity 0.3s ease-out, top 0.3s step-start;
opacity: 1;
top: 0;
}
Предполагается, что это будет сохранено в папке «Картинки»
blockquote>
getExternalStorageDirectory()
возвращает корень внешнего хранилища, а не какое-либо местоположение внутри него (например,Pictures/
,DCIM/
,Movies/
).Я также попробовал Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_PICTURES) с тем же результатом
blockquote>Это даст вы соответствуете директории или независимо от того, что устройство считает правильным каталогом (обычно называемым
Pictures/
во внешнем хранилище для любого текущего пользователя)., но Environment.getExternalStorageDirectory (). getAbsolutePath ( ), похоже, создает новую файловую структуру, такую как этот файл: // storage / emulated / 11 / Pictures /
blockquote>
11
немного необычен, аgetAbsolutePath()
ничего не возвращает сfile://
, но в противном случае это кажется правильным.Но это не стандартная папка «Картинки» на любом из моих тестовых устройств или эмуляторов.
blockquote >Я не знаю, как вы определили
Я хотел бы знать, есть ли способ сохранить эту папку, а также установить собственное имя файла.
blockquote>Начать с вашего первый образец, переключившись на
DIRECTORY_PICTURES
. Затем:
- имеют
outputStream
сообщениеFileOutputStream
outputStream.getFD().sync()
послеflush()
и передclose()
- используют
MediaScannerConnection
и егоscanFile()
, чтобыMediaStore
проиндексировать изображение, поэтому он доступен для галерей на устройстве, для файловых менеджеров настольных ОС и т. д.
С Android 6.0 Marshmallow (API> = 23) Google представила новую модель разрешения.
Вы должны запросить разрешение во время выполнения:
String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
requestPermissions(permissions, WRITE_REQUEST_CODE);
и обработать результат в onRequestPermissionsResult (),
File path = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES);
File file = new File(path, "db.JPG");
try {
file.createNewFile();
}
catch (IOException e) {
Toast.makeText(this.getApplicationContext(),
"createNewFile:"+e.toString(),
Toast.LENGTH_LONG).show();
}
, затем
if (Build.VERSION.SDK_INT < 19) {
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://" + filename)));
}
else {
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
Uri.parse("file://" + filename)));
}
, чтобы показать в галерее.