Blog purpose for android basic example for android app developer. any query please my contact

Saturday 2 March 2024

Android Studio Motion Event with Code Example

 Android Studio Motion Event with Code Example


Today is Learning Android Studio Motion Event with Code Example



1.Main Activity:


import android.os.Bundle;

import android.app.Activity;

import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Canvas;

import android.view.Menu;

import android.view.MotionEvent;

import android.view.SurfaceHolder;

import android.view.SurfaceView;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.View.OnTouchListener;

 

public class MainActivity extends Activity implements OnTouchListener {

    Ourview v;

    Bitmap bm;

    float x, y;

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        // TODO Auto-generated method stub

        super.onCreate(savedInstanceState);

        v = new Ourview(this);

        v.setOnTouchListener(this);

        bm = BitmapFactory.decodeResource(getResources(), R.drawable.image4);

        x = 0;

        y = 0;

        setContentView(v);

    }

 

    @Override

    protected void onPause() {

        // TODO Auto-generated method stub

        super.onPause();

        v.pause();

    }

 

    @Override

    protected void onResume() {

        // TODO Auto-generated method stub

        super.onResume();

        v.resume();

    }

 

    // surface view is going to be a thread now

    class Ourview extends SurfaceView implements Runnable {

 

        Thread th = null;

        SurfaceHolder holder;

        boolean var = false;

 

        public Ourview(Context context) {

            super(context);

            // TODO Auto-generated constructor stub

            holder = getHolder();

        }

 

        @Override

        public void run() {

            // TODO Auto-generated method stub

            while (var = true) {

                // do stuff

                if (!holder.getSurface().isValid()) {

                    continue;

                }

                Canvas c = holder.lockCanvas();

                /*

                 * while drawing on a canvas we lock it and after drawing on it

                 * we unlock it

                 */

 

                c.drawARGB(255, 250, 150, 20);// rgb values

                c.drawBitmap(bm, x - (bm.getWidth() / 2), y

                        - (bm.getHeight() / 2), null);

                holder.unlockCanvasAndPost(c);

            }

        }

 

        public void pause() {

 

            var = false;

            while (true) {

                try {

                    th.join();

                    /*

                     * would pause the currently executing thread till the user

                     * finishes its job

                     */

                } catch (InterruptedException e) {

                    // TODO Auto-generated catch block

                    e.printStackTrace();

                }

                break;

            }

            th = null;

        }

 

        public void resume() {

            var = true;

            th = new Thread(this);

            th.start();

        }

    }

 

    @Override

    public boolean onTouch(View v, MotionEvent me) {

        // TODO Auto-generated method stub

 

        try {

            Thread.sleep(80);

        } catch (InterruptedException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

        switch (me.getAction()) {

        case MotionEvent.ACTION_DOWN:

            x = me.getX();

            y = me.getY();

            break;

 

        case MotionEvent.ACTION_UP:

            x = me.getX();

            y = me.getY();

            break;

 

        case MotionEvent.ACTION_MOVE:

            x = me.getX();

            y = me.getY();

            break;

 

        default:

            break;

        }

 

        return true;

    }

 

}





No comments:

Post a Comment