2011-12-20 11 views
3

2つのTextViewのタッチが両方とも見えなくなるようなアイデアを思いつきました。このアイデアは、TextViewで1本の指に触れると1つのTextViewだけが見えなくなります。しかし、私は2本の指でそれをテストすると、1つのTextviewだけが見えなくなります。両方のテキストビューが見えなくなるわけではありません。2つのテキストビューをアンドロイドのタッチで見えないようにする方法

私は次のコードを書いています。

public class MatchMeaning1 extends Activity implements OnTouchListener{ 

    private static final String TAG = MatchMeaning1.class.getSimpleName(); 

    TextView[] txtWord, txtMeaning; 

    int [] wordID = {R.id.txtWord1, R.id.txtWord2, R.id.txtWord3, R.id.txtWord4, R.id.txtWord5}; 
    int[] meaningID = {R.id.txtMeaning1,R.id.txtMeaning2, R.id.txtMeaning3, R.id.txtMeaning4, R.id.txtMeaning5 }; 

    String[] word = {"1.abidcation","2.abhor","3.abide","4.abyssmal","5.award"}; 
    String[] meaning = {"a.deep","b.stay","c.cede","d.accolade","5.hate"}; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.match_meaning); 
     txtWord = new TextView[5]; 
     txtMeaning = new TextView[5]; 

     for(int i = 0; i < txtWord.length; i++){ 
      txtWord[i] = (TextView)findViewById(wordID[i]); 
      txtMeaning[i] = (TextView)findViewById(meaningID[i]); 
      txtWord[i].setText(word[i]); 
      txtMeaning[i].setText(meaning[i]); 
      txtWord[i].setOnTouchListener(this); 
      txtMeaning[i].setOnTouchListener(this); 
     } 

    } 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     int pointerCount = event.getPointerCount(); 

     if(pointerCount == 2){ 
      TextView [] tv = new TextView[2]; 
      for(int i = 0; i < tv.length ;i++){ 
       tv[i] = (TextView)v; 
       tv[i].setVisibility(TextView.INVISIBLE); 
      } 
     } 
     return true; 
    } 

} 

上記のコードはpointerCount = 2のために動作しませんが、それはpointerCountのために働く= 1 は、誰も私にこれに対する解決策を教えてください。

答えて

1

onTouchイベントはビューごとに処理されるため、イベントを呑み込むtrueを返す以外は両方のテキストビューで発生します。あなたが消えるしたい現在の2つのテキストビューとして宣言したオブジェクトとYOUR_TEXT_VIEW 1 & 2を交換し

@Override 
public boolean onTouch(View v, MotionEvent event) { 
    if(v != YOUR_TEXT_VIEW1 && v != YOUR_TEXT_VIEW2) return false; 
    ((TextView)v).setVisibility(TextView.INVISIBLE); 
    return false; 
} 

:何が欲しいのにおそらく近いです。

EDIT:

あなただけのユーザーは、あなたがより複雑なアプローチを考案する必要があるとしているそれらの両方に接触している場合はビューが消えします。 2つの可能性があります:

  1. onTouchイベントは、それぞれのユニークなMotionEventによってトリガーされたすべてのビューを追加する別の関数を呼び出す必要があります。リストにビューを追加した後、関数は両方の期待されたビューが存在するかどうかをチェックします。その場合は、不可視の呼び出しをトリガーします。
  2. onTouchを使用する代わりに、onTouchEventメソッドを使用して、getX(index)getY(index)座標がタッチすると予想される2つのビューの内側にあるかどうかを判断します。
+0

上記のコードは、pointerCount = 1と同じくらい良いシングルタッチでしか動作しません。上記のコードは、テキストビュー上で一度に1本の指をポイントして消えるようにします。私は一度に両方のテキストビューを消したい。 –

0

あなたは、一度に2つのテキストビューに触れているのは、一度に一つだけのイベントを取り、1 textviewあればあなたの携帯電話はなぜmultitouch Event.Thatさんをサポートしていませんが見えなくなりました。

まず、携帯電話が複数のタッチをサポートしているかどうかを最初に確認します。