2015-09-29 51 views
2

嘿傢伙我是Android開發的初學者,所以任何幫助將非常感謝!完成後重新啓動記憶卡遊戲

我正在做一個紙牌遊戲,在它的一端有一個卡搖動畫做不休的問題。我想補充的一點是,每當用戶在任何點擊屏幕上,我想打比賽重新開始

詳細

請注意,我有一個線性佈局爲背景,幾個按鈕(這些都是卡)上的線性佈局對齊(如果需要的話我可以提供的代碼和XML文件)

我的一種解決方案

我認爲可以工作是一個「看不見」的對話盒子可以上點擊結束當前的遊戲活動,並開始同一活動的意圖..是正確的,如果是這樣,我怎樣才能使一個不​​可見的對話框(不透明)?

如果您需要任何東西請不要猶豫,問我會盡快提供!

更新

這裏就是我想要做什麼,我在前面已經

if (correctCounter>2){ 


     for(int ct=0;ct<memoCards.length;ct++){ 
      memoCards[ct].setClickable(false); 
     } 




     new Timer().scheduleAtFixedRate(new TimerTask() { 
      @Override 
      public void run() { 

       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         int temp = (int) (Math.random() * 5); 
         Animation shake = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.shake); 
         memoCards[temp].startAnimation(shake); 
        } 
       }); 



      } 
     },0,1000); 



} 

我要的是,當被屏幕上的我想要做的觸摸事件說我的代碼的一部分比賽重新開始

+0

請給一些代碼,嘗試一下,回來,如果有什麼不工作,我的建議是實行上onfininshed您動畫,然後重新啓動你的活動等 – dave

+0

謝謝你的答案戴夫,但我想我想要一個不同的事情..我試圖改寫,所以如果你想你可以有我的更新的問題第二次看看:) – catchiecop

回答

3

如果我理解你的問題,你需要的是實現OnClickListener您的活動,即

public class MainActivity extends AppCompatActivity implements OnClickListener{ 

    ImageView b1; 
    TextView b2; 
    int correctCounter=0; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     LinearLayout ln2 = (LinearLayout) findViewById(R.id.ll1); 
     ln2.setOnClickListener(this); 
     b1 = (ImageView) findViewById(R.id.imageView); 
     b2 = (TextView) findViewById(R.id.textView); 

     b1.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       correctCounter++; 
       if (correctCounter>20) { 
        View parent = (View) v.getParent(); 
        parent.performClick(); 
       } 
      } 
     }); 
     b2.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       correctCounter++; 
       if (correctCounter>20) { 
        View parent = (View) v.getParent(); 
        parent.performClick(); 
       } 
      } 
     }); 
    } 

    @Override 
    public void onClick(View v) { 
      if (correctCounter>20) { 
       /*Restart Activity*/ 
      } 
    } 
} 

偵聽器將尊重您的子組件的單擊事件,並且只有在您單擊可用空間時才觸發。

編輯:我添加布局XML來更好的理解邏輯

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/ll1"> 
    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/imageView" /> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/textView" /> 
</LinearLayout> 
+0

首先感謝你的回答:)...是的,我想過,但我想知道是否有一種方法可以在我所有的元素前面創建一個不可見的佈局,這樣我就可以使用你建議的onClickListener了? – catchiecop

+0

如果您在元素前面創建了不可見的佈局,那麼您將不得不爲佈局找到一種方法,以瞭解您的點擊是在自己還是在下面的元素。用我的建議,即在父佈局上實現OnClickListener,這已經實現。除了onClick之外,你有什麼特別的理由要有額外的佈局嗎? – Sevle

+0

我想添加這個額外的佈局,以便如果用戶點擊卡片或背景,這並不重要,並且遊戲重新開始。如果我在背景佈局上添加了onClickListener,那麼只有當用戶觸摸背景時纔會啓動遊戲,當卡片數量不多時(例如6),這很好,但當卡片很多時(例如, 20),他們幾乎覆蓋了背景的90%,你知道我說的對嗎? – catchiecop