ImageWatcher — это программа для просмотра изображений, которая предоставляет более качественные услуги для пользователей, стремящихся к улучшению пользовательского опыта.
В модуле Gradle:
implementation 'com.byc:ImageWatcher:1.1.0'
или скачать модуль:
implementation project(':imagewatcher')
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- some layout here -->
<byc.imagewatcher.ImageWatcher
android:id="@+id/v_image_watcher"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>
vImageWatcher = (ImageWatcher) findViewById(R.id.v_image_watcher);
vImageWatcher.setTranslucentStatus(!isTranslucentStatus ? Utils.calcStatusBarHeight(this) : 0);
vImageWatcher.setErrorImageRes(R.mipmap.error_picture);
vImageWatcher.setOnPictureLongPressListener(this);
vImageWatcher.setLoader(new GlideSimpleLoader());
vImageWatcher.setOnStateChangedListener(new ImageWatcher.OnStateChangedListener() {
@Override
public void onStateChangeUpdate(ImageWatcher imageWatcher, ImageView clicked, int position, Uri uri, float animatedValue, int actionTag) {
Log.e("IW", "onStateChangeUpdate [" + position + "][" + uri + "][" + animatedValue + "][" + actionTag + "]");
}
@Override
public void onStateChanged(ImageWatcher imageWatcher, int position, Uri uri, int actionTag) {
if (actionTag == ImageWatcher.STATE_ENTER_DISPLAYING) {
Toast.makeText(getApplicationContext(), "点击了图片 [" + position + "]" + uri + "", Toast.LENGTH_SHORT).show();
} else if (actionTag == ImageWatcher.STATE_EXIT_HIDING) {
Toast.makeText(getApplicationContext(), "退出了查看大图", Toast.LENGTH_SHORT).show();
}
}
});
iwHelper = ImageWatcherHelper.with(this, new GlideSimpleLoader())
.setTranslucentStatus(!isTranslucentStatus ? Utils.calcStatusBarHeight(this) : 0)
.setErrorImageRes(R.mipmap.error_picture)
.setOnPictureLongPressListener(this)
.setOnStateChangedListener(new ImageWatcher.OnStateChangedListener() {
...
});
``` ```
.setIndexProvider(new CustomDotIndexProvider()) // настраиваемый индикатор страницы (по умолчанию цифры), не обязательно вызывать этот API
.setLoadingUIProvider(new CustomLoadingUIProvider()); // настраиваемая загрузка UI, не обязательно вызывать этот API
Поскольку просмотр изображений обычно занимает весь экран, после получения ссылки на activity можно вызвать activity.getWindow().getDecorView()
, чтобы получить корневой FrameLayout и динамически вставить ImageWatcher. Это позволяет использовать неинвазивный подход, при котором больше не нужно добавлять тег <ImageWatcher>
в файл макета, что уменьшает вложенность макета.
На этом этапе все подготовительные работы завершены.
/**
* @param i нажатое ImageView
* @param imageGroupList список, к которому принадлежит нажатое ImageView. При загрузке изображения заранее отображаются эскизы уже загруженных миниатюр из списка
* @param urlList список URL-адресов загружаемых изображений, количество должно быть больше или равно size imageGroupList. Также порядок должен соответствовать порядку imageGroupList
*/
public void show(ImageView i, SparseArray<ImageView> imageGroupList, final List<Uri> urlList) { ... }
Наконец, достаточно вызвать метод vImageWatcher.show()
.
// не забудьте переопределить клавишу возврата
@Override
public void onBackPressed() {
// способ 1
if (!vImageWatcher.handleBackPressed()) {
super.onBackPressed();
}
// способ 2
if (!iwHelper.handleBackPressed()) {
super.onBackPressed();
}
}
Краткое введение в инициализацию API
name | description |
---|---|
setLoader | Реализатор загрузки адреса изображения |
setTranslucentStatus | Высота состояния, передаётся, когда не используется прозрачная строка состояния |
setErrorImageRes | Вид изображения при сбое загрузки |
setOnPictureLongPressListener | Длительное нажатие обратного вызова |
setIndexProvider | Пользовательский интерфейс номера страницы |
setLoadingUIProvider | Настраиваемый интерфейс загрузки |
setStateChangedListener | Обратные вызовы при отображении и выходе из отображения |
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )