【问题标题】:How to have a smooth animation without blocking Main thread?如何在不阻塞主线程的情况下获得流畅的动画?
【发布时间】:2012-07-10 14:47:16
【问题描述】:

基本上,在我的活动中,有两个 vie,一个是具有动画效果的表面视图,另一个是具有动画效果的按钮。

最初我在表面视图中创建了一个异步任务,并在“onprogressupdate”方法中让它“绘制”。据我了解,这就是它的目的。

但是,每当我按下按钮时,表面视图就会停止,就好像按钮的动画正在停止表面视图的动画一样,这似乎是合乎逻辑的。

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

【问题讨论】:

    标签: android animation asynchronous android-asynctask surfaceview


    【解决方案1】:

    您不应从 UI 线程外部访问 Android UI 工具包。如果您想直接从 UI 线程外部操作 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();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-02
      • 1970-01-01
      • 1970-01-01
      • 2021-01-17
      • 2019-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多