First of all you need to use a custom class in place of Gallery :-
package com.pakagename;
import android.content.Context;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.widget.Gallery;
public class ExtendedGallery extends Gallery{
private boolean stuck = false;
public ExtendedGallery(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}
public ExtendedGallery(Context context, AttributeSet attrs) {
    super(context, attrs);
}
public ExtendedGallery(Context context) {
    super(context);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
    return stuck || super.onTouchEvent(event);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    switch (keyCode) {
    case KeyEvent.KEYCODE_DPAD_LEFT:
    case KeyEvent.KEYCODE_DPAD_RIGHT:
        return stuck || super.onKeyDown(keyCode, event);
    }
    return super.onKeyDown(keyCode, event);
}
public void setScrollingEnabled(boolean enabled) {
    stuck = !enabled;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY){
    return super.onFling(e1, e2, 0, velocityY);
}
}
Now in your activity Xml in place of gallery you can put 
 (main_acitvity) :-
Better if put both of them inside a relative layout 
        <com.pakagename.ExtendedGallery
            android:id="@+id/mygallery01"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:fadingEdge="none"
            android:spacing="0px" />
        <LinearLayout
            android:id="@+id/image_count"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:background="#00000000"
            android:orientation="horizontal"
            android:gravity="center" >
        </LinearLayout>
Main Activity :-
package com.feastcard;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Typeface;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.pakagename.data.ImagePath;
import com.pakagename.util.ImageThreadLoader;
public class MainActivity extends CustomMainScreen implements OnClickListener{
private MainActivity mainactivity;
private ExtendedGallery  galleryView;
private ImageThreadLoader imageThreadLoader;
private int count;
private LinearLayout count_layout;
static TextView page_text[];
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mainactivity= this;
    setContentView(R.layout.main_activity);
    galleryView= (ExtendedGallery ) resturantDetail.findViewById(R.id.mygallery01);
    ImageAdapter adapter = new ImageAdapter(resturantDetail);
    galleryView.setAdapter(adapter);
    galleryView.setScrollingEnabled(true);
    count_layout = (LinearLayout) findViewById(R.id.image_count);
    count = resturantDetailView.getAdapter().getCount();
    System.out.println("Gallery Image Count======>>>" + count);
    page_text = new TextView[count];
    for (int i = 0; i < count; i++) {
        page_text[i] = new TextView(this);
        page_text[i].setText(".");
        page_text[i].setTextSize(45);
        page_text[i].setTypeface(null, Typeface.BOLD);
        page_text[i].setTextColor(android.graphics.Color.GRAY);
        count_layout.addView(page_text[i]);
    }
    galleryView.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view,
                int pos, long id) {
            // TODO Auto-generated method stub
            System.out.println("Item Selected Position=======>>>" + pos);
            for (int i = 0; i < count; i++) {
                MainActivity.page_text[i]
                                          .setTextColor(android.graphics.Color.GRAY);
            }
            MainActivity.page_text[pos]
                                      .setTextColor(android.graphics.Color.WHITE);
        }
        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub
        }
    });
Now the Image Adapter class used for setting up the images in Custom Gallery view :
public class ImageAdapter extends BaseAdapter {
        /** The parent context */
        //private Context myContext;
        @SuppressWarnings("unused")
        private Context mContext; 
        LayoutInflater mInflater;
    /** Simple Constructor saving the 'parent' context. */
    public ImageAdapter(Context c) {
        mContext = c;  
        mInflater=LayoutInflater.from(c);
    }
    public int getCount() {
        return imageArray.size();
        // here i'm using a string array(imageArray) containing the urls of the images
    }
    public Object getItem(int position) {
        return position;
    }
    public long getItemId(int position) {
        return position;
    }
    // Returns a new ImageView to be displayed,
    public View getView(int position, View convertView, 
            ViewGroup parent) {
        final ImagePath path = imageArray.get(position);
        // Get a View to display image data 
        if(convertView==null)
        {
            convertView=mInflater.inflate(R.layout.image_slide_description, null);
        }
        System.out.println(" POSITION "+position);
        Bitmap cachedImage = null;
        final ImageView iv = (ImageView)convertView.findViewById(R.id.image); 
        iv.setTag(path.getImagepath());
        System.out.println("SSSSSSSSSS"+path.getImagepath());
        try {
            cachedImage = imageThreadLoader.loadImage(path.getImagepath(), new ImageThreadLoader.ImageLoadedListener() 
            {                       
                public void imageLoaded(Bitmap imageBitmap) 
                {
                    System.out.println("Inside Image Load of ImageAdapter");
                    iv.setImageBitmap(imageBitmap); 
                    iv.setScaleType(ImageView.ScaleType.FIT_XY);                           
                    notifyDataSetChanged();
                }
            });
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch(NullPointerException e) 
        {
            e.printStackTrace();                
        }
        if(cachedImage!=null)
        {
            System.out.println("Inside Cached Image of ImageAdapter");
            iv.setImageBitmap(cachedImage); 
            iv.setScaleType(ImageView.ScaleType.FIT_XY);                  
            // The preferred Gallery item background
        } 
        return convertView;
    }
}
layout inflated inside the adapter class :
imageslidedescription :-
<ImageView 
    android:id="@+id/image" 
    android:layout_width="250dp"
    android:layout_height="150dp"
    android:layout_centerInParent="true"
    android:layout_margin="30dp"
    android:contentDescription="@string/image_view"/>
Hope this will help you. Still if above code need some modification for better or you have other some suggestions regarding this ,feel free to post.
                       
                    
0 Comment(s)