Android

Android Gallery example enhanced a bit more
Author : Ishtek

Setup Eclipse with Android ADT Plugin for test/code environment (by using Android API Level 7 and Emulator).
P.S- Above page is having around 14 images, download size could be around 700KB.

This Page and/or example code is using Android API Level 7 and tested using corresponding Emulator only.
For latest information please refer Android Official website.

Using Android API Level : 7 Android's Gallery element used in this Example to show multiple Image views in a slider/spinner mode. And selected item/image is displayed on a different view located on top of the slider pane. In this example I am going to show, set of ImageViews by adding these using Gallery View class/API from Android Platform. For this example I have created following images:          GalleryImagesProject.java
package com.techienjoy.example.gallery; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.Gallery; import android.widget.ImageView; import android.widget.AdapterView.OnItemClickListener; public class GalleryImagesProject extends Activity { Context context; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); context = getApplicationContext(); Gallery gallery = (Gallery) findViewById(R.id.gallery1); gallery.setSpacing(1); gallery.setAdapter(new ExampleAdapter()); gallery.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View v, int arg2, long arg3) { ImageView fullView = (ImageView) findViewById(R.id.fullview); fullView.setImageDrawable(((ImageView)v).getDrawable()); } }); } private class ExampleAdapter extends BaseAdapter { @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ImageView imView = null; if(position == 0) { imView = new ImageView(context); imView.setImageResource(R.drawable.camera1); } if(position == 1) { imView = new ImageView(context); imView.setImageResource(R.drawable.camera2); } if(position == 2) { imView = new ImageView(context); imView.setImageResource(R.drawable.camera3); } if(position == 3) { imView = new ImageView(context); imView.setImageResource(R.drawable.camera4); } return imView; } @Override public int getCount() { return 4; } @Override public Object getItem(int position) { return position; } } }
Above source code has many methods left unimplementated as these methods are not going to help directly in achiving objective of this example. I have tried to override selective few methos such as getView that returns appropriate view based on the position argument parameter value. getCount method shows count value for number of images to be used for showing on spinner widget. Android Manifest file for this example, that is automatically generated:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.techienjoy.example.gallery" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="7" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".GalleryImagesProject" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
main.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" android:layout_gravity="center" > <Gallery android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/gallery1" android:layout_gravity="center" > </Gallery> <ImageView android:id="@+id/fullview" android:layout_width="60dip" android:layout_height="60dip" android:layout_alignParentBottom="true" android:layout_gravity="center" /> </LinearLayout>
After building up these files along with image files in appropriate folders such as four images are copied into folder "drawable" under 'res' folder, we have the following screen shot as shown in Android Emulator. I have used Android version 2.1-update1 SDK for this example, along with Eclipse as Android Application Editor/IDE, Java Platform 1.6. One can still enhance this example to use for viewing different photos, those are present in some folder. For example, a simple usage of this example would be to read through a folder and show all those images present in that folder in form of a spinner widget. Once any item from the spinner widget is touche/clicked that perticular Image will be shown in the ImageView below. Just like photo album for mobile device running Android Platform. Just for little change/enhancement I have chaged background of this example Android application to show a simple Image by placing that image in res/drawable folder and adding additional attribute to the LinearLayout as follow: "android:background="@drawable/background". And the final screen as it appears in Emulator screen is as shown below:
On Android EmulatorImage used as app background
Taking note of a user comment on this page, I have added following section, where I have added/updated code for showing the selected image from gallery onto another imageview above it: as shown in the images below:
android-Gallery-example-enhanced/.classpath

<?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="src" path="src"/> <classpathentry kind="src" path="gen"/> <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/> <classpathentry kind="output" path="bin/classes"/> </classpath>


android-Gallery-example-enhanced/.project

<?xml version="1.0" encoding="UTF-8"?> <projectDescription> <name>ImageGalleryExample</name> <comment></comment> <projects> </projects> <buildSpec> <buildCommand> <name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name> <arguments> </arguments> </buildCommand> <buildCommand> <name>com.android.ide.eclipse.adt.PreCompilerBuilder</name> <arguments> </arguments> </buildCommand> <buildCommand> <name>org.eclipse.jdt.core.javabuilder</name> <arguments> </arguments> </buildCommand> <buildCommand> <name>com.android.ide.eclipse.adt.ApkBuilder</name> <arguments> </arguments> </buildCommand> </buildSpec> <natures> <nature>com.android.ide.eclipse.adt.AndroidNature</nature> <nature>org.eclipse.jdt.core.javanature</nature> </natures> </projectDescription>


android-Gallery-example-enhanced/AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="net.techiecommunity.imagegalleryexample" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>


android-Gallery-example-enhanced/project.properties

# This file is automatically generated by Android Tools. # Do not modify this file -- YOUR CHANGES WILL BE ERASED! # # This file must be checked in Version Control Systems. # # To customize properties used by the Ant build system edit # "ant.properties", and override values to adapt the script to your # project structure. # # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt # Project target. target=android-7


android-Gallery-example-enhanced/res/drawable/camera1.png



android-Gallery-example-enhanced/res/drawable/camera2.png



android-Gallery-example-enhanced/res/drawable/camera3.png



android-Gallery-example-enhanced/res/drawable/camera4.png





android-Gallery-example-enhanced/res/layout/main.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" android:layout_gravity="center" > <ImageView android:id="@+id/backgroundView" android:layout_width="fill_parent" android:layout_height="400dp"/> <Gallery android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/gallery1" android:layout_gravity="bottom"> </Gallery> </LinearLayout>


android-Gallery-example-enhanced/res/menu/activity_main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menu_settings" android:title="@string/menu_settings" android:orderInCategory="100" /> </menu>


android-Gallery-example-enhanced/res/values/strings.xml

<resources> <string name="app_name">ImageGalleryExample</string> <string name="hello_world">Hello world!</string> <string name="menu_settings">Settings</string> <string name="title_activity_main">MainActivity</string> </resources>


android-Gallery-example-enhanced/res/values/styles.xml

<resources> <style name="AppTheme" parent="android:Theme.Light" /> </resources>


Android-Gallery-example-enhanced/src/net/techiecommunity/imagegalleryexample/MainActivity.java

/** * @author Ishteak * @Contact reaching@techiecommunity.net * THESE SOURCE CODE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THIS * SOURCE CODE. */ package net.techiecommunity.imagegalleryexample; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.Gallery; import android.widget.ImageView; import android.widget.AdapterView.OnItemClickListener; import android.widget.LinearLayout; public class MainActivity extends Activity { Context context; private Gallery gallery; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); context = getApplicationContext(); gallery = (Gallery) findViewById(R.id.gallery1); gallery.setSpacing(1); gallery.setAdapter(new ExampleAdapter()); gallery.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View v, int arg2, long arg3) { ImageView imageView = (ImageView) findViewById(R.id.backgroundView); imageView.setBackgroundDrawable(((ImageView)v).getDrawable()); v.setBackgroundDrawable(((ImageView)v).getDrawable()); } }); } private class ExampleAdapter extends BaseAdapter { @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ImageView imView = null; if(position == 0) { imView = new ImageView(context); imView.setImageResource(R.drawable.camera1); } if(position == 1) { imView = new ImageView(context); imView.setImageResource(R.drawable.camera2); } if(position == 2) { imView = new ImageView(context); imView.setImageResource(R.drawable.camera3); } if(position == 3) { imView = new ImageView(context); imView.setImageResource(R.drawable.camera4); } return imView; } @Override public int getCount() { return 4; } @Override public Object getItem(int position) { return position; } } }


The most important lesson I have learned by doing these examples, is, just don't stop experimenting with apis to get the most out of it. Once you try various ways to improve code and approach of resolving any specific technical challenge/issue, you would learn something new and exciting as well, of course this is my take, what you think please share on this page using the following form.
If interested in commenting related to Android Gallery Widget Example
Click Here

