繁体   English   中英

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

[英]to display magnify image in bottom of gallery view when that particular image in gallery is clicked in android

当在 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;
    }
}
  }

将您的 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 的大小。 您还必须将您的画廊变量设置为成员变量,从而将其移至 class 定义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM