Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I implement onTouch function android?

Hi I want to create aplication which loads large image, and simple gesture I can move across it. I have to image printed out but I can not implement onTouch so it remains stationary. Any help apreseated. Thanks

My code for drawing out the picture:

@Override protected void onDraw(Canvas canvas) {
          super.onDraw(canvas);
                   Paint paint = new Paint();
            paint.setStyle(Paint.Style.FILL);

            // make the entire canvas white
            paint.setColor(Color.WHITE);
            canvas.drawPaint(paint);
paint.setStrokeWidth(1);
            paint.setPathEffect(null);
            paint.setColor(Color.GRAY);
            paint.setAntiAlias(true);


            for (int i=1; i < 100; i++){
                canvas.drawLine(0, i*1 , 600, i*20, paint);
                canvas.drawLine(i*1 ,0, i*20, 600, paint);      
            }
}
like image 644
suter Avatar asked Jan 20 '23 09:01

suter


2 Answers

As you're already writing a custom view, instead of setting a listener, you might want to incorporate a GestureDetector and listener inside your view, and above all avoid the switch(e.getAction()) thing, because OnGestureListener is on a higher level and will provide you with event already detected as a gesture (scroll, fling, long press...).

See an example here.

like image 93
bigstones Avatar answered Jan 23 '23 00:01

bigstones


Within your view, you need to create the "OnTouchListener" which should look something like this:

myView.setOnTouchListener(new View.OnTouchListnener(){
    @Override
    public boolean onTouch(View v, MotionEvent e){
        switch(e.getAction()){
        case MotionEvent.ACTION_DOWN:
        //and code will go here for putting the finger on the screen

I would have a look at MotionEvent and looking at the various levels. You'll want to pay attention to how it can pack several bits of movement information into one MotionEvent.

like image 32
wheaties Avatar answered Jan 23 '23 00:01

wheaties