Ошибка скольжения: Не удалось найти GeneratedAppGlideModule
Я пытаюсь загрузить изображение с помощью скольжения, но каким-то образом я не могу загрузить изображение с помощью глиссады. Поскольку это показывает следующую ошибку:
Не удалось найти GeneratedAppGlideModule. Вы должны включить компиляцию компилятора annotationProcessor в com.github.bumptech.glide: компилятор в вашем приложении, а аннотированная реализация AppGlideModule @GlideModule или LibraryGlideModules будет игнорироваться.
Я также предложил это решение. Но у меня уже есть обновленный вариант скольжения.
В моей градации я добавил
implementation 'com.github.bumptech.glide:glide:4.7.1'
а также
annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
Код
XML
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".view.SettingActivity">
<data>
<variable
name="settingsViewModel"
type="com.sevenbits.android.mvvmsample.viewmodel.SettingsViewModel"/>
</data>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/splash_bg">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/profile"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:background="@color/white"
android:elevation="10dp"
android:orientation="vertical"
android:padding="5dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center"
android:layout_margin="10dp"
app:image_url="@{settingsViewModel.imageUrl}"
app:civ_border_width="2dp"
app:civ_border_color="@color/colorPrimary"/>
...
</LinearLayout>
</android.support.constraint.ConstraintLayout>
</ScrollView>
CustomBindingAdapter
public class CustomBindingAdapter {
@BindingAdapter({"bind:image_url"})
public static void loadImage(ImageView imageView, String url) {
RequestOptions requestOptions = new RequestOptions();
requestOptions=requestOptions.placeholder(R.drawable.boy_32);
Glide.with(imageView.getContext())
.load(url)
.apply(requestOptions)
.into(imageView);
}
Ответы
Ответ 1
Наконец, я нашел свой ответ здесь.
Что я сделал:
Шаг 1
Я создал пустой класс с именем GlideApp
import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.module.AppGlideModule;
@GlideModule
public class GlideApp extends AppGlideModule {
}
Примечание: Не забудьте добавить аннотацию @GlideModule
.
Шаг 2
После этого я собираю/перестраиваю проект, а затем заменяю Glide
на GlideApp
. Теперь нет необходимости использовать RequestOptions
.
public class CustomBindingAdapter {
@BindingAdapter({"bind:image_url"})
public static void loadImage(ImageView imageView, String url) {
// RequestOptions requestOptions = new RequestOptions();
// requestOptions=requestOptions.placeholder(R.drawable.boy_32);
GlideApp.with(imageView.getContext())
.load(url)
.placeholder(R.drawable.boy_32)
.into(imageView);
// Glide.with(imageView.getContext())
// .load(url)
// .apply(requestOptions)
// .into(imageView);
}
}
Edit:
Для Android и Glide версии 4.9.0:
В моем приложении gradle.build:
implementation ("com.github.bumptech.glide:glide:4.9.0") {
exclude group: "com.android.support"
}
annotationProcessor 'androidx.annotation:annotation:1.0.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
implementation ("com.github.bumptech.glide:glide:[email protected]") {
transitive = true
}
В моих gradle.properties:
android.enableJetifier=true
android.useAndroidX=true
Это все.
Ответ 2
Котлин Решение:
Убедитесь, что вы добавляете следующее в свой файл Gradle (замените annotationProcessor на источник kapt):
repositories {
mavenCentral()
google()
}
dependencies {
implementation 'com.github.bumptech.glide:glide:4.8.0'
kapt 'com.github.bumptech.glide:compiler:4.8.0'
}
Добавьте реализацию AppGlideModule в своем приложении GlideSource (вы можете переопределить методы по умолчанию overrideSource):
import android.content.Context
import com.bumptech.glide.GlideBuilder
import com.bumptech.glide.annotation.GlideModule
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.module.AppGlideModule
import com.bumptech.glide.request.RequestOptions
import com.bumptech.glide.signature.ObjectKey
@GlideModule
class AppNameGlideModule : AppGlideModule() {
override fun applyOptions(context: Context, builder: GlideBuilder) {
super.applyOptions(context, builder)
builder.apply { RequestOptions().diskCacheStrategy(DiskCacheStrategy.ALL).signature(ObjectKey(System.currentTimeMillis().toShort())) }
}
}
При использовании glide используйте GlideApp вместо Glide, например:
GlideApp.with(context)
.load(url)
.into(imageView)
Ответ 3
Я столкнулся с этой проблемой с Glide:4.9.0
с AndroidX
решил это так
В твоих gradle.properties
android.useAndroidX = true
android.enableJetfier=true
В вашей сборке. Gradle
//Glide dependency implementation 'com.github.bumptech.glide:glide:4.9.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
Затем добавьте свой CustomGlideModule
@GlideModule public class CustomeGlideModule extends AppGlideModule {}
Последний шаг генерирует GlideModule
Build >> Make Project и вы должны увидеть сгенерированный модуль в вашей папке сборки
Ответ 4
Все вышеприведенные ответы верны и работают нормально
но я заметил, что при использовании методов #placeholder и #error glide отлично работает без класса build GlideModule, как упомянуто выше
Пример :
При использовании скольжения, как это не слово, а дать необходимо построить GlideModule
Glide.with(this)
.load(uri)
.into(imageView);
и это нормально работает
Glide.with(this).load(uri).placeholder(android.R.drawable.progress_indeterminate_horizontal).error(android.R.drawable.stat_notify_error).into(imageView);
Ответ 5
В дополнение к Ридхи Ответ:
Чтобы заставить его работать должным образом, я должен был включить isManifestParsingEnabled
.
import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.module.AppGlideModule;
@GlideModule
public class MyGlideApp extends AppGlideModule {
@Override
public boolean isManifestParsingEnabled() {
return false;
}
}