android - 如何在不阻塞主线程的情况下制作流畅的动画?

标签 android animation asynchronous android-asynctask surfaceview

基本上,在我的 Activity 中,有两个 View ,一个是动画表面 View ,另一个是具有动画的按钮。

最初我在表面 View 中创建了一个异步任务,并在“onprogressupdate”方法中“绘制”了它。据我了解,这就是应该如何完成的。

然而,每当我按下按钮时,表面 View 就会停止,就好像按钮的动画正在停止表面 View 的动画,这似乎是合乎逻辑的。

为了克服这个问题,我将“绘制”放回“后台运行”。我有一种感觉,这显然是错误的。有没有办法让我运行这两个动画而不会互相阻塞?

最佳答案

您不应从 UI 线程外部访问 Android UI 工具包。如果你想直接从 UI thrad 之外操作一个 View,你应该使用 View.post(Runnable)反而。例如,

public void onClick(View v) {
    new Thread(new Runnable() {
        public void run() {
            mButton.post(new Runnable() {
                public void run() {
                    // do something here
                }
            });
        }
    }).start();
}

关于android - 如何在不阻塞主线程的情况下制作流畅的动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11415939/

相关文章:

java - 更新 JSONObject 中的元素

ios - 动画 UIBezierPaths- 不工作- Swift

android - 如何在动画中实现带有淡入淡出的圆形图像?

c# - 异步/等待 Lambda

javascript - 在页面加载时使用 async/defer 加载多个 Jquery 文件

node.js - 如何在事件处理程序中进行异步调用

javascript - 自动将用户重定向到 Chrome 中的深层链接不起作用

android - 如何将 TableLayout 列缩小到 minWidth?

java - 将 View 从当前位置平滑滑动到左侧 X 像素的位置

android - 仅按右侧和顶部值设置边距