Skip to main content

Flash-card app using FragmentPagerAdapter in Android with swipe and Sound

This is yet another flash-card app with swipe navigation and sound play for Android.

Flash-card app using swipe FragmentPagerAdapter 1Flash-card app using swipe FragmentPagerAdapter 2

***Important – am using ADT Bundle of the release 20130917 (adt-bundle-windows-x86_64-20130917). The older version on ADT might use slightly different approach. Download here http://developer.android.com/sdk ***

Create a new Android project.

On the File menu choose New> Android Application Project. Name the Android Application and change the minimum required SDK to API 11.

minimum-required-sdk-api-11-swipe

On the window that provides the navigation type, choose Scrollable Tabs + Swipe.

navigation-scrollable-tabs-swipe

These are the modifications to be made;

1. Copy the materials (images to drawable, mp3 sound files to assets)

copy-resources-swipe-flash-card

2. Prepare the page layout.

Using the latest IDE, you will get the following layout file named fragment_main_dummy.xml . In the project we are using these IDs; ImageView imgnumber to hold the image number, ImageButton btnsound for the user interaction of playing the sound for the number’s pronunciation.

fragment_main_dummy

the fragment_main_dummy.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity$DummySectionFragment" >

<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >

<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >

<ImageView
android:id="@+id/imgnumber"
android:layout_width="wrap_content"
android:layout_height="320dp"
android:layout_weight="1"
android:src="@drawable/no1" />

</TableRow>

<TableRow
android:id="@+id/tableRow2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >

<ImageButton
android:id="@+id/btnsound"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/sound" />

</TableRow>
</TableLayout>

</RelativeLayout>


3. Changing the page titles – open the file res>values>strings.xml, and modify accordingly.


adjust-page-title-name


4. The page numbers – find the method getCount, and change accordingly.


public int getCount() {
// Show 3 total pages.
return 3;
}


5. Make sure the DummySectionFragment class implements OnClickListener – because the sound button need this.


public static class DummySectionFragment extends Fragment implements OnClickListener


6. Declare the necessary UI – just before the method onCreateView inside the DummySectionFragment class.


//put all the mp3 filename as String array
private String[] mp3={"1.mp3","2.mp3","3.mp3"};
private ImageView imgnumber;
private ImageButton btnsound;
private View rootView;
//get the current screen number
private int skrinno;


7. Make the necessary amendment to the onCreateView method.


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_main_dummy,
container, false);
skrinno= getArguments().getInt(ARG_SECTION_NUMBER);

btnsound=(ImageButton)rootView.findViewById(R.id.btnsound);
btnsound.setOnClickListener(this);

//set the screen image
imgnumber=(ImageView)rootView.findViewById(R.id.imgnumber);
if(skrinno==1){
imgnumber.setImageResource(R.drawable.no1);
}
else if(skrinno==2){
imgnumber.setImageResource(R.drawable.no2);
}
else if(skrinno==3){
imgnumber.setImageResource(R.drawable.no3);
}

return rootView;
}


8. This is the onClick method to handle btnsound click.


@Override
public void onClick(View v) {
//button onClick handler
if(v.getId()==R.id.btnsound){
playSound(mp3[skrinno-1]);//array starts from 0
}
}//end onClick


9. This is the playsound method to play the mp3 sound file.


private MediaPlayer mp;
//the playSound function - copy from blog.kerul.net
public void playSound(String soundName){
Boolean mpPlayingStatus=false;
mp=new MediaPlayer();

try{//try to check MediaPlayer status
mpPlayingStatus=mp.isPlaying();
}
catch (Exception e){
mpPlayingStatus=false;
}
//if the MediaPlayer is playing a sound, stop it to play new sound
if (mpPlayingStatus==true){
mp.stop(); //stop the sound
mp.release(); //remove sound from the memory
}
else{
try{
mp = new MediaPlayer();
//this is to load the mp3 sound from the assets folder
AssetFileDescriptor afd = rootView.getContext().getAssets().openFd(soundName);
//set the sound source file
mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
mp.prepare(); // prepare for playback
mp.start(); //play the sound
afd.close();//release the file descriptor
}//try block
catch(IOException e) {
//display the error message in debug
Log.i("Error playing sound: ", e.toString());
}
}
}//end playSound


The complete code is available for download here –> http://bit.ly/android-swipe


Try the app at the Google Play –> https://play.google.com/store/apps/details?id=net.kerul.flash_swipe_numbers_123





*** Do bookmark/share this in you G+ / FB / Twitter …

Comments

Popular posts from this blog

Applications of Web 2.0

Web 2.0 describes the changing trends in the use of World Wide Web technology and web design that aim to enhance creativity , secure information sharing, collaboration and functionality of the web. Web 2.0 concepts have led to the development and evolution of web-based communities and hosted services , such as social-networking sites , video sharing sites , wikis , blogs . Find a website or web application that conform to the criteria of Web 2.0. Put the name of the application and the URL in the comment below. Please provide your full name and matrix number. Make sure the application you choose is not already chosen by your friend in the previous comment.

Several English proverbs and the Malay pair

Or you could download here for the Malay proverbs app – https://play.google.com/store/apps/details?id=net.kerul.peribahasa English proverbs and the Malay pair Corpus Reference: Amir Muslim, 2009. Peribahasa dan ungkapan Inggeris-Melayu. DBP, Kuala Lumpur http://books.google.com.my/books/about/Peribahasa_dan_ungkapan_Inggeris_Melayu.html?id=bgwwQwAACAAJ CTRL+F to search Proverbs in English Definition in English Similar Malay Proverbs Definition in Malay 1 Where there is a country, there are people. A country must have people. Ada air adalah ikan. Ada negeri adalah rakyatnya. 2 Dry bread at home is better than roast meat home's the best hujan emas di negeri orang,hujan batu di negeri sendiri Betapa baik pun tempat orang, baik lagi tempat sendiri. 3 There's no accounting for tastes We can't assume that every people have a same feel Kepala sama hitam hati lain-lain. Dalam kehidupan ini, setiap insan berbeza cara, kesukaan, perangai, tabia...

Pemasangan Joomla! 1.7 pada pelayan web komputer anda

Latihan ini akan memasang sistem pengurusan kandungan laman web ke dalam pelayan web yang anda telah pasang sebelum ini . LANGKAH 1: Aktifkan Pelayan Web dan Pangkalan Data Aktifkan XAMPP Control Panel, melalui “ Start->All Programs->ApacheFriends->XAMPP Control Panel ”. Rajah 2.1 Pastikan pelayan web Apache dan pelayan pangkalan data MySQL diaktifkan dengan klik butang START. -> Rajah 2.2

How to Install APK Files on Android Device Emulator

In this tutorial you are to run any APK (Android application) file to your Android emulator. Assuming you already have the Emulator running  (if not sure how run the Android device emulator, refer to this http://blog.kerul.net/2011/09/android-emulator-to-run-your-apps.html ) .   Figure 1 Locate your adb.exe file in your Android SDK folder. In Windows environment normally your adb.exe is inside [Android-SDK-folder]/platform-tools/ . In my case, the adb.exe is in C:\android-juno\android-sdk\platform-tools (this is an example path to the adb.exe, may varies depending on your system). Find any APK file (for the purpose of this tutorial, I’ve prepare an APK file – download here http://bit.ly/peribahasa-apk ). After you’ve successfully downloaded the APK, put it inside your [Android-SDK-folder]/platform-tools/ as in Figure 2.   Figure 2

Contact Us at blog.kerul.net

Powered by EMF HTML Contact Form