Android 从库中单击弹出图像

Android 从库中单击弹出图像,android,Android,我是android新手。如何从图库视图中弹出所选图像。我附加了我的编码 public class mygallerycode extends Activity { Integer[] a={R.drawable.hotel1,R.drawable.hotel2,R.drawable.hotel3}; Gallery gallery; ImageView imageview; public void onCreate(Bundle bb) { s

我是android新手。如何从图库视图中弹出所选图像。我附加了我的编码

public class mygallerycode extends Activity
{
    Integer[] a={R.drawable.hotel1,R.drawable.hotel2,R.drawable.hotel3};

    Gallery gallery;
    ImageView imageview;

    public void onCreate(Bundle bb) {
        super.onCreate(bb);
        setContentView(R.layout.mygallery);
        gallery=(Gallery)findViewById(R.id.gallery1);
        gallery.setAdapter(new ImageAdapter(this));

        imageview=(ImageView)findViewById(R.id.imageView1);

        gallery.setOnItemClickListener(new OnItemClickListener()
        {
        public void onItemClick(AdapterView<?> parent, View v,
        int position, long id)
        {
        Toast.makeText(getBaseContext(),"picture" + (position+1) +"selected",Toast.LENGTH_SHORT).show();
        //imageview.setImageResource(a[position]);


        }
        });
    }
        class ImageAdapter extends BaseAdapter
        {

            private Context context;
            private int itemBackground;

            public ImageAdapter(Context c)
            {
                context = c;
                //---setting the style---
                TypedArray ta = obtainStyledAttributes(R.styleable.gallery1);
                itemBackground = ta.getResourceId(
                R.styleable.gallery1_android_galleryItemBackground, 1);
                ta.recycle();

            }

            @Override
            public int getCount() {
                // TODO Auto-generated method stub
                return a.length;
            }

            @Override
            public Object getItem(int position) {
                // TODO Auto-generated method stub
                return position;
            }

            @Override
            public long getItemId(int position) {
                // TODO Auto-generated method stub
                return position;
            }

            @Override
            public View getView(int position, View convertView,
                    ViewGroup parent) {
                // TODO Auto-generated method stub
                ImageView imageView = new ImageView(context);
                imageView.setImageResource(a[position]);
                imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                imageView.setLayoutParams(new Gallery.LayoutParams(150, 120));
                imageView.setBackgroundResource(itemBackground);
                return imageView;
            }

        }
    }
公共类mygallerycode扩展活动
{
整数[]a={R.drawable.hotel1,R.drawable.hotel2,R.drawable.hotel3};
画廊;
图像视图图像视图;
创建时的公共void(Bundle bb){
super.onCreate(bb);
setContentView(R.layout.mygallery);
画廊=(画廊)findViewById(R.id.gallery1);
gallery.setAdapter(新的ImageAdapter(本));
imageview=(imageview)findViewById(R.id.imageView1);
gallery.setOnItemClickListener(新的OnItemClickListener()
{
public void onItemClick(AdapterView父视图、视图v、,
内部位置,长id)
{
Toast.makeText(getBaseContext(),“picture”+(位置+1)+“selected”,Toast.LENGTH_SHORT).show();
//setImageResource(一个[位置]);
}
});
}
类ImageAdapter扩展BaseAdapter
{
私人语境;
私人背景;
公共图像适配器(上下文c)
{
上下文=c;
//---设置样式---
TypedArray ta=获得的StyledAttributes(R.styleable.gallery1);
itemBackground=ta.getResourceId(
R.styleable.gallery1_android_galleryItemBackground,1);
ta.recycle();
}
@凌驾
public int getCount(){
//TODO自动生成的方法存根
返回a.length;
}
@凌驾
公共对象getItem(int位置){
//TODO自动生成的方法存根
返回位置;
}
@凌驾
公共长getItemId(int位置){
//TODO自动生成的方法存根
返回位置;
}
@凌驾
公共视图getView(int位置,视图转换视图,
视图组(父级){
//TODO自动生成的方法存根
ImageView ImageView=新的ImageView(上下文);
setImageResource(一个[位置]);
imageView.setScaleType(imageView.ScaleType.FIT_XY);
imageView.setLayoutParams(新的Gallery.LayoutParams(150120));
imageView.setBackgroundResource(itemBackground);
返回图像视图;
}
}
}

适用于相对较小图像的解决方案

如果要加载大型图像,则应阅读(查看
decodeSampledBitmapFromResource
calculateInSampleSize
方法并使用AsyncTask)


但对于相对较小的图像,这里有一个可能的解决方案:

mygallerycode活动类:

public class mygallerycode extends Activity
{
    Integer[] a={R.drawable.hotel1,R.drawable.hotel2,R.drawable.hotel3};

    Gallery gallery;
    ImageView imageview;

    public void onCreate(Bundle bb) {
        super.onCreate(bb);
        setContentView(R.layout.mygallery);
        gallery=(Gallery)findViewById(R.id.gallery1);
        gallery.setAdapter(new ImageAdapter(this));

        imageview=(ImageView)findViewById(R.id.imageView1);

        gallery.setOnItemClickListener(new OnItemClickListener()
        {
        public void onItemClick(AdapterView<?> parent, View v,
        int position, long id)
        {
            showPopupImage(a[position]);
        }
        });
    }

    private void showPopupImage(Integer imageResource) {
        AlertDialog.Builder imageDialog = new AlertDialog.Builder(this);
        LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);

        View layout = inflater.inflate(R.layout.custom_fullimage_dialog,
                (ViewGroup) findViewById(R.id.layout_root));
        ImageView image = (ImageView) layout.findViewById(R.id.fullimage);
        image.setImageResource(imageResource);
        imageDialog.setView(layout);
        imageDialog.setCancelable(true);


        imageDialog.create();
        imageDialog.show();
    }

        class ImageAdapter extends BaseAdapter
        {

            private Context context;
            private int itemBackground;

            public ImageAdapter(Context c)
            {
                context = c;
                //---setting the style---
                TypedArray ta = obtainStyledAttributes(R.styleable.gallery1);
                itemBackground = ta.getResourceId(
                R.styleable.gallery1_android_galleryItemBackground, 1);
                ta.recycle();

            }

            @Override
            public int getCount() {
                // TODO Auto-generated method stub
                return a.length;
            }

            @Override
            public Object getItem(int position) {
                // TODO Auto-generated method stub
                return position;
            }

            @Override
            public long getItemId(int position) {
                // TODO Auto-generated method stub
                return position;
            }

            @Override
            public View getView(int position, View convertView,
                    ViewGroup parent) {
                // TODO Auto-generated method stub
                ImageView imageView = new ImageView(context);
                imageView.setImageResource(a[position]);
                imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                imageView.setLayoutParams(new Gallery.LayoutParams(150, 120));
                imageView.setBackgroundResource(itemBackground);
                return imageView;
            }

        }
    }

您的问题是什么?您所说的弹出窗口是什么意思?谢谢。这种方法很有效。但我不知道如何全屏弹出图像。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/layout_root" android:orientation="horizontal"
              android:layout_width="fill_parent" android:layout_height="fill_parent"
              android:padding="10dp">
    <ImageView android:id="@+id/fullimage" android:layout_width="fill_parent"
               android:layout_height="fill_parent">
    </ImageView>
</LinearLayout>
private void showPopupImage(Integer imageResource) {
    AlertDialog.Builder imageDialog = new AlertDialog.Builder(this);
    ImageView image = new ImageView(this);
    image.setImageResource(imageResource);
    imageDialog.setView(image);
    imageDialog.setCancelable(true);
    imageDialog.create();
    imageDialog.show();
}