2017-03-20 52 views
0

我是Android新手。我無法一次觸摸三個按鈕此代碼我可以點擊三個按鈕,但不是單觸。我已經研究了很多,但我沒有找到我嘗試使用的解決方案OnCilckListener(),但OnTouchListener()找不到方法 我想給我一個示例或提示。你可以在照片中看到。請幫幫我,謝謝如何觸摸三鍵一鍵Android

public class MainActivity extends Activity{ 
    Button a,b,c; 
    int a1 = 0; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

    //a = (Button)findView...; 
    //b = ....; 
    //c = ....; 

a.setOnClickListener(new OnClickListener(){ 

    @Override 
    public void onClick(View v) { 

    a1 = 1; 
    b.setOnClickListener(new OnClickListener(){ 

     @Override 
     public void onClick(View v) { 

     if(a1 == 1){ 
      a1 = 2; 
    c.setOnClickListener(new OnClickListener(){ 

     @Override 
     public void onClick(View v) { 

     if(a1 == 2){ 

     Toast.makeText(getBaseContext(), "Toast", Toast.LENGTH_SHORT).show(); 
     a1 = 0; 
     }}});  
     } 

    }}); 
    } 

    }); 


    } 

enter image description here

+0

從你的使用例子,這並不看起來是提供良好的用戶體驗。滑動三個按鈕似乎不是一個自然的用例。你有沒有想過使用不同的輸入法爲用戶提供相同的最終結果? –

+0

你的話是真實的這只是一個例子,瞭解如何做這件事如果你想感謝你給我一個例子 –

+0

這看起來總體上是一個壞主意,但無論如何,處理接觸事件的視圖也是一個會接觸到的人,你可能想在容器視圖中處理這種情況 – lelloman

回答

1

把3個按鈕在一個單親視圖。讓父視圖實現滑動行爲。然後讓父視圖覆蓋onInterceptTouchEvent以對所有觸摸返回true。這樣,父視圖將處理所有孩子的所有觸摸,並且您只需要一個基本的滑動檢測器。

+0

我是新來的我是Android中的新成員給我一個關於使用視圖實現我不能執行的滑動行爲的示例或更多解釋執行毆打行爲的主要顯示器當我讀取ViewGroup時,我感到困惑給我一個示例代碼請幫助我,謝謝 –

0

onTouchListener附加到包含三個按鈕的佈局。檢查每個觸摸是否處於第一個視圖邊界內的ACTION_DOWN(將手指放下)。然後查找下一個ACTION_UP(釋放初始觸摸),使其位於第三個視圖的範圍內。您可以檢查觸摸事件是否與下面的代碼視圖的邊界:

public static boolean hitTest(View v, int x, int y) { 
final int tx = (int) (ViewCompat.getTranslationX(v) + 0.5f); 
final int ty = (int) (ViewCompat.getTranslationY(v) + 0.5f); 
final int left = v.getLeft() + tx; 
final int right = v.getRight() + tx; 
final int top = v.getTop() + ty; 
final int bottom = v.getBottom() + ty; 

return (x >= left) && (x <= right) && (y >= top) && (y <= bottom); 

}

+0

它是如何完成釋放最初的touchcase。 MotionEvent.ACTION_DOWN: –

+0

當用戶觸摸屏幕時,會觸發'MotionEvent.ACTION_DOWN'。當他們移動手指時,會觸發一個或多個'MotionEvent.ACTION_MOVE'。當他們最終釋放/舉起他們的手指時,會觸發'MotionEvent.ACTION_UP'。這些是將會提供給你的'onTouchListener'的事件的類型。可能你最好閱讀一個像這樣的教程:http://www.vogella.com/tutorials/AndroidTouch/article.html#android-touch-basics –

+0

謝謝你這個有用的課程。我知道如何用兩根手指同時進行多點觸摸並使用(x)和(y)。但到目前爲止,我無法用一根手指觸摸這三個按鈕,因爲在我試圖執行您的指示的問題中,卻無法找到解決方案。你可以給我一個完整而簡單的例子它可以幫助我理解這是如何完成的。 非常感謝你 –