Thursday, August 1, 2013

Stretching Screen (2)

Credit to: http://computerandmobiletech.com
ေနာက္တစ္နည္းကေတာ့ screen တစ္ခုကေန အျခား screen တစ္ခုကို switch လုပ္တဲ့နည္းပါဘဲ။ screen တစ္ခုအတြက္ activity တစ္ခုႏႈန္းနဲ႕ ထပ္ထည့္တဲ့ screen တိုင္းအတြက္္ activity ေတြထပ္ထည့္ေပးရပါမယ္။ activity တစ္ခုအတြက္ java class file နဲ႕ XML file တစ္ခုစီလည္းလိုအပ္ပါမယ္။ manifest file မွာလည္း ထပ္ထည့္တဲ့ activity တုိင္းအတြက္ entry တစ္ခုစီထည့္ေပးရပါမယ္။

Activity တစ္ခုကေန အျခား activity တစ္ခုကို ေခၚဘုိ႕ဆုိရင္ Intent class ကုိသံုးရမယ္။ Intent ကုိ create လုပ္တဲ့အခါ Activity class ကုိ constructer ရဲ႕ argument အျဖစ္အသံုးျပဳရမယ္။ Activity တစ္ခုနဲ႕တစ္ခုၾကား data ေတြကိုအျပန္အလွန္ပုိ႕ယူႏုိင္တယ္။ ဒီလုိလုပ္ဘုိ႕ကိုေတာ့ Intent class ရဲ႕ method တစ္ခုျဖစ္တဲ့ putExtr() method ကုိသံုးရမယ္။ Intent class မွာ ပါတဲ့ action အခ်ိဳ႕ကေတာ့ေအာက္ပါအတုိင္းပါ။

ACTION_DIAL
ACTION_CALL
ACTION_ SENTTO
ACTION_ANSWER
ACTION_INSERT
ACTION_DELET
ACTION_MAIN
ACTION_EDIT
ACTION_VIEW

ACTION_DIAL အတြက္ ဥပမာ တစ္ခုေပးရရင္ application ထဲကေန phone dial လုပ္ဘုိ႕အတြက္ ဒီလိုေရးရပါမယ္။

Uri theNumber = Uri.parse(tel:8005551212);
Intent dialMe= new Intent(Intent.ACTION_DIAL,theNumber);
startActivity(dialMe);

အခု ACTIOM_VIEW အသံုးျပဳပံုေလးေျပာပါမယ္။ ACTION_VIEW ကုိသံုးျပီး web page တစ္ခုကိုဘယ္လိုဖြင့္မလဲၾကည့္ရေအာင္။ onClick() or onTouch() method ပါတြဲသံုးရမယ္။

public void onClick(View v){
String myUrl=someEditText.getText( ).toString( );
Intent myIntent=new Intent(Intent.ACTION_VIEW); myIntent.setData(Uri.parse(myUrl));
startActivity(myIntent);
}

လုိအပ္တဲ့ import statement ေတြလည္းထည့္ေပးရမယ္။

import android.content.Intent;
import android.net.Uri;

ျပီးေတာ့ manifest file မွာလည္း လိုအပ္တဲ့ permission ေတြထည့္ေပးရမယ္။ ေအာက္ပါနမူနာအတုိင္းပါ။ Internet နဲ႕ phone call အတြက္နမူနာျပထားပါတယ္။
<uses-permissionandroid:name=“android.permission.INTERNET”/>
<uses-permission android:name=“android.permission.CALL_PHONE”/>

အခုလက္ေတြ႕ application တစ္ခုေလာက္ေရးၾကည့္ရေအာင္။ screen ၂ခုလုပ္မယ္။ screen တစ္ခုမွာ button တစ္ခုစီထည့္မယ္။ ပထမ screen မွာပါတဲ့ button ကိုႏွိပ္ရင္ ဒုတိယ screen ပြင့္မယ္။ ဒုတိယ screen က button ကုိႏွိပ္ရင္ ပထမ screen ပြင့္မယ္။ အဲလိုမ်ိဳးလုပ္ရေအာင္။ ျပီးရင္ screen တစ္ခုမွာ TextView တစ္ခုစီထည့္မယ္။ ဒါကေတာ့ user အေနနဲ႕ သူ အခု ပထမ screen မွာေရာက္ေနလား ဒုတိယ screen မွာေရာက္ေနလားဆိုတာေဖာ္ျပဘုိ႕ပါ။
အရင္ဆံုးလုပ္ရမွာက XML file ၂ခု create လုပ္ဘုိ႕ပါ။ primary screen အတြက္ main.xml ကိုေတာ့ project ကို create လုပ္စဥ္က eclipse ကလုပ္ေပးျပီးျဖစ္ပါတယ္။ ဒါေၾကာင့္ secondary screen အတြက္ XML file သာ create လုပ္ေပးဘုိ႕လိုပါေတာ့တယ္။ လုပ္နည္းကေတာ့ Eclipse window ဘယ္ဘက္ျခမ္းမွာ Package Explorer ရွိပါတယ္။ အဲဒီကေန res folder ေအာက္မွာ layout folder ရွိပါတယ္။ layout folder ကို right click လုပ္ျပီး New>File ကုိေရြးပါ။ filename မွာ second.xml လို႕ေပးပါ။
အရင္ဆံုး main.xml file မွာေအာက္ပါအတုိင္းေရးပါ။

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
>
<TextView
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:textSize=”20px”
android:text=”Primary Screen”
/>
<Button
android:id=”@+id/SwitchToSecond”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:textSize=”20px”
android:text=”Switch to Second Screen”
/>

</LinearLayout>

ျပီးရင္ second.xml မွာေအာက္ပါအတုိင္းေရးပါ။

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
>
<TextView
android:textSize=”20px”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:text=”Secondary Screen”
/>
<Button
android:id=”@+id/SwitchToMain”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:textSize=”20px”
android:text=”Back to Main Screen”
/>
</LinearLayout>

Second Activity အတြက္ manifest file မွာေအာက္ပါအတုိင္းထပ္ထည့္လုိက္ပါ။
<activity android:name=”.SecondScreen”>
</activity>

Manifest file ဟာေအာက္ပါအတုိင္းျဖစ္ေနရပါမယ္။

<application
android:icon=”@drawable/icon”
android:label=”@string/app_name”>
<activity android:name=”.MultiScreen”
android:label=”@string/app_name”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
<activity android:name=”.SecondScreen”>
</activity>
</application>

ျပီးရင္ java code ေရးေတာ့မယ္။ activity ၂ခုအတြက္ java class file ၂ခုရွိရမွာဆိုေတာ second screen အတြက္ class တစ္ခုလုပ္ရမယ္။ first screen အတြက္က project create လုပ္စဥ္ကရျပိးျဖစ္တယ္။ class အသစ္တစ္ခုထပ္ထည့္နည္းကေတာ့ src ေအာက္က package name ကုိ right လုပ္ျပီး New>Class ကုိေရြးပါ။ class name ကို SecondScreen လုိ႕ေပးပါ။

First screen အတြက္ရွိထားတဲ့ MultiScree.java ဖုိင္ကိုစျပီးေရးပါမယ္။ လုိအပ္တဲ့ import statement ေတြထည့္မယ္။ Button တစ္ခုကို declare လုပ္ျပီး assign လုပ္မယ္။ ျပီးရင္ button မွာ onClick() listener ကုိ set လုပ္မယ္။ listenrer ကိုလုပ္တဲ့အခါ in-line class declaration ပုံစံနဲ႕လုပ္သြားမယ္။ ဆိုလိုတာက statement တစ္ခုထဲမွာဘဲ OnClickListener class ကို create လုပ္ျပီး သူ႕ရဲ႕ method တစ္ခုျဖစ္တဲ့ onClick() method ကုိပါ define လုပ္သြားမယ္။ ေအာက္ပါအတုိင္းပါ။

screen2Button.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
Intent myIntent=new Intent(v.getContext(),SecondScreen.class);
startActivity(myIntent);
}
});

MultiScreen.java ဖုိင္အျပည့္အစံုကိုေအာက္မွာၾကည့္ပါ။

package com.sheusi.MultiScreen;

import android.app.Activity;
import android.os.Bundle;
import android.widget.*;
import android.view.*;
import android.content.Intent;

public class MultiScreen extends Activity {
/** Called when the activity is first created. */ Button screen2Button=null;
@Override
public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);
setContentView(R.layout.main);           screen2Button=(Button)findViewById(R.id.SwitchToSecond);             screen2Button.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
Intent myIntent=new Intent(v.getContext(),SecondScreen.class);
startActivity(myIntent);
}
});
}
}

SecondScreen.java  file ကိုလည္းေအာက္ပါအတုိင္းေရးပါ။

package com.sheusi.MultiScreen;

import android.app.Activity; import android.os.Bundle;
import android.widget.*;
import android.view.*;

public class SecondScreen extends Activity{       Button returnButton=null;
@Override
public void onCreate(Bundle savedInstanceState) {                             super.onCreate(savedInstanceState);
setContentView(R.layout.second);        returnButton=(Button)findViewById(R.id.SwitchToMain);             returnButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
finish();
}
});
}
}

ျပီးရင္ run ၾကည့္ပါ။

No comments:

Post a Comment