This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
I was having trouble resizing table columns. All of the solution I found would work until my table was larger than my viewport, then they failed. I finally found a (relatively) easy solution with jQuery UI.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
নতুন প্রোজেক্ট খোলার সাথেই যদি নিচের ছবির মত উইন্ড দেখা নাহ যায় তবে ৩ নম্বর বক্স এর পাশে যে Project লেখা আছে সেখানে ক্লিক করুন । ১ নম্বর বক্স এ দেখতে পাই MainActivity.java ( এখানে আমরা আমাদের জাভা কোডগুলো লিখবো ) । তার পাশেই আর একটি xml ফাইল আছে যার নাম activity_main.xml ( বক্স নং ২)। এই ফাইলটির উপর ক্লিক করুন ( এখানে অ্যাপের ডিজাইন করা হয়) ।
এখন ৪ নম্বর বক্সে আসি । এখানে ২ টা জিনিস দেখতে পাচ্ছেন, Design এবং Text। এর মানে আমরা অ্যাপের ডিজাইন ২ ভাবে করতে পারি ( ড্রাগ-ড্রপ এর মাধ্যমে , আবার হাতে লিখে – আমরা হাতে লিখেই শিখবো , ড্রাগ-ড্রপ দ্বারা অ্যাপ ডিজাইন করা মোটেও ভালো প্র্যাকটিস নয়)। এখন নিচের Text বাটনে ক্লিক করলে দেখতে পাবেন লেআউট ফাইলে ১টি টেক্সভিউ (Hello World) অটোমেটিক শো করছে । বাই ডিফ্লট যে লেআউট শো করেছে সেটি হল ConstraintLayout
টেক্সভিউটি মোবাইলে কোন অবস্থানে রয়েছে তা দেখতে ডান পাশের একদম উপরে Preview তে ক্লিক করুন ( যদি উপরের ছবি অনুযায়ী মোবাইল শো নাহ করে) ।
এখন আপনি যদি চান এখানে আপনার নাম দেখাবেন তাহলে <TextView ট্যাগের ভিতরে যেয়ে android:text=”Hello World!” যে লেখা আছে সেখান কেটে দিয়ে আপনার নাম লিখে দিন বা যা খুশি তাই । যেমন android:text=”Mashiur Rahman Sajib” । লেখাটি খুব ছোট । আমরা চাই লেখাটি আর একটু বড় দেখাক তাহলে android:text=”Mashiur Rahman Sajib” এর পর এন্টার প্রেস করে লিখে দিন android:textSize =”23sp” । আপনি যখন xml ফাইলে কোন কিছু লিখতে যাবেন তখন বারবার android:এই-সেই লেখার দরকার নেই । ধরুন আপনি textSize ট্যাগটি লিখবেন তাহলে শুধু t লিখলেই দেখবেন Android Studio আপনাকে সাজেশন দিবে t তে কোন কোন ট্যাগ আছে । সেখান থেকে textSize ট্যাগে ক্লিক করলেই চলে আসবে ।
তো আমাদের প্রথম কোড করা শেষ , এখন চলুন আমাদের এই এপ্লিকেশন মোবাইলে চালিয়ে দেখা যাক । এই এপ্লিকেশন গুলো মোবাইলে কিভাবে চলে তা দেখার জন্য Android Emulator নামে একটি ভার্চুয়াল মোবাইল আছে, আপনি চাইলে আপনার এই এপ্লিকেশন রিয়েল মোবাইলেও চালাতে পারেন । কিভাবে রিয়েল মোবাইলে আপনার এপ্লিকেশন চালাবেন তা দেখতে ক্লিক করুন –
এখন আমরা যদি ভার্চুয়াল মোবাইলের মাধ্যমে এপ্লিকেশন চালাতে চাই তাহলে একদম উপরে ৫ নম্বর বক্সের রান বাটনে ক্লিক করুন । বাই ডিফল্ট এখানে কোন ডিভাইস থাকলে সেটিতে ক্লিক করে OK বাটনে প্রেস করুন । আর যদি কোন ভার্চুয়াল ডিভাইস তৈরি করা নাহ থাকে তবে চলুন আমরা আমাদের ইচ্ছামত একটি ভার্চুয়াল ডিভাইস তৈরি করে নেই ।
এর জন্য প্রথমে Create New Virtual Device বাটনে ক্লিক করুন –
এখানে আপনি বিভিন্ন সাইজ ও রেজুলেশনের ফোন দেখতে পাচ্ছেন । এর ভিতর যে কোন একটি সিলেক্ট করুন ।
আপনি যদি চান যে আপনার মোবাইল এর সাইজ এর চেয়েও বড় হবে কিংবা কোন কিছুর সাথেই মিল হচ্ছে নাহ তবে New Hardware Profile এ ক্লিক করুন –
এখানে আপনি আপনার Device Name– চাইলে আপনি আপনার নামও বসিয়ে দিতে পারেন, Device Type – মোবাইলের সাইজ কত হবে, Screen – রেজুলেশন কেমন হবে , Memory – আমরা কমপক্ষে ২ জিবি অর্থাৎ ২০৪৮ এমবি জায়গা দিয়ে দিব, Input – প্রায় বেশীর ভাগ স্মার্টফোনেই ৩টি বাটন(back,home,menu) থাকে আপনি ভার্চুয়াল মোবাইলেও সেরকম চাইলে Has Hardware Buttons এ টিক দিয়ে রাখুন আবার আলাদা A-Z 0-9 কি-বোর্ড থাকে,এজন্য Has Hardware Keyboard টিক দিয়ে রাখুন । Supported device states – মোবাইলটা ২দিকেই ঘুরাতে চাই কিনা Cameras – ফ্রন্ট ব্যাক ২ ক্যামেরাই চাই কিনা Sensors – মোবাইলের সাথে থাকা সেন্সর গুলো ইউজ করতে চাই কিনা Default Skin –
এগুলো সেট করে Finish বাটনে ক্লিক করুন । তাহলে দেখবেন এখন অনেকগুলো মোবাইলের যে লিস্ট ছিল সেখানে আপনার তৈরি ওই মোবাইলের নামও চলে এসেছে । এরপর সেটি সিলেক্ট করে Next বাটনে ক্লিক করুন ।
এখন আপনি আপনার মোবাইলে কোন অপারেটিং সিস্টেম চালাতে চান সেটি ডাউনলোড করে নিন । বাই ডিফল্ট যদি কোন অপারেটিং সিস্টেম ডাউনলোড করা থাকে তবে দেখবেন তার পাশে Download শব্দটি লেখা নেই । সেটি পছন্দ নাহ হলে এবং আপনাকে যে Recommended অপারেটিং সিস্টেম গুলো বলা হয়েছে সেগুলো একটিও যদি পছন্দ নাহ হয় তবে x86 Images থেকে কোন অপারেটিং সিস্টেম ডাউনলোড করে নিন ।
তাহলে দেখা যাক আমরা অপারেটিং সিস্টেম কিভাবে ডাউনলোড করবো । প্রথমে ডাউনলোড বাটনে ক্লিক করুন -> এরপর আপনাকে ওদের লাইসেন্স Accept করার কথা বলবে,
সেখানে ক্লিক করে Next বাটনে ক্লিক করুন । ডাউনলোড হয়ে আপনা-আপনি সেটি ইন্সটল হয়ে যাবে, একটু সময় লাগবে , অপেক্ষা করুন ।
এরপর আপনার পছন্দের অপারেটিং সিস্টেম সিলেক্ট করে Next বাটনে ক্লিক করুন –
এখানে আপনি চাইলে আবার আপনার সিস্টেম চেঞ্জ করতে পারবেন । এখানে , Startup orientation – এখানে Portrait ও Landscape ২ টি অপশন আছে , যখন মোবাইল ওপেন হবে তখন সেটি সোজা নাকি বাঁকানো অবস্থায় ওপেন হবে । Show Advance Settings – এ গেলে আরো কিছু অপশন পাবেন , যেমন –
Camera – ভার্চুয়ালি মোবাইল দিয়ে যখন আপনি পিক তুলতে যাবেন তখন একটি ব্লাক ব্যাকগ্রাউন্ড ওপেন হয় । এখন যদি ফ্রন্ট ও ব্যাক ক্যামেরায় যদি চান ল্যাপটপ এর ওয়েবক্যাম দিয়ে পিক তুলতে তবে webcam() অপশন সিলেক্ট করে নিন । Network – মোবাইলের নেটওয়ার্ক কেমন হবে সেটি Device Frame – মোবাইলটা দেখতে রিয়েল মোবাইলের মত দেখাবে কিনা নাকি শুধু স্ক্রিন
এরপর Finish বাটনে ক্লিক করুন ।
এখন দেখুন আপনি আপনার এপ্লিকেশন রান করার সময় যে ভার্চুয়াল ডিভাইস দেখতে পাচ্ছেন সেটি সিলেক্ট করে ok বাটনে ক্লিক করুন ।
একটু অপেক্ষা করুন । এখন নিশ্চয়ই আপনার নাম দেখতে পাচ্ছেন 🙂
আপনি যেহেতু একদম নতুন তাই এই পর্বটি শুধু একবার চোখ বুলিয়ে যান 😊
আপনি ভার্চুয়াল মোবাইল দিয়ে ফোনকল বাদে সবকিছু করতে পারবেন । এটি রিয়েল মোবাইলের মতই । যদি ফোনকলের ফ্রি সফটওয়্যার নামিয়ে নেন তবে ফোনকলও দিতে পারবেন । তাই কাউকে মেইল পাঠানো কিংবা কোন স্পর্শকাতর বিষয়ে অবশ্যই দৃষ্টি রাখবেন ।
প্রথমেই আমরা একটি অ্যাপের ডিজাইন করা শেখবো । তো আপনার প্রোজেক্ট এর activity_main.xml এ চলে আসুন ।
Tag প্রথমেই ট্যাগ নামক শব্দটির সাথে চলুন পরিচিত হওয়া যাক । HTML এর মত XML এও আমরা ট্যাগ ব্যাবহার করে থাকি , একটি ট্যাগ দেখতে ঠিক এরকম < tag_name > </ tag_name > কিংবা < tag_name /> < tag_name এখানে যে লেখাগুলো দেখেবন সেগুলো হল এই ট্যাগের বৈশিষ্ট অর্থাৎ এই উপাদানটি দেখতে কিংবা আচারনে কিরকম হবে > আর এখানে যে লেখাগুলো লেখা হয় সেগুলো এই ট্যাগের বাচ্চা-কাচ্চা অর্থাৎ এই ট্যাগের আন্ডারে অন্য কোন উপাদান </ tag_name >
XML আমরা যে ল্যাঙ্গুয়েজ দ্বারা অ্যাপের ডিজাইন করি সেটি হল Xml । xmlফাইলে গেলে কিছু টেক্স অটোমেটিক দেয়া আছে দেখতে পাবেন , এগুলো আপাতত বুঝার মত কিছু নাহ , শুধু জেনে রাখা ভালো । তাই একবার চোখ বুলিয়ে রাখুন 😊
<?xml version="1.0" encoding="utf-8"?>
একদম উপরে দেয়া এই লাইনটি দ্বারা বুঝায় আমরা যে Xml দিয়ে লিখবো সেটি হল Xml এর 1.0 ভার্সন । এবং এই Xml যখন বাইটকোডে রূপান্তরিত হবে তখন utf-8 এর ফন্ট দ্বারা রূপান্তরিত হবে ।
এরপর যে <android.support.constraint.ConstraintLayout
দেখাচ্ছে এটা হল আমাদের অ্যাপের রুট লেআউট ফাইল, ইচ্ছা হলে অন্যান্য আরো লেআউট ফাইল নিয়ে আমরা কাজ করতে পারবো, এই লেআউট এর ভিতরেই আমরা আরো অনেক লেআউট ব্যাবহার করতে পারবো ।
এরপর আমরা যে লাইনটা দেখতে পাচ্ছি এটার মানে হল আমরা যে Xml ডকুমেন্টটা লিখবো তা অ্যান্ড্রোয়েড এর জন্য ব্যাবহার করবো ।
xmlns:tools="http://schemas.android.com/tools"
এর মানে আমরা যে অ্যাপটা বিল্ড করতেছি তা অ্যান্ড্রোয়েড স্টূডিও এর টুলস ব্যাবহার করার মাধ্যমে ।
এরপর নিচে যা লেখা আছে এইগুলোও একবার চোখ বুলিয়ে যান । পরে নিজেই বুঝতে পারবেন । আপনি অ্যান্ড্রোয়েড স্টূডিও তে বিগেনার হয়ে থাকলে শুরুতেই মাথা ঘামানোর প্রয়োজন নেই 😊
Object TextView , EditText , Button , ImageView সহ সকল ধরনের ভিউ নিয়ে যখন আমরা কাজ করবো তখন সেই সব ভিউ এর অব্জেক্ট তৈরি করে নিতে হবে এক্টিভিটি ক্লাসে । অ্যান্ড্রোয়েড লাইব্রেরী তে এইসকল ভিউ এর আচরন কি রকম হবে , কোন ম্যাথড কি রকম কাজ করবে তার সকল কিছু TextView , EditTex ক্লাসে তৈরি করা আছে । xml ফাইলে আমরা প্রতিটি ভিউ এর জন্য আইডি দিয়ে দিব । এরপর এক্টিভিটি ক্লাসে অব্জেক্ট তৈরি করে সেই অব্জেক্ট এর সাথে ভিউ এর আইডি যোগ করে দিব । এর ফলে আমরা এক্টিভিটি ক্লাসের অব্জেক্ট নিয়ে যা করবো তার প্রতিফলন ওইসব ভিউ তে ঘটবে ।
আপাতত জেনে রাখুন । পরে অনেক বার প্রয়োজন পড়বে । তখন আবার দেখে নিবেন 😊
চলুন Android Studio এর সাথে হালকা পরিচিত হয়ে নেয়া যাক –
1 – এ রকম ফাইলগুলো হল Activity Class । একটি অ্যাপে অসংখ্য Activity Class থাকে । Activity হল ধরুন পত্রিকা হল একটি অ্যাপ । তাহলে পত্রিকার প্রতিটি পাতা হল এক একটি Activity । প্রোগ্রামিং কোডগুলো আমরা Activity Class এ লিখে থাকি ।
2 – এখানে অ্যাপের ডিজাইন করা হয় । এগুলোকে বলে layout ফাইল । ডিজাইন করা হয় xml এর সাহায্যে । ডিজাইন ২ ভাবে করা যায় – ৩ ও ৪ নম্বরে দেখি
3 – প্রতিটি ট্যাগ হাতে লেখার মাধ্যমে ডিজাইন করা যায় । মাঝখানে যে লেখাগুলো দেখতে পাচ্ছেন এগুলই xml লেখা এবং এভাবেই হাতে হাতে লিখবো
4 – ড্রাগ-ড্রপ এর মাধ্যমে ডিজাইন করা যায় । ডিজাইন এ ক্লিক করলেই দেখতে পাবেন Palette এ অসংখ্য ভিউ আছে Like – TextView , Button , CheckBox । এগুলোর উপর ক্লিক করে টেনে মোবাইলের স্ক্রিনের ভিতর নিয়ে আসলেই সেটা সেখানে সেট হয়ে যাবে । তবে এরকম ভাবে ডিজাইন করতে গেলে অনেক অসুবিধা আছে । তাই আমরা হাতে লিখেই ডিজাইন করবো
5 – ডিজাইন করার সময় সাথে সাথে যদি দেখতে চান মোবাইলে কিভাবে পরিবর্তন হচ্ছে তবে Preview তে ক্লিক করুন
6 – এর পাশে যে সবুজ রঙের বাটনটি দেখতে পাচ্ছেন । এটির মাধ্যমে অ্যাপ রান করা হয় । আমাদের অ্যাপ মোবাইলে কিভাবে আচরন করে তা দেখবো এটি তে ক্লিক করার মাধ্যমে
7 – AVD Manager ( Android Virtual Device Manager ) । অ্যাপ ২ ভাবে রান করে দেখা যায় । রিয়েল মোবাইল অর্থাৎ আপনার কাছে থাকা স্মার্টফোনের সাহায্যে আবার এটির মাধ্যমে ভার্চুয়ালি একটি স্মার্টফোন তৈরি করার মাধ্যমে । আপনি আপনার তৈরি এই ভার্চুয়ালি মোবাইল আপনার ইচ্ছামত সকল সেটিংস চেঞ্জ করতে পারবেন যখন খুশী তখন । মনে রাখবেন এই ভার্চুয়াল মোবাইল রিয়েল ডিভাইস এর মতই । শুধু এখানে ব্যালেন্স নেই বলে আপনি ফোন দিতে পারবেন নাহ । এছাড়া রিয়েল ডিভাইস দিয়ে আপনি যা করেন তার সবকিছুই করা যাবে ।
8 – Android Studio এর সকল সেটিংস ও যে সকল লাইব্রেরী দরকার তা এখানে পাওয়া যাবে
9 – আমাদের অ্যাপে যত রকমের ফাইল আছে তার লিস্ট দেখা যাবে এখানে
10 – প্রতিটি ফাইলের ভিতর কি কি আছে তা দেখতে ফাইলটি ওপেন করে এই Structure এ ক্লিক করুন
৯ নং এর পাশেই দেখুন Android লেখা একটি বাটন আছে । ওখানে Android নাহ থেকে অন্য কিছু থাকলে বাটনের উপর ক্লিক করে Android লেখা চাপুন । ফলে আপনি app ও Gradle Scripts দেখতে পাবেন app এ ক্লিক করলে দেখতে পাবেন ৩টি ফোল্ডার – manifests , java এবং res
11 – manifests এর ভিতরে থাকে ১টি xml ফাইল যার নাম – AndroidManifest.xml । এখানে অ্যাপের প্রধান সকল গুনগুলো দেয়া থাকে । অ্যাপের নাম, আইকন, থিম, কি কি Activity Class আছে এসব সহ আরো কিছু, নিজেই দেখে নিন
12 – java এর ভিতরেও ৩টি ফোল্ডার পাবেন । আপাতত আমরা শুধু ১ম ফোল্ডার টি নিয়ে কাজ করবো । ১৪ নম্বর যে দেয়া আছে সেটি নিয়ে । এখানে সকল Activity Class এর লিস্ট থাকে
13 – res এর ভিতর সকল রিসোর্স উপাদানগুলো থাকে থাকে । এর ভিতরে ১৫,১৬,১৭,১৮ ফাইলগুলো থাকে
15 – ধরুন আমরা একটা বাটন ডিজাইন করে সেটি অনেক জায়গায় ব্যাবহার করতে চাই । তাহলে সেই ডিজাইন এই ফাইলের ভিতরে রেখে আমরা ওইসব জায়গায় ফাইলটি কল করলেই হবে । এছাড়া ভিডিও,অডিও রাখা হয় এই ফোল্ডার এর ভিতর । ইমেজও রাখা যায় তবে ইমেজ রাখতে ১৭ নম্বর ফাইলটি ব্যাবহার করা ভালো
16 – অ্যাপের ভিতর সকল লেআউট ফাইলের লিস্ট এখানে থাকে । Activity Class ছাড়াই শুধুমাত্র লেআউট ফাইল খুলতে চাইলে layout এর উপর রাইট ক্লিক করে খুলতে হবে ।
17 – এখানে অ্যাপে ব্যাবহার করা সকল ইমেজ ফাইল রাখা হয় , ইমেজের নামের ভিতর স্পেস কিংবা প্রথমে সংখ্যা রাখবেন নাহ
18 – values এর ভিতরে ৩ টি ফাইল থাকে । colors.xml , strings.xml , styles.xml । colors.xml এর ভিতর আমরা সকল রঙ এর কোড ও নাম লিখে দিয়ে , সেই নামগুলো xml এর ভিতর ব্যাবহার করবো । কোডের ভিতর কিংবা লেআউট ফাইলের ভিতর আমরা যত string ব্যাবহার করবো সেসব strings.xml এ লিখে দিব । ডায়রেক্টও লেখা যায় তবে সেটা ভালো প্র্যাকটিস নয় । styles.xml এর ভিতর আমরা একটা ভিউ এর স্টাইল লিখে রেখে সেই স্টাইল ভিউকে কল করে থাকি । আমরা সাধারণত xml ফাইলেই ডিজাইন করে থাকি , তো কিছু কমন ডিজাইন থাকে যা বার বার লিখতে হয় । এই সমস্যা থেকে রেহাই পেতে, ওই সব ডিজাইন এখানে লিখে দেয়া হয় । প্র্যাকটিস করলেই আস্তে আস্তে সবগুলো বুঝে যাবেন
19 – এটি প্রোজেক্ট গ্রেডেল ফাইল । প্রোজেক্ট এর ভিতর অনেক সময় অনেক লাইব্রেরী এড করতে হয় , সেগুলো এখানে এড করে নিব , এখানে তেমন একটা কাজ নেই বললেই চলে
20 – এটি অ্যাপ লেভেল গ্রেডেল ফাইল । অ্যাপের সকল প্রয়োজনীয় লাইব্রেরী সহ অ্যাপের ভার্সন ও মিনিমাম কোন মোবাইলে অপারেটিং সিস্টেম এই অ্যাপটি চালাতে পারবে, অ্যাপের টার্গেট মোবাইল অপারেটিং সিস্টেম কোনটা এগুলো লিখে দেয়া হয় । এখানে এটা-অটা নিয়ে প্রায়ই আমাদের কাজ করতে হবে
21 – কম্পিউটারের কোথায় অ্যাপের ফাইলটি আছে তার লোকেশন এটি
এছাড়াও আরো বহুত কিছু আছে যা আস্তে আস্তে আমরা প্রয়োজনের সময় দেখে নিব , তো মোটামুটি Android Studio সম্পর্কে একটা হালকা ধারনা হয়ে গেছে আশা করি
প্রথমে দেখে নেয়া যাক কিভাবে আমরা একটি নতুন প্রোজেক্ট খুলতে পারি । এবার যদি আপনি Android Studio সফটওয়্যারটি রান করেন তাহলে এমন উইন্ডো দেখা যাবে –
এখান থেকে Start a new Android Studio project এ ক্লিক করুন । নতুন আর একটি উইন্ডো চলে আসলো । এবার দেখে নেয়া যাক এখানে কি কি আছে –
Application name – আপনি আপনার অ্যাপের যে নাম দিবেন তা এখানে লিখতে হবে । প্রথম অক্ষর অবশ্যই বড় হাতের হতে হবে । আর একটা ব্যাপার হল অ্যাপের নামের ভিতর স্পেস নাহ রাখাই বেটার । আপনি চাইলে পরবর্তীতে এই নাম পাল্টিয়েও দিতে পারবেন ।
Company domain – এরপর কোম্পানি ডোমেইন নামে একটি বিষয় দেখা যাচ্ছে । তো আমরা যখন প্রোফেশনাল ওয়েবসাইট তৈরি করবো তখন অনলাইনে এর মালিকানা বিষয়ে পরিচয় রাখার জন্য সাধারণত ডোমেইন নামটি ব্যাবহার করা হয় । যদি কোন ডোমেইন নাহ থাকে তবে ওটা ওরকমই রেখে দিন । আগে কাজ তো শেখা যাক 😊.
Project location – আমাদের কম্পিউটার এর কোন ফাইলের ভিতর আমাদের প্রোজেক্ট টি রাখবো তার লোকেশন দিয়ে দিব ।
-> এরপর আমাদের প্রোজেক্ট এ সি++ এবং কটলিন ল্যাংগুয়েজ সাপোর্ট করাবো কিনা তার চেকবক্স দেখতে পাচ্ছি । আমরা যদি সি++ কিংবা কটলিন ল্যাংগুয়েজ দিয়ে আমাদের কোড লিখতে চাই তবে এগুলো টিক দিয়ে দিব।
এরপর Next বাটনে ক্লিক করা যাক –
–> আমরা আমাদের এপ্লিকেশন কোন প্লাটফর্মে ব্যবহার করবো এখানে তা নির্ধারণ করে দিতে হবে । এখানে দেয়া চেকবক্স গুলোর ভিতর যে কোন একটি সিলেক্ট করে কাজ শুরু করতে হবে। একসাথে সবগুলো নিয়েই শুরু করা যাবে তবে তা হযবরল হয়ে যাবে 😊
ধরলাম আমরা Phone and Tablet এর জন্য এপ্লিকেশন বানাবো । এখন Minimum SDK থেকে আমাদের এপ্লিকেশন অ্যায়ন্ড্রোয়েড এর সর্বনিম্ন কোন ভার্সন পর্যন্ত সাপোর্ট করার অনুমতি দিব তা নির্ধারণ করে দিব। এখানে Help me choose ক্লিক করলেই কোন ভার্সন পৃথিবীর কত ভাগ মোবাইলে ব্যাবহার হচ্ছে তার শতকরা হিসাব দেখতে পাবেন এবং কোন ভার্সনে Android এ কি কি ফিচার যুক্ত হয়েছে তার বর্ণনাও দেয়া আছে । আর একটি কথা আমরা নিশ্চয়ই জানি প্রতিটা ভার্সনের জন্য একটি এপিআই নাম্বার থাকে , যত ভার্সন অ্যানন্ড্রোয়েট আপডেট করে এপিআই নাম্বার তত বাড়তে থাকে । ধ্রুন আপনি মিনিমাম এপিআই লেভেল ১৭ সিলেক্ট করলেন তাহলে আপনার তৈরি এপ্লিকেশন এপিআই লেভেল ১৮-১৯-২০ এও সাপোর্ট করবে কিন্তু এপিআই লেভেল ১৬ তে আপনার এপ্লিকেশন সাপোর্ট করবে নাহ। তাহলে আপনি নিশ্চয়ই চাইবেন একদম সর্বনিম্ন এপিআই লেভেল দিয়ে রাখতে কিন্তু সেখানে আবার সমস্যা হল আপগ্রেড ভার্সন গুলোর অনেক ফিচার এর কোড লেখার সময় সাপোর্ট লাইব্রেরী যুক্ত করা সহ অনেক ঝামেলায় পড়তে হয় । তাই আপনি আপনার এপ্লিকেশন এ কিরকম ফিচার ব্যাবহার করবেন এবং আপনার টার্গেট ইউজার কারা সেই মাফিক এপিআই লেভেল সিলেক্ট করবেন । তবে চিন্তার কোন কারন নেই চাইলে পরে আবার এটি যতবার খুশি চেঞ্জ করতে পারবেন । ধরলাম আমরা এপিআই লেভেল ১৭ সিলেক্ট করলাম ।
Phone and Tablet এর নিচেই আর একটি চেকবক্স দেখতে পাচ্ছেন Include Android Instant App support নামে । আপনি যদি চান আপনার তৈরি এপ্লিকেশন টি ইউজার ইন্সটল করা ছাড়াই ইউজ করে দেখতে পারবে তাহলে এই চেকবক্স এ টিক দিয়ে দিন । ইউজার সাধারণত অ্যাপ ইন্সটল করতে চায় নাহ । আপনি একটি নতুন অ্যাপ বানিয়ে যতই ইউজার টানার চেষ্টা করেন নাহ কেন ইউজার সর্বদা আলসেমী করবেই । আবার ইউজার এর মোবাইলে অনেক অ্যাপ ইন্সটল আছে ভেবেও নতুন করে কোন অ্যাপ ইন্সটল করতে চায় নাহ । তাই ইউজার কে ইন্সটল ছাড়াই অ্যাপ ইউজ করার সুবিধা দেয়া উচিত । ইউজার এর অ্যাপটি ভালো লাগলে তখন তার ফোনের র্যাম ফুল থাকলেও সে আপনার অ্যাপ ইউজ করার জন্য অন্য অ্যাপ আনইন্সটল করতে দ্বিধাবোধ করবে নাহ , আর এই সুবিধা দিতে চাইলে সর্বনিম্ন এপিআই লেভেল ২৩ এ রাখতে হবে । তবে সেখত্রে কোডের ভিতরে কিছু এক্সটা কোড লিখে দিতে হবে এবং কোন URL এ তে অ্যাপ টি ভিজিট করা যাবে তা দিতে হবে । তাই আমরা আপাতত এই ঝামেলায় গেলাম নাহ । এগুলো পরেও দেখা যাবে 😊
এরপর Next বাটনে ক্লিক করা যাক –
–> এখানে এক্টিভিটি নামে একটা জিনিস দেখা যাচ্ছে এবং বিভিন্ন রকমের এক্টিভিটির নাম দেখা যাচ্ছে । এক্টিভিটি হল এপ্লিকেশন এর প্রতিটা পাতা । যেমন ধরুন আমরা পত্রিকা পড়ার সময় অনেক গুলো পাতায় বিভিন্ন রকমের তথ্য থাকে এবং একপাতার সাথে আবার অন্য পাতার একটা সম্পর্কও থাকে ( যেমন প্রথম পাতায় একটু খবর ছাপিয়ে বাকি খবর অন্য পাতায় ) তেমনি আমাদের এপ্লিকেশনে যত গুলো এরকম পাতা আছে তার প্রতিটাকে এক একটি এক্টিভিটি বলে । যদি ফেসবুক কে কল্পনা করি তবে দেখা যায় একটি উইন্ডো তে ফ্রেন্ড রিকোয়েস্ট , তার পাশে আর একটি উইন্ডো তে নোটিফিকেশন তারপর পাশে আর একটি বাটনে চাপ দিয়ে আবার হোমপেজে যাওয়া যায় । এপ্লিকেশন এর এই প্রতিটা উইন্ডো কে এক একটি এক্টিভিটি বলে ।
এখন আমাদের এক্টিভিটি কিরকম হবে তার কিছু চিত্র নির্দেশনা এখানে দেয়া আছে । আমরা যেহেতু নতুন শিখতে শুরু করছি তাই আমরা Empty Activity সিলেক্ট করে Next বাটনে ক্লিক করি –
CREATE ANDROID PROJECT 4.png
আমাদের এপ্লিকেশন এ অন্তত একটি এক্টিভিটি থাকতে হবে । প্রতিটি এক্টিভিটি ২টি জিনিস নিয়ে গঠিত । ১টি হল Activity Name (যেখানে জাভা কিংবা কটলিন কিংবা সি++ ল্যাংগুয়েজ দ্বারা আমাদের এপ্লিকেশন এর কোডগুলো লিখে দিব) এবং অন্যটি হল Layout Name (এটি আমরা উইন্ডোতে যা কিছু দেখতে পাবো সেই ভিউ কম্পোনেন্ট গুলো ) । অর্থাৎ আমরা আমাদের চোখে যা কিছু দেখবো তা লেআউট ফাইলে ডিজাইন করা হয় এবং এর ভিতরের কাজগুলো Activity Name নামক ক্লাসের ভিতর লিখে দেয়া হয় । এখানে লেআউট ফাইলের নামের সবগুলো অক্ষরই ছোট হাতের হতে হবে । প্রতিটি Activity Name ক্লাসের জন্য যে একটি করে লেআউট ফাইল থাকতে হবে এমন কোন নিয়ম নাই । একটি Activity Name ক্লাসের জন্য ২-৩ টি লেআউট ফাইল থাকতে পারে তেমনি আবার একটি লেআউট ফাইল এর ব্যাকগ্রাউন্ডে ২-৩ টি জাভা ক্লাসের কাজও থাকতে পারে । আবার কোন এক্টিভিটি ক্লাসের জন্য কোন লেআউট ফাইলের প্রয়োজন নাও হতে পারে ।
এরপর Finish বাটনে ক্লিক করি । শুধুমাত্র প্রথমবার ফাইল ওপেন হতে ৩০-৪০ মিনিট পর্যন্ত সময়ও নিতে পারে ,একটি ফাইলের জন্য দরকারী অনেক লাইব্রেরী তখন ডাউনলোড করে ফাইলের সাথে এড হয় তো এজন্য । তাই একটু ধৈর্য ধরে অপেক্ষা করুন ।
অ্যান্ড্রোয়েড অ্যাপ বানানোর জন্য যে সফটওয়্যার-টি লাগবে তার নাম হল Android Studio .
প্রথমেই আমাদের দেখতে হবে আমাদের পিসি Android Studio ব্যাবহার করার উপযোগী কিনা । এজন্য “My Computer” কিংবা “This Pc” নামক আপনার পিসি তে যে ড্রাইভারটি আছে তাতে রাইট বাটনে ক্লিক করে Properties এ ক্লিক করুন
View System Information In Windows Pc
System requirements
Microsoft® Windows® 7/8/10 (32- or 64-bit)
3 GB RAM minimum, 8 GB RAM recommended; plus 1 GB for the AndroidEmulator.
2 GB of available disk space minimum, 4 GB Recommended (500 MB for IDE + 1.5 GB for Android SDK and emulator system image)
1280 x 800 minimum screen resolution.
এখানে View basic information about your computer এর System এ Installed memory(RAM): সর্বনিম্ন 2.00GB আছে কিনা দেখে নিন। যদি নাহ থাকে তবে আপনার কম্পিউটার এর র্যাম বাড়িয়ে নিতে হবে ।
আমার কম্পিউটার এ ৪ জিবি (ram) র্যাম আছে সুতরাং আমার পিসি এন্ড্রোইড ষ্টুডিও ইনস্টল এর জন্য প্রস্তুত।
এন্ড্রোইড ডেভেলপমেন্ট এর জন্য প্রধানত যে কয়টি প্রোগ্রামিং ল্যাঙ্গুয়েজের ব্যবহার হয় তার মধ্যে জাভা ,কটলিন অন্যতম।এর আগে জাভাকে অফিসিয়াল ল্যাঙ্গুয়েজ হিসাবে সিকৃতি দিলেও বর্তমানে কটলিন অফিসিয়াল ল্যাঙ্গুয়েজ হিসাবে ব্যবহার হচ্ছে। আমরা জাভা দ্বারা আমাদের প্রত্যেকটি টপিক আলোচনা করবো। যদিও কটলিন এবং জাভার সিনটেক্সট একইরকম প্রায়।
এই সিরিজ তৈরি করতে আমরা জাভা প্রোগ্রামিং ল্যাংগুয়েজ ব্যাবহার করবো । অ্যান্ড্রোয়েড অ্যাপ তৈরি করতে আমাদের যে সফটওয়্যার-টি প্রয়োজন সেটি হল “Android Studio” ।
Android Download ঠিকানা তে গেলেই Download Android Studio দেখতে পাবেন , সেখানে ক্লিক করলে তাদের লাইসেন্স এর সাথে একমত হতে বলবে, I have read and agree with the above terms and conditions এর পাশের চেকবক্সে টিক দিয়ে Android Studio ডাইউনলোড করে নিন।
এবার সফটওয়্যার টির রাইট বাটনে ক্লিক করে Run as administrator এ ক্লিক করুন । পিসি কনফারমেশন চাইলে Yes বাটনে ক্লিক করুন ।
তারপর Next -> Next-> I Agree -> Next -> Install . ইন্সটল হতে কিছুটা সময় লাগবে, অপেক্ষা করুন । এরপর Next->এবং Finish 😊 এরপর I do not have a previous version of studio ক্লিক করা থাকলে ok প্রেস করুন । এরপর Next -> Next -> Finish । এবারও একটু টাইম নিবে, অপেক্ষা করুন😊 এরপর পিসি আরো একবার কনফারমেশন চাইতে পারে , তখন Yes দিয়ে শেষ Finish বাটনে ক্লিক করুন ।
ইন্সটল হয়ে গেল Android Studio । পরের পার্ট এ দেখবো আমরা কিভাবে নতুন প্রোজেক্ট খুলবো
AsyncTask is one of the easiest ways to implement parallelism in Android without having to deal with more complex methods like Threads. Though it offers a basic level of parallelism with the UI thread, it should not be used for longer operations (of, say, not more than 2 seconds).
AsyncTask has four methods
onPreExecute()
doInBackground()
onProgressUpdate()
onPostExecute()
where doInBackground() is the most important as it is where background computations are performed.
Code:
Here is a skeletal code outline with explanations:
public class AsyncTaskTestActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// This starts the AsyncTask
// Doesn't need to be in onCreate()
new MyTask().execute("my string parameter");
}
// Here is the AsyncTask class:
//
// AsyncTask<Params, Progress, Result>.
// Params – the type (Object/primitive) you pass to the AsyncTask from .execute()
// Progress – the type that gets passed to onProgressUpdate()
// Result – the type returns from doInBackground()
// Any of them can be String, Integer, Void, etc.
private class MyTask extends AsyncTask<String, Integer, String> {
// Runs in UI before background thread is called
@Override
protected void onPreExecute() {
super.onPreExecute();
// Do something like display a progress bar
}
// This is run in a background thread
@Override
protected String doInBackground(String... params) {
// get the string from params, which is an array
String myString = params[0];
// Do something that takes a long time, for example:
for (int i = 0; i <= 100; i++) {
// Do things
// Call this to update your progress
publishProgress(i);
}
return "this string is passed to onPostExecute";
}
// This is called from background thread but runs in UI
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
// Do things like update the progress bar
}
// This runs in UI when background thread finishes
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
// Do things like hide the progress bar or change a TextView
}
}
}
Flow Diagram:
Here is a diagram to help explain where all the parameters and types are going:
How can you pass multiple primitive parameters to AsyncTask?
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
protected Long doInBackground(URL... urls) {
int count = urls.length;
long totalSize = 0;
for (int i = 0; i < count; i++) {
totalSize += Downloader.downloadFile(urls[i]);
publishProgress((int) ((i / (float) count) * 100));
// Escape early if cancel() is called
if (isCancelled()) break;
}
return totalSize;
}
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}
protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}
bindParam() Hold Five Parameter. PDO bindParam() Use For Prevent Sql Injection And Safe From Malware Hacker Attacker.
first parameter placeholder secend value third value type 4th value length And 5th Is Driver Option. Below The Example. Returns TRUE on success or FALSE on failure.
Example #1 Execute a prepared statement with named placeholders
<?php
/* Execute a prepared statement by binding PHP variables */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < :calories AND colour = :colour');
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);
$sth->execute();
?>
Example #2 Execute a prepared statement with question mark placeholders
<?php
/* Execute a prepared statement by binding PHP variables */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < ? AND colour = ?');
$sth->bindParam(1, $calories, PDO::PARAM_INT);
$sth->bindParam(2, $colour, PDO::PARAM_STR, 12);
$sth->execute();
?>
Example #3
$sql = "INSERT INTO USER (name,email,password,created) VALUES (?,?,?,NOW())";
$stmt = $this->conn->prepare($sql);
$stmt->bindParam(1,$name,PDO::PARAM_STR,25);// first parameter placeholder secend value third value type 4th value length
$stmt->bindParam(2,$email,PDO::PARAM_STR,12);// first parameter placeholder secend value third value type 4th value length
$stmt->bindParam(3,$password,PDO::PARAM_STR,12);// first parameter placeholder secend value third value type 4th value length
$result = $stmt->execute(); // Returns TRUE on success or FALSE on failure.
$stmt->close();