Android App
අදුරට එලියක්
Flash Light App - 4
java එක්ක කරපු ගනු දෙනු...
මීට කලින් ලිපියෙදි අපි, .xml වල ඇතුලාන්තය ගැන කතා කලානේ. අපි අද බලමු, java වලින් කරලා තියෙන දේවල් ගැන.
ඇත්තෙන්ම අපි Android App එකක, ක්රියාකාරීත්වය සිදුවෙන්නේ java වලින්. සරලවම කියනවා නම්, අපි xml එකක් හරහා interface එකක් design කරගත්තට පස්සේ, ඒක ක්රියාකරන්නේ කොහොමද කියන එක App එකට කියල දෙන්න java class එකක් භාවිතා කරනවා.
දැන් අපේ App එකේ, interfaces දෙකක් තියෙනවා. එතකොට ඉහත කියපු විදියට, ඒ interfaces දෙක සඳහාම අපි java classes ලියන්න ඕනි වෙනවා.
එහෙනම් අපි මුලින්ම අපේ main.xml කියන interface එක සඳහා ලියලා තියෙන GreenScreenActivity.java කියන class එක ගැන කතා කරමු.
--> GreenScreenActivity.java
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class GreenScreenActivity extends Activity
{
/** Called when the activity is first created. */
private Button toWhite;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setUpView();
}
private void setUpView(){
toWhite = (Button)findViewById(R.id.to_white_button);
toWhite.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(GreenScreenActivity.this, WhiteScreenActivity.class);
startActivity(intent);
}
});
}
}
දැන් ඔයාලට දැක ගන්න පුළුවන් වෙයි, මුලින්ම අපේ class එක ඇතුලත් වෙන package එක com.flash.light කියලා පෙන්නලා දීල තියෙනවා. ඊට පස්සේ import කියන syntax එක හරහා අපිට උවමනා කරන බාහිර java classes අපේ java code එකට හඳුන්වලා දීලා තියෙනවා.
මෙහිදී අපි,
android.app.Activity
android.content.Intent
android.os.Bundle
android.view.View
android.widget.Button
කියන Android SDK එක සතුව තියෙන java classes කිහිපයක්ම import කරගෙන තියෙන බව ඔයාලට දැක ගන්න පුළුවන් වෙයි.
මෙතෙක් අපි කතා කලේ ඕනිම java code එකක් කරද්දී අපි කරන සාමාන්ය දේවල් කිහිපයක්. හරි දැන් බලන්න අපි අපේ class එක පටන් ගෙන තියෙන විදිය.
public class GreenScreenActivity extends Activity
එහි extends Activity කියලා අමතර කොටසක් දැක ගන්න පුළුවන් වේවි. මේක java දන්න කෙනෙක් නම් කියාවි Activity කියන super class එකෙන් inherit එහෙමත් නැත්නම් extend කරල තමයි GreenScreenActivity කියන class එක හදලා තියෙන්නේ කියලා.
නොදන්න කෙනෙක්ට???
ඇත්තටම මෙතන කරලා තියෙන්නේ Activity කියන Android SDK එක ඇතුලේ තියෙන class එකේ තියෙන හැකියාවන් අපේ GreenScreenActivity කියල අපි ලියන class එකට උරුම කර දීමක්. අන්න ඒකට තමයි අපි මුලින් android.app.Activity කියන එක import කරගත්තේ. එතකොට අපි දැන් දැනගත්තා, අපි .xml interface එකක් සඳහා java class එකක් ලියනවා නම්, අපි ඒ class එක Activity කියන super class එකෙන් extend කරලා ගන්න ඕනි කියන එක.
ඔයාලගෙ class එකේ ඇතුලත onCreate හා setUpView කියල methods දෙකක් දැකගන්න පුළුවන් වේවි.
මේ setUpView කියන method එක හරහා තමයි, අපේ main.xml කියන interface එකේ තියෙන Button, TextView වැනි Objects වලට පණක් දෙන්නේ. අපි විස්තර ඇතුව කියනවා නම්, ඔයාලට බලන්න පුළුවන් ඒ method එකේ තියෙන මුල්ම line එක,
private Button toWhite;
toWhite = (Button)findViewById(R.id.to_white_button);
මෙතනදී කරලා තියෙන්නේ, අපේ java code එකට main.xml එකේ to_white_button කියන id එකෙන් තියෙන Button එක හදුන්වලා දෙන එකයි. මේ findViewById කියන inbuilt android method එක භාවිතා කරලා තමයි .xml files වල තියෙන Objects, java code එකට පෙන්වලා දෙන්නේ. බලන්නකෝ ඒ id එක පෙන්නලා දීලා තියෙන්නේ කොහොමද කියලා,
R.id.to_white_button
මේ R කියලා කියන්නේ auto generated file එකක්, අපි ඒ R file එක ගැන ඉදිරි ලිපියක විස්තර ඇතිව කතා කරමු. ඊට පස්සේ id, ඒ කියන්නේ R file එකේ තියෙන id එකක්, මොකද්ද id එක, to_white_button කියන id එක. එහෙම තමයි, R.id.to_white_button කියන එක හැදිලා තියෙන්නේ. ඒ හරහා අපි අපේ Button එකට java Object එකක් හදා ගත්තා. දැන් ඉතින් සාමාන්ය java ම තමයි.
මීලඟ කොටස බලන්නකෝ..., එම කොටසින් මම කරලා තියෙන්නේ OnClickListener එකක් set කරලයි තියෙන්නේ, එහෙමත් නැත්නම් අපේ Button එකේ Click event එකේදි මොකද වෙන්නේ කියලා define කරලා තියෙන එක. ඔයාලට ඇත්තටම කරන්න තියෙන්නේ, <Object>.setOnClickListener කියලා type කරලා Ctrl+Space කරන්න එතකොට ඉතිරි ටික ඔයා භාවිතා කරන IDE හදාලා දේවි.
බලන්නකො OnClickListener එක ඇතුලේ තියෙන public void onClick(View view) කියන function එක. ඇත්තටම එම function එක ඇතුලේ තමයි අපේ Click event එකේ වෙන්න ඕනි දේවල් කියන්නේ. අපේ උදාහරනයේදී නම් අපි කරලා තියෙන්නේ මේ Button එක Click කලාම, අපේ ඊලඟ interface එක open කරන එක. බලන්නකෝ ඒක කොහොමද කරලා තියෙන්නේ කියලා.
මම Intent Object එකක් හදාගෙන තියෙනවා. ඒක හදනකොට, අපි දැනට ඉන්න interface එක GreenScreenActivity.this වශයෙනුත්, අපිට අලුතින් open වෙන්න ඕනි කරන interface එක WhiteScreenActivity.class වශයෙනුත් parameters විදියට pass කරලා තියෙනවා. ඊට පස්සේ අපි startActivity() කියන inbuilt method එකට අපේ Intent Object එක pass කරලා තියෙනවා. එතකොට මේක එක විදියක් තමයි අලුත් interface එකක් open කරන. මම මේ විස්තර කරපු lines දෙක තමයි පහත තියෙන්නේ.
Intent intent = new Intent(GreenScreenActivity.this,
WhiteScreenActivity.class);
startActivity(intent);
හරි අපි දැන් අපේ interface එකේ Object setup method එක නැතිනම් setUpView කියන method එක ගැන තමයි ඔය කතා කලේ. ඊට පස්සේ බලමු onCreate method එක ගැන. මේ public void onCreate(Bundle savedInstanceState){} කියන method එක හරහා තමයි, මේ මොන layout එකද, නැතිනම් මොන .xml file එක සඳහා වූ java code එකද කියන එක හා එම layout එකේ වූ සියලුම Objects මූලික වශයෙන් සූදානම් කිරීම සිදුකරන්නේ.
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
මෙම ඉහත lines දෙකෙන් අපේ මේ java code සඳහා වූ .xml file එක මොකද්ද කියන එක තමයි පෙන්වන්නේ. බලන්නකෝ එතනදීත් අපි කලින් method එකේ Button එක පෙන්වන්න කලා වගේම R file එක භාවිතා කරලා තියෙනවා. නමුත් පොඩ්ඩක් වෙනස් නේද? බලන්නකො වෙනස ඔයාලට හඳුනා ගන්න පුළුවන්ද කියලා.
R.layout.main
එහි තිබෙන්නේ ඉහත ආකාරයට. විස්තර කරනවා නම් R file එකේ තියෙන layout එකක්, මොකද්ද layout එක, main කියන layout එක. ඉන් පසුව ඔයාලට බලන්න පුළුවන් අපි කලින් විස්තර කරපු setUpView() කියන method එක call කරලා තියෙනවා. දැන් අපේ එක class එකක් ගැන සම්පූර්ණයෙන් කතා කලා. ඔයාලම බලන්නකෝ ඊලඟ class එක නැතිනම් WhiteScreenActivity.java කියන class එකේ ඇතුලාන්තය ගැන. ඒක අපි කතා කරපු class එකට ගොඩාක් සමානයි. නමුත් පොඩි වෙනස්කම් කිහිපයක් තියෙනවා. බලන්නකො ඔයාලට ඒවා හඳුනා ගන්න පුළුවන්ද කියලා.
අපි මීලඟ ලිපියෙන් අපි Android කරන කොට දැන ගන්න ඕනි විශේෂ කරුණු කිහිපයක් ගැන කතා කරමු.
ඔයාලට මේ කරපු දේ ටික ගැන ප්රශ්න තියෙනව නම් comment කරන්න නැති නම් mail කරන්න kavi707@gmail.com