小编Ale*_*lex的帖子

在RecyclerView.Adapter中覆盖notifyItemChanged的动画

好吧,我有一个带适配器的RecyclerView,一切都很好.ArrayList数据集中的项目将定期更新.因此,项目及其元素以及它们在列表中的位置会发生变化.无论什么时候发生,都可以通过简单的排序和手动调用这些方法来实现:

// swapping two items
Collections.swap(items, i, j);
itemsAdapter.notifyItemMoved(i, j);

// adding a new one
itemAdapter.notifyItemInserted(items.size());

// when updating valus
itemAdapter.notifyItemChanged(i);
Run Code Online (Sandbox Code Playgroud)

后者,是我痛苦的原因.每次更新项目时,都会触发一点"闪烁"动画.

我找到了几个解决方案:

// disabling all animations
recyclerView.getItemAnimator().setSupportsChangeAnimations(false);

// or

// setting the animation duration to zero,
recyclerView.getItemAnimator().setChangeDuration(0);
Run Code Online (Sandbox Code Playgroud)

但是当项目移动(被交换)时,这两个都会杀死动画.我只想覆盖一个动画并保持所有这些魔力.有办法做到这一点吗?如果它超越了ItemAnimator,有没有人有一个简单的例子?

提前致谢!

android android-recyclerview

54
推荐指数
5
解决办法
3万
查看次数

React Native - Headless JS示例

关于此的反应本机文档似乎不完整.我正在遵循这个指南,这似乎并没有引导我到任何地方:

https://facebook.github.io/react-native/releases/next/docs/headless-js-android.html#headless-js

我应该把.java文件放在哪里?我该如何开始这项任务?

react-native

7
推荐指数
1
解决办法
2086
查看次数

在Android Studio中使用libpd

所以我从https://github.com/libpd/pd-for-android获得了git repo,并在Android Studio中为我的"AmazingSynthesizer"创建了一个新的空白项目.

我使用"导入模块"向导导入PdCore和AndroidMidi.然后,右键单击"app"查看我的"模块设置".在依赖项下,我添加了PdCore作为模块依赖项.另外,我添加了AndroidMidi作为"PdCore"的模块依赖项.

到目前为止,这对我来说似乎是正确的.我的应用程序的build.gradle包含库,我可以在MainActivity中导入PdDispatcher.问题是,它似乎仍然错过了本机库(我想!).

官方libpd书中的基本示例代码(由Peter Brinkmann制作音乐应用程序)

PdAudio.initAudio(sampleRate, 0, 2, 8, true);
Run Code Online (Sandbox Code Playgroud)

悲惨地失败了

java.lang.UnsatisfiedLinkError: Couldn't load pd from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.app.amazingsynthesizer-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.app.amazingsynthesizer-1, /vendor/lib, /system/lib]]]: findLibrary returned null
        at java.lang.Runtime.loadLibrary(Runtime.java:358)
        at java.lang.System.loadLibrary(System.java:526)
        at org.puredata.core.PdBase.<clinit>(PdBase.java:55)
        at org.puredata.android.io.PdAudio.startAudio(PdAudio.java:86)
        at com.app.amazingsynthesizer.MainActivity.onResume(MainActivity.java:62)
        at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1192)
        at android.app.Activity.performResume(Activity.java:5310)
        at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2764)
        at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2803)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2238)
        at android.app.ActivityThread.access$800(ActivityThread.java:135)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5001)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
        at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

android android-studio libpd

6
推荐指数
2
解决办法
2853
查看次数

在 RecyclerView 中动画项目交换

我已经实现了一个带有适配器和所有东西的回收器视图。我可以反转项目列表

Collections.reverse(items);
Run Code Online (Sandbox Code Playgroud)

然后遍历列表以通知适配器此更改

final int end = items.size() - 1;
for (int i = 0; i < end; i++) {
    mAdapter.notifyItemMoved(0, end - i);
}
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好。我现在想要做的是交换该列表中的两个项目并为此更改设置动画。

Collections.swap(items, 5, 8);

mAdapter.notifyItemMoved(5, 8);
mAdapter.notifyItemMoved(8, 5);
Run Code Online (Sandbox Code Playgroud)

问题是,这不是动画,我找不到原因。

我确实想要类似于简单的反向动画的东西。

有任何想法吗?

android android-recyclerview

5
推荐指数
1
解决办法
4422
查看次数