2017-06-13 12 views
0

まずは:Android開発が初めてで、われわれが必要としていることを理解していない練習があります。Android OnTouchがエラーを起こします

public class MainActivity extends AppCompatActivity{ 

TouchView touchView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //setContentView(R.layout.activity_main); 
    LinearLayout ll = new LinearLayout(this); 
    ll.setOrientation(LinearLayout.VERTICAL); 
    this.setContentView(ll); 

    float x = 500; 
    float y = 500; 
    float size = 1000; 

    touchView = new TouchView(x,y,size,this); 
    touchView.setOnTouchListener(this); 
    ll.addView(touchView); 
} 

public boolean onTouch(View view, MotionEvent motionEvent){ 
    float x = motionEvent.getX(); 
    float y = motionEvent.getY(); 

    return true; 
} 

touchViewクラスでは、以下のように:私たちは、touchViewにOnTouchListenerを追加する必要が

は、当然によれば、以下に説明するように、これは行うことができますが、それは動作していないスライド

public class TouchView extends View { 

public float x,y,size; 
Paint paint = new Paint(); 

public TouchView(float xcor, float ycor, float sizenum, Context context) { 

    super(context); 
    x = xcor; 
    y = ycor; 
    size = sizenum; 
    paint.setAntiAlias(true); 

} 



@Override 
protected void onDraw(Canvas canvas){ 
    super.onDraw(canvas); 

    paint.setColor(Color.BLUE); 

    canvas.drawCircle(x, y, size, paint); 
} 

public TouchView(Context context, AttributeSet attributeSet){ 

    super(context, attributeSet); 

} 
} 

残念ながら、それは動作していないし、我々はそれを動作させる方法について全面的な損失になっています。誰かが私たちを助けることができますか?

答えて

0
public class MainActivity extends AppCompatActivity implement OnTouchListener { 

    TouchView touchView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //setContentView(R.layout.activity_main); 
     LinearLayout ll = new LinearLayout(this); 
     ll.setOrientation(LinearLayout.VERTICAL); 
     this.setContentView(ll); 

     float x = 500; 
     float y = 500; 
     float size = 1000; 

     touchView = new TouchView(x,y,size,this); 
     touchView.setOnTouchListener(this); 
     ll.addView(touchView); 
    } 

    public boolean onTouch(View view, MotionEvent motionEvent){ 
     float x = motionEvent.getX(); 
     float y = motionEvent.getY(); 

     return true; 
    } 

} 
+0

これは私たちの現在の問題を解決しました。何らかの理由でこれを試したときにはうまくいきませんでした。幸いなことに、私は別の編集をしなければなりません。 – josap

+0

ワンクリックで1回ではなく2回オンタッチがトリガーされる理由を知っていますか? – josap

+0

最初にビューを押すと 'ACTION_DOWN'が呼び出されますので、' ACTION_UP'と呼ぶでしょう。ビューから指を離してください。 –

関連する問題