「カーソル」を作成するクラスは次のとおりです。
public class Ball extends View {
private final float x;
private final float y;
private final int r;
private final Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
public Ball(Context context, float x, float y, int r) {
super(context);
mPaint.setColor(0xFFFF0000);
this.x = x;
this.y = y;
this.r = r;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawCircle(x, y, r, mPaint);
}
}
そして、これを機能させるために私がやろうとしている私のスイッチ/ケースです。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FrameLayout main = (FrameLayout) findViewById(R.id.main_view);
final TextView textView = (TextView)findViewById(R.id.textView);
final View touchView = (View) findViewById(R.id.touchView);
main.setOnTouchListener(new View.OnTouchListener() {
Ball ball;
@Override
public boolean onTouch(View v, MotionEvent event) {
int eventAction = event.getAction();
textView.setText(String.valueOf(" Azimuth: " + -1*(Math.round((event.getX()/13.33333333)-30)))
+ "\n Elevation: " + String.valueOf(-1*(Math.round((event.getY()/18.33333333)-30))));
float x = event.getX();
float y = event.getY();
FrameLayout flView = (FrameLayout) v;
//This creates a ton of circles. I just want one to appear and then go away.
//flView.addView(ball);
switch(eventAction){
case MotionEvent.ACTION_DOWN:
ball = new Ball(findViewById(R.id.main_view).getContext(), x, y, 5);
flView.addView(ball);
break;
case MotionEvent.ACTION_UP:
flView.removeView(ball);
break;
case MotionEvent.ACTION_MOVE:
ball = null;
break;
}
return true;
}
});
}
基本的には画面をタッチするとボール/円/カーソルを作成できますが、別の場所をクリックすると削除して別のものを作成したいです。新しいボール/円/カーソルを一度に1つずつ生成し続けることができるため、可能であれば前のものを削除する方法を見つけようとしています。