如何在Android中显示来自GridView Activity的图像预览

时间:2011-10-03 18:12:17

标签: android image gridview

我使用这个tutorial为Android制作了一个带有GridView的应用程序。我放了所有的图像 进入drawable-hdpi文件夹。 gridview工作正常,但现在我想在用户触摸gridview中的图像时启动或打开另一个活动。新活动应该是该单个图像的预览。

我该怎么做?

这是我如何推杆但它不起作用 我的1活动:

gridView.setOnItemClickListener(new OnItemClickListener() 
{
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) 
    {                
        Intent fullScreenIntent = new Intent(v.getContext(), 2activity.class);
        fullScreenIntent.putExtra(1activity.class.getName(),imageIDs);

        1activity.this.startActivity(fullScreenIntent); 
    }
}); 

我的2活动:

    public void onCreate(Bundle savedInstanceState, int[] imageIDs) {
super.onCreate(savedInstanceState);
setContentView(R.layout.image);
        Intent intent = getIntent();

        long imageIDs = (Long) intent.getExtras().get(2activity.class.getName());
        ImageView imageView = (ImageView)v.findViewById(R.id.preview);

        imageView.setLayoutParams( new ViewGroup.LayoutParams(WindowManager.LayoutParams.FILL_PARENT, WindowManager.LayoutParams.FILL_PARENT));

        imageView.setImageResource((int) imageIDs);
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);     

    }  

当我从1活动转到2活动时,它只显示空白它没有从第一个活动中捕获的图像????我该怎么办?

5 个答案:

答案 0 :(得分:1)

错误:

long imageIDs = (Long) intent.getExtras().get(2activity.class.getName());

错误的密钥,通过以下方式修复:

 long imageIDs = (Long) intent.getExtras().get(1activity.class.getName());

答案 1 :(得分:0)

创建一个OnItemClickListener(http://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener.html),用于启动您的活动并使用setOnItemClickListener方法(http://developer.android.com/reference/android/widget/AdapterView.html#setOnItemClickListener%28android.widget.AdapterView .OnItemClickListener%29)将侦听器附加到GridView。

-Kurtis

答案 2 :(得分:0)

在您的2Activity中,您获得

的空值
long imageIDs = (Long) intent.getExtras().get(2activity.class.getName());

你应该放在这里:

int imageIDs1 = intent.getIntExtra(2activity.class.getName(), R.drawable.icon);

答案 3 :(得分:0)

enter image description here

 FragmentManager fm = activity.getFragmentManager();
 ImageDialogFragment newFragment = ImageDialogFragment.newInstance();                                                                                                                                                                                                                                     
 newFragment .setArguments(bundle);
 newFragment .show(fm, "slideshow");

了解更多信息,请点击here

答案 4 :(得分:0)

在图像上单击获取图像位图,将位图转换为字节并通过意图将字节传递给您的活动

                Bitmap b=image.getDrawingCache();
                ByteArrayOutputStream stream = new ByteArrayOutputStream();
                b.compress(Bitmap.CompressFormat.PNG,75, stream);
                byte[] bytes = stream.toByteArray();
                Intent i = new Intent(mContext, ShowImageActivity.class);
                i.putExtra("Bitmap", bytes);
                startActivity(i);

在第二个活动中从包中获取字节并设置为imageview

Bundle bundle = getIntent().getExtras();
    if (bundle != null) {
        if(bundle.containsKey("Bitmap")) {
            byte[] bytes = bundle.getByteArray("Bitmap");
            Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
            BitmapDrawable ob = new BitmapDrawable(getResources(), bmp);
            photo.setBackground(ob);
        }

    }