OnTouchListener
アプリケーションに実装し、次にonTouch
メソッドに実装し、タッチイベントの現在の位置がビューの境界ボックスの境界内にあるかどうかを確認し続けます。ある場合は新しい背景を適用し、そうでない場合は元の背景を適用します。
すべてのビューが実装されているため、setBackgroundColor
キャストは行いませんでしたTextView
が、少なくともアプリケーションをさらに開発するための開始点としては、例で十分です。
このための完全なコードは次のとおりです。
public class Main extends Activity implements OnTouchListener{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Set the listener for the parent/container view
findViewById(R.id.cont).setOnTouchListener(this);
//Get a hold of the view and create the Rect for the bounds
View target = findViewById(R.id.target);
Rect b = new Rect();
//Get the bounding box of the target view into `b`
target.getGlobalVisibleRect(b);
}
public boolean onTouch(View v, MotionEvent event) {
//Check if it's within the bounds or not
if(b.contains((int)event.getRawX(),(int) event.getRawY())){
target.setBackgroundColor(0xffff0000);
}else{
target.setBackgroundColor(0xff000000);
}
//You need to return true to keep on checking the event
return true;
}
}
前のコードのユーザーインターフェイスは、IDを使用した線形レイアウトと、IDcont
を使用したビュー(このTextView
場合はa)target
です。残りは完全にデフォルトなので、ここに貼り付ける意味はありません。これは、実際のデバイスで試してみるときにエミュレータとymmvでのみテストしたことに注意してください。ただし、私が考える限り、問題はないはずです。
関連ドキュメント: