当在android中单击图库中的特定图像时,在图库视图底部显示放大图像

时间:2011-08-11 09:15:17

标签: android android-layout

在Android中点击Gallery中的特定图像时,有人能告诉我如何放大图库视图底部的图像吗?

我尝试按照以下方式执行此操作,但问题是我的图像显示在Gallery中的同一图像后面:

我的代码是:

 package com.HelloGallery;

 import android.app.Activity;
 import android.content.Context; 
 import android.content.res.TypedArray;
 import android.os.Bundle;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.AdapterView;
 import android.widget.AdapterView.OnItemClickListener;
 import android.widget.BaseAdapter;
 import android.widget.Gallery;
 import android.widget.ImageView;
 import android.widget.Toast;


 public class HelloGallery extends Activity 
  {
  public static Integer[] mImageIds = {
    R.drawable.ashtavinayak, 
    R.drawable.ayadhya,
    R.drawable.buddh, 
    R.drawable.centersoffaith,
    R.drawable.chandra, 
    R.drawable.gajananmaharaj,
    R.drawable.guru, 
    R.drawable.haridwar,
    R.drawable.kanchipuram,
    R.drawable.kanyakumari,
    R.drawable.ketu, 
    R.drawable.maiher,
    R.drawable.mangal, 
    R.drawable.mathura,
    R.drawable.meenakshi, 
    R.drawable.pandharpur,
    R.drawable.rahu, 
    R.drawable.shabrimalai,
    R.drawable.shani, 
    R.drawable.shirdi,
    R.drawable.shukra, 
    R.drawable.surya,
    R.drawable.ujjain, 
    R.drawable.vaishnodevi,
    R.drawable.vindhyavasini,
};

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Gallery gallery = (Gallery) findViewById(R.id.gallery);
    gallery.setAdapter(new ImageAdapter(this));

    gallery.setOnItemClickListener(new OnItemClickListener() 
    {

        public void onItemClick(AdapterView parent, View v, int position, long id) {
            Toast.makeText(HelloGallery.this, "" + position, Toast.LENGTH_SHORT).show();
            showImage(v, position);

           //imageView.setImageResource(mImageIds[0]);
        }   

    });


}


 protected void showImage(View v, int position) 
 {

    ImageView imgView = (ImageView)v; 
    imgView.setImageResource(mImageIds[position]);
    imgView.bringToFront();
    imgView.setLayoutParams(new Gallery.LayoutParams(150,100));
    imgView.setScaleType(ImageView.ScaleType.FIT_CENTER);           
}


class ImageAdapter extends BaseAdapter 
{
    int mGalleryItemBackground;
    private Context mContext;

    public ImageAdapter(Context c)
    {
        mContext = c;
        TypedArray attr = mContext.obtainStyledAttributes(R.styleable.HelloGallery);
        mGalleryItemBackground = attr.getResourceId(
                R.styleable.HelloGallery_android_galleryItemBackground, 0);
        attr.recycle();
    }

    public int getCount() 
    {
        return mImageIds.length;
    }

    public Object getItem(int position)
    {
        return position;
    }

    public long getItemId(int position) 
    {
        return position;
    }

    public  View getView(int position, View convertView, ViewGroup parent) 
    {
       ImageView imageView = new ImageView(mContext);

        imageView.setImageResource(mImageIds[position]);
        imageView.setLayoutParams(new Gallery.LayoutParams(150,100));
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);
        imageView.setBackgroundResource(mGalleryItemBackground);

        return imageView;
    }
}
  }

1 个答案:

答案 0 :(得分:0)

将showImage方法更改为以下

protected void showImage(View v, int position) 
{
     for(int i = 0; i < gallery.getChildCount(); i++){
         if(gallery.getChildAt(i) != null) {
             gallery.getChildAt(i).setLayoutParams(new Gallery.LayoutParams(150, 100));
         }
     }
     v.setLayoutParams(new Gallery.LayoutParams(300, 200));
}

首先,将所有可见的imageView调整为原始大小,然后调整所选的imageView的大小。您还必须将gallery变量设置为成员变量,从而将其移至类定义。

相关问题