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)