小编Meh*_*tei的帖子

如何使用视图(微光)作为图像视图(Glide)的占位符

我正在使用 Glide 将图像加载到我的 imageView(在 recyclerview 中):

Glide.with(image.context).load(url)
        .error(context.getDrawable(R.drawable.placeholder))
        .into(image)
Run Code Online (Sandbox Code Playgroud)

我看到 Glide 库还有一个“占位符”函数,它可以在图像仍在加载时加载要显示的 Drawable。

另一方面,对于整个 recyclerView,我使用Facebook Shimmer库来显示正在加载 recyclerview。

看看我的应用程序,一切正常。但是,在关闭 Shimmer(获取数据)和显示图像之间仍然存在间隔时间。这正是需要占位符的时候。我想知道,有没有办法将 Shimmer 用作 imageView 的占位符?Glide 中的 Placeholder 特性只支持 Drawable,Shimmer 是一个 View。

无论如何将Shimmer转换为Drawable?还是GIF?或者有什么其他建议?

android android-glide shimmer

13
推荐指数
2
解决办法
3669
查看次数

Mockk spky 抛出 NoClassDefFoundError

我正在尝试在 Mockk 的帮助下为我的视图模型编写单元测试。

@Test
fun `When loading the ResponseViewState isLoading`() {
    val observer = spyk<Observer<ResponseViewState>>(Observer { })
    puppiesViewModel.status_.observeForever(observer)

    every {
        fetchPuppiesUseCase.fetchPuppies()
    } returns
            Observable.just(Resource.Loading)

    puppiesViewModel.fetchPuppies()

    val slot = slot<ResponseViewState>()
    verify { observer.onChanged(capture(slot)) }

    assert(slot.captured.isLoading())

    verify { fetchPuppiesUseCase.fetchPuppies() }
}
Run Code Online (Sandbox Code Playgroud)

当我通过间谍创建观察者时发生错误。

val observer = spyk<Observer<ResponseViewState>>(Observer { })
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

java.lang.NoClassDefFoundError: com/example/tink/PuppiesViewModelTest$$Lambda$61/0x0000000800176840

    at jdk.internal.reflect.GeneratedSerializationConstructorAccessor4.newInstance(Unknown Source)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
    at org.objenesis.instantiator.sun.SunReflectionFactoryInstantiator.newInstance(SunReflectionFactoryInstantiator.java:48)
    at io.mockk.proxy.jvm.ObjenesisInstantiator.instanceViaObjenesis(ObjenesisInstantiator.kt:75)
    at io.mockk.proxy.jvm.ObjenesisInstantiator.instance(ObjenesisInstantiator.kt:42)
    at io.mockk.proxy.jvm.ProxyMaker.instantiate(ProxyMaker.kt:75)
    at io.mockk.proxy.jvm.ProxyMaker.proxy(ProxyMaker.kt:42)
    at io.mockk.impl.instantiation.JvmMockFactory.newProxy(JvmMockFactory.kt:34)
    at io.mockk.impl.instantiation.AbstractMockFactory.newProxy$default(AbstractMockFactory.kt:29)
    at io.mockk.impl.instantiation.AbstractMockFactory.spyk(AbstractMockFactory.kt:102)
    at com.example.tink.PuppiesViewModelTest.createObserver(PuppiesViewModelTest.kt:99)
    at com.example.tink.PuppiesViewModelTest.given loading state, when fetchPuppies …
Run Code Online (Sandbox Code Playgroud)

junit android mockito mockk

6
推荐指数
1
解决办法
2436
查看次数

Flutter:在启​​动时执行一个函数 - 等待 HTTP 响应解析器提取图像 URL

我正在开发一个 Flutter 应用程序,我需要从 API 中获取几乎所有内容,包括图像、颜色、文本等。所以我应该做的是构建应用程序的主要结构,然后用提供的信息填写所有内容应用程序接口。当应用程序开始获取响应并初始化变量以在应用程序中使用它们时,我有必要进行 API 调用 (HTTP GET)。

我使用这里的指令在启动时执行一个函数。在该函数中,我发出 HTTP GET 请求并解析 JSON 文件以提取我需要的信息。

但是,问题在于flutter不会等待HTTP请求的响应,以便我可以使用接收到的JSON中的解析信息。

因此,在下面的代码中,我使用 getdata() 函数来解析 JSON,以便从 JSON 文件中提取 ImageURL,然后使用 NetworkImage 中的 URL。

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(home: HomeScreen());
  }
}

class HomeScreen extends StatefulWidget {
  @override
  HomeScreenState createState() => new HomeScreenState();
}

class HomeScreenState extends State<HomeScreen>
    with AfterLayoutMixin<HomeScreen> {
  @override
  Widget build(BuildContext context) {
    Size screenSize = MediaQuery.of(context).size;

    return Scaffold(
      body: …
Run Code Online (Sandbox Code Playgroud)

json dart flutter

3
推荐指数
1
解决办法
5105
查看次数

仅当多个构造函数可用时,“变量可能尚未初始化”

我有一个在其中声明变量并在构造函数中对其进行初始化的类。当我的代码中只有一个构造函数时,一切都可以正常工作。当我添加另一个构造函数时,会发生此问题。这两个构造函数的一切都相同,但是只有构造函数的参数不同。知道为什么会这样吗?

private final NavDrawerManager.OnDrawerItemClickListener mOnDrawerItemClickListener;
private final MoreMenuActivity.OnItemClickListener mOnItemClickListener;


public NavMenuAdapter(final List<NavMenuItem> menuItems, final String selectedId, final NavDrawerManager.OnDrawerItemClickListener onDrawerItemClickListener) {
    mMenuItems = menuItems;
    mSelectedId = selectedId;
    mOnDrawerItemClickListener = onDrawerItemClickListener;
}

public NavMenuAdapter(final List<NavMenuItem> menuItems, final String selectedId, final MoreMenuActivity.OnItemClickListener onItemClickListener) {
    mMenuItems = menuItems;
    mSelectedId = selectedId;
    mOnItemClickListener = onItemClickListener;
}
Run Code Online (Sandbox Code Playgroud)

java android

-1
推荐指数
1
解决办法
57
查看次数

标签 统计

android ×3

android-glide ×1

dart ×1

flutter ×1

java ×1

json ×1

junit ×1

mockito ×1

mockk ×1

shimmer ×1