2

我有 4 个带有高分辨率可绘制对象的活动(用于测试目的)和每个活动的相同位置的按钮。单击一个 Button 会移动到下一个 Activity(Activity1 --click--> Activity2 --click--> Activity3 --click--> Activity4)。由于高分辨率图片,加载一个活动大约需要 0.5 秒。

问题。当用户在 Activity1 上的按钮上单击 3 次(甚至在它消失之前)- Activity4 被打开。

看起来点击以某种方式被缓存。如何防止它(尤其是将点击传递给另一个活动)?

4

3 回答 3

1

onResume()您可以在单击按钮时禁用按钮并为每个活动启用它。

于 2013-03-18T19:42:24.973 回答
0

您可以在加载图片时将 AsyncTask 与进度对话框一起使用。加载完成后,您可以设置启用/单击下一步按钮。所以它确保首先加载图片,然后您可以进入下一个活动。

于 2013-03-18T20:05:13.753 回答
0

我无法判断您是否尝试停止onClick()工作,直到加载当前活动中按钮的图像,或者您是否担心在让用户切换到它们之前加载其他活动中的图像(即您不'不希望用户在 Activity 4 中看到没有背景的按钮。)。这是我对两者的建议。

如果它是第一个问题,为什么不在您的活动中添加一个布尔标志?例如,假设 onClick 您的按钮会触发方法 nextActivity。创建一个变量 buttonReady,它在您的活动开始时为假,但在结束时设置为真onCreate()- 大概是当您完成处理该怪物图像时。然后只需在您触发的方法中添加一个条件

public void nextActivity(View v){
    if(buttonReady){
        //start your next activity
    } else {
        Log.d("Button click", "Still loading. . .);
    }
}

这样您就不会禁用单击按钮的功能,只会禁用效果。如果问题是您不希望人们在加载图像之前使用该按钮,我会采用类似的方法。只需使用findViewById并将按钮设置为不可见,直到处理完位图,然后使按钮出现。

如果您的问题是您想延迟onClick按钮直到加载其他活动中的图像,那就更难了。我的问题是,至少在第一次启动时,不会加载任何图像 - 假设您正在使用它们的活动中处理位图。在这种情况下,我有两个可能的建议:

(1) 将按钮设置为不可见,直到按照上述建议处理图像,并在图像加载时将其恢复。例如隐藏:

View button = findViewById(R.id.button);
button.setVisibility(View.GONE);(

(2) 创建一个图像缓存,在第一个活动期间将图像加载到那里,然后在填充缓存后从其他活动访问它们。您可以在此处阅读有关缓存位图的更多信息。

要使这个建议起作用,您需要稍微修改 android 文档中解释的方法。与其在一个活动中包含缓存,不如使用单例模式之类的东西来启动一个可以在整个应用程序中访问的缓存。这样,您只需加载 bimap 一次。

于 2013-03-18T20:03:31.200 回答