java - 如何在 2 秒内不允许用户交互

标签 java android user-interface android-view android-gridview

我正在尝试制作一个翻页卡应用程序,其中有显示相同图像的图像 GridView ,例如card_back。

单击每个图像时,它会翻转显示另一个图像,该图像对于 gridview 的每个项目都不同,例如card_front。

如果两张卡片显示其卡片正面图像,则 1 秒后两张卡片都会自动翻转以显示卡片背面。

我想做的是,在这1-2秒内,用户不应该能够单击任何其他项目。或者即使他单击,在这2秒内也不应该翻转任何卡片。如何才能我这样做。是否可以使用覆盖整个 gridview 的透明 View ,并使其仅在那 2 秒内可见。有人可以帮助我吗?

   gridview.setOnItemClickListener(new OnItemClickListener()
        {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id)
            {   
                 pos=position;

               findViewById(R.id.view1).setBackgroundColor(getResources().getColor(android.R.color.transparent));


                 switch(flippedCardCounter)
                 {

                 case 0:
                     flippedCardCounter++;    //increase counter
                     v1=v;
                     startFlipAnimation(imageView,v1);
                     break;
                 //flippedCardCounter = 1 -> one card flipped
                 case 1:
                     flippedCardCounter++;    //increase counter
                     v2=v;
                     startFlipAnimation(imageView,v2);
                     im1=((ViewHolder) v1.getTag()).img;
                     im2=((ViewHolder) v2.getTag()).img;

                      Handler handler = new Handler(); 
                      handler.postDelayed(new Runnable() { 
                           public void run() { 
                                startUnflipAnimation(im1,v1);
                            startUnflipAnimation(im2,v2);
                           } 
                      },1000); 
                      break;
                 //flippedCardCounter = 2 -> hide two flipped card, flip one card
                 case 2:
                     flippedCardCounter = 0;  
                     flippedCardCounter++;   //increase counter
                     startFlipAnimation(imageView,v);
                     v1=v2=v;
                     break;
            }
                 }

              }); 

最佳答案

也许这有帮助

public class MyClass{
....
private volatile boolean isLock=false;


gridview.setOnItemClickListener(new OnItemClickListener()
        {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id)
            {  
if(isLock){return;} 
                 pos=position;

               findViewById(R.id.view1).setBackgroundColor(getResources().getColor(android.R.color.transparent));


                 switch(flippedCardCounter)
                 {

                 case 0:
                     flippedCardCounter++;    //increase counter
                     v1=v;
                     startFlipAnimation(imageView,v1);
                     break;
                 //flippedCardCounter = 1 -> one card flipped
                 case 1:
                     flippedCardCounter++;    //increase counter
                     isLock=true;
                     v2=v;
                     startFlipAnimation(imageView,v2);
                     im1=((ViewHolder) v1.getTag()).img;
                     im2=((ViewHolder) v2.getTag()).img;

                      Handler handler = new Handler(); 
                      handler.postDelayed(new Runnable() { 
                           public void run() { 
                            ////////////////////////

                            ////////////////////////
                                startUnflipAnimation(im1,v1);
                            startUnflipAnimation(im2,v2);
                               isLock=false; 
                           } 
                      },1000);

                      break;
                 //flippedCardCounter = 2 -> hide two flipped card, flip one card
                 case 2:
                     flippedCardCounter = 0;  
                     flippedCardCounter++;   //increase counter
                     startFlipAnimation(imageView,v);
                     v1=v2=v;
                     break;
            }
                 }

              }); 

....
}

您可以在任何您想要禁用时钟的地方设置isLock变量。我希望我能伸出援手!

关于java - 如何在 2 秒内不允许用户交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19345934/

相关文章:

java - Android:在实体调用 Finalize 时插入数据库

安卓错误日期

像 iOS 6 一样的 iOS 7 UITableViewController 导航

java - 根据上一个面板中的用户输入显示可变 GUI 面板的建议

java - 在UDP Socket java android上发送和接收数据

Java Swing 。从 JButton 打开一个新的 JPanel 并使按钮变得漂亮

java - JSP 和 Python 可以一起用于同一个数据库吗?

java - 如何调用带参数的私有(private)方法

java - 差异。 b/w 2 种获取连接管理器实例的方法

java - 通过循环动态赋值 - Android - 通过java编程