Android Programming Tutorial
Android
is an open source and Linux-based operating system for mobile devices
such as smartphones and tablet computers. Android was developed by
the Open Handset Alliance, led by Google, and other
companies.
This
tutorial will teach you basic Android programming and will also take
you through some advance concepts related to Android application
development.
This
tutorial has been prepared for the beginners to help them understand
basic Android programming. After completing this tutorial you will
find yourself at a moderate level of expertise in Android
programming.
This tutorial has been prepared for the beginners to help them understand basic Android programming. After completing this tutorial you will find yourself at a moderate level of expertise in Android programming.
Features of Android
Android
Applications
Android
applications are usually developed in the Java language using the
Android Software Development Kit.
Once
developed, Android applications can be packaged easily and sold out
either through a Google Play Store or
the Amazon Appstore.
The requirements of android application development are
1.JAVA JDK 5/JDK6/JDK7
2.Android SDK
3.Android development tool(ADT) Eclipse Plugin
4.Eclipse IDE for JAVA developers
Here
last two components are optional and if you are working on Windows
machine then these components make your life easy while doing Java
based application development. So let us have a look how to proceed
to set required environment.
Here you can learn about Android applications with Intents and Activity:
- HelloWorld Application in Android
In this article you are going to see how to create a hello world applictaion.
1.Open Eclipse IDE
2.Click
File -> New -> Project -> Android Application Project
3.Enter
the name of the application as HelloWorld and click next
4.Make
sure that you have enabled the create project in workspace
5.Design
application launcher icon and create a blank activity workspace
6.Enter the main activity details.
2.Click
File -> New -> Project -> Android Application Project
3.Enter
the name of the application as HelloWorld and click next
4.Make
sure that you have enabled the create project in workspace
6.Enter the main activity details.
In this tutorial i will be demostrating to build a simple listview .In this project we are going to create a simple listview .
1)Create a new android application project in eclipse
2)Then after craeting a new project you have to edit the activity_mail.xml file , As shown below
activity_main.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"
tools:context=".MainActivity" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
</ListView>
</RelativeLayout>
Mainactivity.java
package com.example.listviewbasic;
import android.os.Bundle;
import android.app.Activity;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends Activity {
String[] countries = new String[] {
"apple",
"grapes",
"orange",
"mango",
"water melon",
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, countries);
ListView listView = (ListView) findViewById(R.id.listView1);
listView.setAdapter(adapter);
}
}
4)Now the basic listview is ready
DownloadSourceCode
ListView Animation Tutorial
In this tutorial you are going to know about the animation in lsitview so first learn to create a basic listview as shown above .
This tutorial will show you how to animate the list view using plenty of animation.
1)First create a new android application as you created for basic listview.
2)Now you have to create a folder "anim" under res folder
3)you have to create a different XML file inside the anim folder to create the animation.
4)Let follow the XML as shown below,create the following xml file in the anim folder
*Fade In
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="100"
android:fromAlpha="0.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:toAlpha="1.0" />
*Push Left In
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="100%p" android:toXDelta="0"
android:duration="300"/>
<alpha android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="300" />
</set>
*Push Left Out
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="-100%p"
android:duration="300"/>
<alpha android:fromAlpha="1.0" android:toAlpha="0.0"
android:duration="300" />
</set>
*Push Up In
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="100%p" android:toYDelta="0"
android:duration="500"/>
<alpha android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="500" />
</set>
*Push Up Out
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="0" android:toYDelta="-100%p"
android:duration="500"/>
<alpha android:fromAlpha="1.0" android:toAlpha="0.0"
android:duration="500" />
</set>
*Hyper Space In
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="300" android:startOffset="1200" />
*Hyper Space Out
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false">
<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="1.0"
android:toXScale="1.4"
android:fromYScale="1.0"
android:toYScale="0.6"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false"
android:duration="700" />
<set
android:interpolator="@android:anim/accelerate_interpolator"
android:startOffset="700">
<scale
android:fromXScale="1.4"
android:toXScale="0.0"
android:fromYScale="0.6"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="400" />
<rotate
android:fromDegrees="0"
android:toDegrees="-45"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="400" />
</set>
</set>
*Shake
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0" android:toXDelta="10"
android:duration="1000" android:interpolator="@anim/cycle" />
*Wave Scale
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="100" />
<scale
android:fromXScale="0.5" android:toXScale="1.5"
android:fromYScale="0.5" android:toYScale="1.5"
android:pivotX="50%" android:pivotY="50%"
android:duration="200" />
<scale
android:fromXScale="1.5" android:toXScale="1.0"
android:fromYScale="1.5" android:toYScale="1.0"
android:pivotX="50%" android:pivotY="50%"
android:startOffset="200"
android:duration="100" />
</set>
*Slide In Top
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<translate android:fromYDelta="-100%" android:toXDelta="0"
android:duration="100" />
<alpha android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="50" />
</set>
*Slide In Top To Bottom
<?xml version="1.0" encoding="utf-8"?>
<set>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<translate android:fromYDelta="-100%" android:toXDelta="0"
android:duration="100" />
<alpha android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="50" />
</set>
</set>
*Cycle
<cycleInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
android:cycles="7" />
After creating the XML file now its time to code the MainActivity.java .
MainActivity.java
package com.example.listviewanimation;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.ScaleAnimation;
import android.view.animation.TranslateAnimation;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
private ListView listview;
private DisplayMetrics metrics;
private int mode = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
listview = new ListView(this);
listview.setFadingEdgeLength(0);
ArrayList<String> strings = new ArrayList<String>();
for (int i = 0; i < 300; i++) {
strings.add("Item:#" + (i + 1));
}
MainAdapter mAdapter = new MainAdapter(this, strings, metrics);
listview.setAdapter(mAdapter);
setContentView(listview);
}
public boolean onCreateOptionsMenu(Menu menu) {
boolean result = super.onCreateOptionsMenu(menu);
menu.add(Menu.NONE, 1, 0, "TranslateAnimation1");
menu.add(Menu.NONE, 2, 0, "TranslateAnimation2");
menu.add(Menu.NONE, 3, 0, "ScaleAnimation");
menu.add(Menu.NONE, 4, 0, "fade_in");
menu.add(Menu.NONE, 5, 0, "hyper_space_in");
menu.add(Menu.NONE, 6, 0, "hyper_space_out");
menu.add(Menu.NONE, 7, 0, "wave_scale");
menu.add(Menu.NONE, 8, 0, "push_left_in");
menu.add(Menu.NONE, 9, 0, "push_left_out");
menu.add(Menu.NONE, 10, 0, "push_up_in");
menu.add(Menu.NONE, 11, 0, "push_up_out");
menu.add(Menu.NONE, 12, 0, "shake");
return result;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
mode = item.getItemId();
return super.onOptionsItemSelected(item);
}
public class MainAdapter extends ArrayAdapter<String> {
private Context context;
private LayoutInflater mInflater;
private ArrayList<String> strings;
private DisplayMetrics metrics_;
private class Holder {
public TextView textview;
}
public MainAdapter(Context context, ArrayList<String> strings,
DisplayMetrics metrics) {
super(context, 0, strings);
this.context = context;
this.mInflater = (LayoutInflater) this.context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.strings = strings;
this.metrics_ = metrics;
}
@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
final String str = this.strings.get(position);
final Holder holder;
if (convertView == null) {
convertView = mInflater.inflate(
android.R.layout.simple_list_item_1, null);
convertView.setBackgroundColor(0xFF202020);
holder = new Holder();
holder.textview = (TextView) convertView
.findViewById(android.R.id.text1);
holder.textview.setTextColor(0xFFFFFFFF);
holder.textview.setBackgroundResource(R.drawable.background);
convertView.setTag(holder);
} else {
holder = (Holder) convertView.getTag();
}
holder.textview.setText(str);
Animation animation = null;
switch (mode) {
case 1:
animation = new TranslateAnimation(metrics_.widthPixels / 2, 0,
0, 0);
break;
case 2:
animation = new TranslateAnimation(0, 0, metrics_.heightPixels,
0);
break;
case 3:
animation = new ScaleAnimation((float) 1.0, (float) 1.0,
(float) 0, (float) 1.0);
break;
case 4:
animation = AnimationUtils.loadAnimation(context, R.anim.fadein);
break;
case 5:
animation = AnimationUtils.loadAnimation(context, R.anim.hyperspacein);
break;
case 6:
animation = AnimationUtils.loadAnimation(context, R.anim.hyperspaceout);
break;
case 7:
animation = AnimationUtils.loadAnimation(context, R.anim.wavescale);
break;
case 8:
animation = AnimationUtils.loadAnimation(context, R.anim.pushleftin);
break;
case 9:
animation = AnimationUtils.loadAnimation(context, R.anim.pushleftout);
break;
case 10:
animation = AnimationUtils.loadAnimation(context, R.anim.pushupin);
break;
case 11:
animation = AnimationUtils.loadAnimation(context, R.anim.pushupout);
break;
case 12:
animation = AnimationUtils.loadAnimation(context, R.anim.shake);
break;
}
// animation.setDuration(500);
convertView.startAnimation(animation);
animation = null;
return convertView;
}
}
}
Now the Listview Animation is ready ......
Expandable ListView:
1)Lets start a new project in eclipse as we created for earlier projects
2)we need three xml to create a expandable list view,first xml is for the main list view ,second xml is for the list group and the third xml is for child list view.
3)Design your activity_main.xml with Expandable listview as shown below.
- Expandable ListView is used to group, that can individually expanded to show its children.
- When the user touches the header it has the ability to expand and collapse the group.
- In this example you can learn how to create a simple expandable listview as shown below.
1)Lets start a new project in eclipse as we created for earlier projects
2)we need three xml to create a expandable list view,first xml is for the main list view ,second xml is for the list group and the third xml is for child list view.
3)Design your activity_main.xml with Expandable listview as shown below.
4)Create a list_group.xml for the listview group and code as follows
5)Create another xml file named list_item.xml it contaoin only listview item.
6)Here we are going to use a custom adapter class to create the expandable listview,create a new class file named Expandablelistadpater.java and extend this from Baseexpandablelistadapter.java
5)Create another xml file named list_item.xml it contaoin only listview item.
6)Here we are going to use a custom adapter class to create the expandable listview,create a new class file named Expandablelistadpater.java and extend this from Baseexpandablelistadapter.java
7)This Baseexpandablelistadapter provide some requierd methods to render listview
- Getgroupview( )-listgroup header view are returned
- Getchildview ( )-listchild view are returned
package com.example.expandablelist;
import java.util.HashMap;
import java.util.List;
import android.content.Context;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;
public class ExpandableListAdapter extends BaseExpandableListAdapter{
private Context _context;
private List<String> _listDataHeader;
private HashMap<String, List<String>> _listDataChild;
public ExpandableListAdapter(Context context,List<String> listDataHeader,HashMap<String, List<String>> listDataChild){
this._context = context ;
this._listDataHeader = listDataHeader;
this._listDataChild = listDataChild;
}
@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return this._listDataHeader.size();
}
@Override
public int getChildrenCount(int groupPosition) {
// TODO Auto-generated method stub
return this._listDataChild.get(this._listDataHeader.get(groupPosition))
.size();
}
@Override
public Object getGroup(int groupPosition) {
// TODO Auto-generated method stub
return this._listDataHeader.get(groupPosition);
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return this._listDataChild.get(this._listDataHeader.get(groupPosition))
.get(childPosition);
}
@Override
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return groupPosition; }
@Override
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return childPosition;
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
String headerTitle = (String) getGroup(groupPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_group, null);
}
TextView lblListHeader = (TextView) convertView
.findViewById(R.id.textView1);
lblListHeader.setTypeface(null, Typeface.BOLD);
lblListHeader.setText(headerTitle);
return convertView;
}
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final String childText = (String)getChild(groupPosition, childPosition);
if(convertView == null){
LayoutInflater infalInflater = (LayoutInflater)this._context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_item, null);
}
TextView txtListChild = (TextView) convertView
.findViewById(R.id.textView1);
txtListChild.setText(childText);
return convertView;
// TODO Auto-generated method stub
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return false;
}
}
import java.util.HashMap;
import java.util.List;
import android.content.Context;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;
public class ExpandableListAdapter extends BaseExpandableListAdapter{
private Context _context;
private List<String> _listDataHeader;
private HashMap<String, List<String>> _listDataChild;
public ExpandableListAdapter(Context context,List<String> listDataHeader,HashMap<String, List<String>> listDataChild){
this._context = context ;
this._listDataHeader = listDataHeader;
this._listDataChild = listDataChild;
}
@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return this._listDataHeader.size();
}
@Override
public int getChildrenCount(int groupPosition) {
// TODO Auto-generated method stub
return this._listDataChild.get(this._listDataHeader.get(groupPosition))
.size();
}
@Override
public Object getGroup(int groupPosition) {
// TODO Auto-generated method stub
return this._listDataHeader.get(groupPosition);
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return this._listDataChild.get(this._listDataHeader.get(groupPosition))
.get(childPosition);
}
@Override
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return groupPosition; }
@Override
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return childPosition;
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
String headerTitle = (String) getGroup(groupPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_group, null);
}
TextView lblListHeader = (TextView) convertView
.findViewById(R.id.textView1);
lblListHeader.setTypeface(null, Typeface.BOLD);
lblListHeader.setText(headerTitle);
return convertView;
}
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final String childText = (String)getChild(groupPosition, childPosition);
if(convertView == null){
LayoutInflater infalInflater = (LayoutInflater)this._context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_item, null);
}
TextView txtListChild = (TextView) convertView
.findViewById(R.id.textView1);
txtListChild.setText(childText);
return convertView;
// TODO Auto-generated method stub
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return false;
}
}
9)Add these three lines at the end of the main activity which is used for header and child data
listDataChild.put(listDataHeader.get(0), top250);
listDataChild.put(listDataHeader.get(1), nowShowing);
listDataChild.put(listDataHeader.get(1), nowShowing);
listDataChild.put(listDataHeader.get(2),comingSoon);
10)Now its time to run and test the project ,check with your emulator or device .
3)Now you have to code it in java to trigger Speech To Text
Speech To Text
1)Lets start a new project in eclipse as we created for earlier projects.
2)Change the layout ,we have to change activity_main.xml appearence by using a image button and a text view as show below.
4)Open the Main Activity.java and replace the code as shown below
Here i split the main activity files in to two
5)Now run and test your Project You will get the Output as shown below.
0 comments:
Post a Comment