Name (To be shown on this Page:*

Email (Not to be shown):*

Website (To be shown on this Page)

Your Comments here (To be shown on this Page):*

(You can use <a> Tag in your comments)

Please enter same number as shown here 895

Name: karthikDated: 2013-11-20 11:06:17
Hi, 
how can add image with the background image and saved to the image gallery. Is it possible to do so..?
If could you help me how it can be add..?    
Name: IshtekDated: 2013-12-28 23:06:12
Can you please elaborate your question a bit more?
Are you looking for common functionality of Gallery Widget from Android API, or any
other custom functionality of Gallery View?
Reply
Click Here

Name (To be shown on Page):*

Email (Optional): (never shown)

Website (To be shown on this Page)

Your Comments here (To be shown on Page):*

Please enter same number as shown here 403

Name: YogeshDated: 2014-01-27 19:57:03
Is there any sample code or approach available on showing list of items on a gallery, by using RSST api from server and populating items on UI at runtime?    
Reply
Click Here

Name (To be shown on Page):*

Email (Optional): (never shown)

Website (To be shown on this Page)

Your Comments here (To be shown on Page):*

Please enter same number as shown here 403

Name: SureshDated: 2014-03-26 19:11:16
Can anyone guide me on this particular scenario I am trying to code while using Android Gallery
component??

I am trying to create a Gallery with left and right side images shown horizontally tilted 
and the middle image should be shown as it is.

I am using Android api level 7 only.. I am not sure if this feature is being provided in latest version of Android API.    
Reply
Click Here

Name (To be shown on Page):*

Email (Optional): (never shown)

Website (To be shown on this Page)

Your Comments here (To be shown on Page):*

Please enter same number as shown here 403

Name: GorinDated: 2014-03-29 08:57:10
I need help with code for designing a Gallery widget for images with vertical sliding/movement.

My requirement is to create a Gallery of images that would have slider of images vertically placed,
and while any image is selected, it will show up in the right side of the screen.    
Reply
Click Here

Name (To be shown on Page):*

Email (Optional): (never shown)

Website (To be shown on this Page)

Your Comments here (To be shown on Page):*

Please enter same number as shown here 403

Name: Dinesh KumarDated: 2014-04-26 23:00:52
I am looking for example code on using search 
facility along with Gallery of image with titles.
And pagination of images in Gallery.    
Reply
Click Here

Name (To be shown on Page):*

Email (Optional): (never shown)

Website (To be shown on this Page)

Your Comments here (To be shown on Page):*

Please enter same number as shown here 403




Android Thread Example

REST Interview Questions

JAX-WS Webservice Example

Android Overlap SurfaceView Example

Spring3 Integration of File Endpoint

JAXWS Webservice Example

Android WebView Example

Android Context Menu Example

Setting up Eclipse for Android App Development

Android SensorEvent Orientation Example

Android ImageSwitcher Example

REST API Design for Android App

Android ExpandableListView Example

Singleton Serializable on Android

Android GPS with Google MAP Example

Android Project With Example

Android Project Manageing Files

Project Ideas for App on Android Platform

Android EditText with Background

Android SQLite Database Example

Android AutoCompleteTextView Example

Android Tester

Android Interview Questions

Android ListView Example

Android Intent Notification Example

Android Intent Broadcast Example

Android TextView Link Example

Android Sensor List

Android Sensor Orientation Example

Android Intent Broadcast Receiver

Android Gallery SurfaceViews Example

Android Location Example

Android Text to Speech Example

Android Intent Example

Android Layout Example

Android Download File Example

Android Expandable ListView Example

Android Tab Example

Android RelativeLayout Example

Android Intent Example

Android Text to Speech Example

Android SQLite Example

Android CustomView Example

Android Canvas Example

Android SharedPreferences Example

Android Shape Background Example

Android ShapeButton Example

Android ViewFlipper Example

Android Gallery Example

Android TimePickerDialog Example





If interested commenting on this Page :

comments powered by Disqus
Any source code found on any of the page(s) in Techiecommunity.net is associated with following notice: 
   /*
     * TECHIECOMMUNITY.NET MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
     * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
     * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
     * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. TECHIECOMMUNITY.NET SHALL NOT BE LIABLE FOR
     * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
     * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
     *
     * THIS SOFTWARE IS NOT DESIGNED OR INTENDED FOR USE OR RESALE AS ON-LINE
     * CONTROL EQUIPMENT IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE
     * PERFORMANCE, SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT
     * NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL, DIRECT LIFE
     * SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE FAILURE OF THE
     * SOFTWARE COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SEVERE
     * PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH RISK ACTIVITIES"). TECHIECOMMUNITY.NET
     * SPECIFICALLY DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR
     * HIGH RISK ACTIVITIES.
     */
   
The content provided in this page is NOT warranted and/or NOT guaranteed by techiecommunity.net .
techiecommunity.net is not liable for any negative consequences that may result/arise from 
implementing directly/indirectly any information covered in these pages/articles/tutorials.

For any of the content, if you would like to bring it to notice for removal from this web site, 
please write to this web site administrator @ EMAIL-ID (please remove space before and after @),
with appropriate concern and supporting proof(s). After thorough review and if found genuine concern,
we would take appropriate action and remove disputed content from this web site within 24 hours 
starting from the time it has brought to techiecommunity.net Administrator notice.

This website uses cookies and third party cookies to improve the user experience. 
And to provide more relevant ads. 
In case of continued use of this website implies that you accept the use of cookies on this website.
		
While using this web site, you agree to have read and accepted techiecommunity.net terms of use and privacy policy.