サークルを表示するカスタムビューを作成しました(ユーザーがこの "ボール"とさまざまなやり方でやりとりすることができます) 私の主なアクティビティクラスから、 "プロパティは、この場合、その色を変更します。Android - メインアクティビティからカスタムビューでメソッドを呼び出す方法
私の問題は、MainActivityクラスからさまざまなメソッドを呼び出そうとすると何も起こりません(エラーはなく、アプリケーションは実行されますが、実行しません)。しかし、CircleViewクラスから実行すると、ここでは作品(タッチ時に色を変えるなど)
は私のカスタムViewクラス(CircleView.java)です:
public class CircleView extends View {
private int circleColor = Color.GREEN;
private Paint paint;
public CircleView(Context context) {
super(context);
init(context, null);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_SCROLL:
this.circleColor = setRandomColor();
invalidate();
break;
case MotionEvent.ACTION_DOWN:
this.circleColor = setRandomColor();
invalidate();
break;
}
return super.onTouchEvent(event);
}
public CircleView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context, attrs);
}
private void init(Context context, AttributeSet attrs) {
paint = new Paint();
paint.setAntiAlias(true);
}
public void setCircleColor(int circleColor) {
this.circleColor = circleColor;
invalidate();
}
public int setRandomColor() {
Random random = new Random();
int randomColor = Color.argb(255, random.nextInt(), random.nextInt(), random.nextInt());
return randomColor;
}
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//...
//someXvalue, someYvalue, someRadius are being set here
//...
paint.setColor(circleColor);
canvas.drawCircle(someXvalue, someYvalue, someRadius, paint);
}
}
そして、ここでは私のMainActivity.javaクラスです:
public class MainActivity extends Activity implements
GestureDetector.OnGestureListener {
private GestureDetectorCompat mDetector;
CircleView circle;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDetector = new GestureDetectorCompat(this, this);
circle = new CircleView(this);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
this.mDetector.onTouchEvent(event);
return super.onTouchEvent(event);
}
@Override
public boolean onDown(MotionEvent event) {
return true;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent event) {
circle.setCircleColor(circle.setRandomColor(0));
circle.invalidate();
return true;
}
}
私はAndroid開発の初心者ですし、Javaも新しくなっています。私はそれがまだ完全に理解していないものである文脈と何かになる可能性があることを理解しています。 TouchEventsで何かになるかもしれません。そこにいる誰かが私の間違いを見ることができると確信しています。どんな助けもありがとうございます。
ああ、それは問題でした!私はちょうど " circle = new CircleView(this);"を変更しました。 〜 "Circle =(CircleView)findViewById(R.id.circleView);" "今はそれが動作します。これを見ていただきありがとうございます。 – Zerato
@Zerato私は(私とMr.Gabe)が助けてくれることをうれしく思います –