gpt4 book ai didi

java - 高效更新 RecyclerView 网格或以其他方式显示复杂网格

转载 作者:行者123 更新时间:2023-12-02 01:50:30 27 4
gpt4 key购买 nike

我有一个使用 RecyclerView 显示的像素网格(如图所示)。当按下按钮时,大多数像素将改变颜色。我希望此更新能够更均匀地处理每个像素的颜色变化,即使需要很长时间才能完成(可能有数十万个像素)而不阻塞主线程。这怎么可能?

如果可能的话,我希望在各个像素发生变化时能够实现平滑的流程。这里最重要的不是快速而是顺利地完成 Action 。如果这不是最佳选择,我不会选择 RecyclerView - 我只是被引导相信它会更好的性能。我的细胞不需要任何类型的听众。最终,单元格将变得更加复杂,每个单元格都容纳其他单元格(具有背景颜色的分层 View )。我将使用 SQL 数据库和 Room 库进行数据存储和编辑。

该过程应该在后台线程上进行,以免停止 UI。目前,我正在通过按钮的 onClickListener 上的 myRecyclerAdapter.notifyItemChanged(i); 更新我的 RecyclerView,完成后我的 UI 将停止。

screenshot

最佳答案

尝试一下 CustomView,有充分的理由使用 CustomView 来创建标准小部件未提供的 View 。您应该能够使用后台线程来实现每次转换之间的时间同步或延迟,以使其平滑。并使用 runOnUiThread() 方法来更改用户界面,即您的情况下的像素颜色。例如-你可以尝试这样的东西-

 Runnable onAnimationStarted=new Runnable() {
@Override
public void run() {
//change ui
}
};
Runnable onAnimationStopped=new Runnable() {
@Override
public void run() {
//change ui
}
};
Thread thread = new Thread(){
@Override
public void run() {
runOnUiThread(onAnimationStarted);
long start= System.currentTimeMillis();;
while(System.currentTimeMillis()-start<1000) //waits one second
{

};
runOnUiThread(onAnimationStopped);
}

};
thread.start();

关于java - 高效更新 RecyclerView 网格或以其他方式显示复杂网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53058274/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com