এন্ড্রয়েড ডেভেলপমেন্ট [পর্ব-১৭] :: OnTouchListener ব্যবহার করে surface এ Bitmaps আঁকা

গত পর্বে আমরা SurfaceView ক্লাস এ Canvas Lock, Draw এবং Post এর ব্যবহার দেখেছিলাম। আজকের পর্বে আমরা OnTouchListener ব্যবহার করে surface এ বলের সাহায্যে Bitmaps আঁকব।

প্রথমেই Ourview ক্লাসের অবজেক্ট v কে onCreate মেথডের ভিতরে OnTouchListener দ্বারা সেট করে দিব। এরর প্রদর্শন করলে set OnTouchListener এ হভার করলে এর অপশনগুলো থেকে MainActivity ক্লাস এ OnTouchListener implements করে দিব। MainActivity ক্লাস এ এরর প্রদর্শন করলে add unimplemented methods দ্বারা onTouch মেথড সেট করে দিব।

package com.nayeem.android14;
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.OnTouchListener;

public class MainActivity extends Activity implements OnTouchListener {

Ourview v;

Bitmap ball;

float x,y;

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

v = new Ourview(this);

v.setOnTouchListener(this);

ball = BitmapFactory.decodeResource(getResources(), R.drawable.rball);

x=y=0;

setContentView(v);

}

@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
v.pause();

}

@Override
protected void onResume() {

super.onResume();
v.Resume();
}

@Override
public boolean onTouch(View arg0, MotionEvent touch) {

x= touch.getX();

y= touch.getY();

return false;
}

public class Ourview extends SurfaceView implements Runnable {

Thread ourThread= null;

SurfaceHolder holder;

boolean value1 = false;

public Ourview(Context context) {

super(context);

holder = getHolder();

}

@Override
public void run() {

while (value1== true)
{
if(!holder.getSurface().isValid())

{
continue;

}

Canvas c = holder.lockCanvas();

c.drawARGB(255, 255, 255, 255);

c.drawBitmap(ball, x, y, null);

holder.unlockCanvasAndPost(c);

}

}

public void pause() {

value1= false;

while(true)
{

try
{
ourThread.join();
}
catch (InterruptedException e)
{
e.printStackTrace();
}

break;

}

ourThread = null;
}

public void Resume() {

value1= true;

ourThread = new Thread(this);

ourThread.start();

}

}

}

তারপর Bitmap দিয়ে ball ডিক্লিয়ার করে দেই এবং float এর value হিসেবে x, y কেও ডিক্লিয়ার করে দেই। onCreate মেথডের ভিতরে ball এর জন্য ball = BitmapFactory.decodeResource(getResources(), R.drawable.rball); এভাবে ডিক্লিয়ার করে দেই। x, y এর মান initially 0 করে দেই।তারপর run মেথডের ভিতরে lockCanvas এবং unlockCanvasAndPost এর মাঝে Bitmap আঁকার জন্য c.drawBitmap(ball, x, y, null); এভাবে ডিক্লিয়ার করে দেই।

তারপর আমরা onTouch মেথড কে সেট করব।অ্যাপটি রান করার পর যে পজিশানে ক্লিক করা হবে সেই পজিশানে যাওয়ার জন্য x ও y value দুটিকে x= touch.getX(); y= touch.getY(); এভাবে সেট করে দেই। এখন অ্যাপটি রান করলে অ্যাপ এর স্ক্রিনএ যে পজিশানে ক্লিক করা হবে সেই পজিশানে বলটি শো করবে।

এই ছিল আজকের OnTouchListener ব্যবহার করে surface এ Bitmaps আঁকা


এন্ড্রয়েড ডেভেলপমেন্ট এর সর্বশেষ পর্ব সম্পর্কে নোটিফিকেশান পেতে লাইক করুন ফেসবুকের এই পেইজে এ।

Previous
Next Post »

পোস্ট সম্পর্কিত সমস্যার জন্য মন্তব্য দিন।ডাউনলোড লিঙ্ক এ সমস্যা জন্য ইনবক্স করুন Aimzworld007
ConversionConversion EmoticonEmoticon

Thanks for your comment