Android上创建照片库的最佳方式是什么(全屏)

时间:2012-07-13 13:33:47

标签: android imageview photo-gallery

我想知道为我的应用创建照片库的最佳方式是什么。我从RSS源获取图片,我想以全屏显示每个图片。我该怎么用?我尝试使用ImageView,但图像调整的方式很糟糕(它们不保留原始尺寸)

我用这个答案来实现我的画廊:Android Gallery fullscreen

感谢的

编辑:

这是XML布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <android.support.v4.view.ViewPager
        android:id="@+id/galleryPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

    </android.support.v4.view.ViewPager>

</LinearLayout>

这是我在我的适配器中用来加载图像的代码:

@Override
public Object instantiateItem(View collection, int position) {
    ImageView imageView = new ImageView(context);
    imageView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
    imageView.setScaleType(ImageView.ScaleType.FIT_XY);
    ImageDownloader.getInstance().download(gallery.get(position), ImageFormat.CONTENT_316, imageView);

        ((ViewPager) collection).addView(imageView, 0);

        return imageView;
}

4 个答案:

答案 0 :(得分:1)

我会在其中使用带有ImageViews的ViewPager

您可以向ImageView指定如何使用xml中的android:scaleType属性拉伸(或不使用)图像。如果您与ImageViews共享一些代码,并且可能会提供更多关于如何使用它们的信息,我可以尝试帮助您正确设置它。

另外,我建议您查看Displaying Bitmaps Efficiently,了解在处理图片时使用的最佳做法,以便将应用的效果保持在最佳状态。

答案 1 :(得分:1)

使用Adapter&amp; ListView显示图片幻灯片。

现在,在适配器项目的布局中,ImageView使用fill_parent进行宽度和放大像下面的代码一样高:

<ImageView
        android:id="@+id/imageView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:scaleType="fitXY" />

您可以建议用户在横向模式下使用手机以获得更好的性能。所以在 layout-land 文件夹中保留额外的布局

答案 2 :(得分:0)

一种方式是

  • 从rss Feed获取图片网址
  • 在自定义图库中将它们显示为缩略图(可以通过水平线性布局设置,其中包含图像视图,在滚动视图内)
  • 使用延迟加载图片来显示这些缩略图
  • 覆盖onClickListener以获取点击事件
  • 并在此onClick中加载webview中的当前图像URL。
  • webview具有缩放,移动图片等优点。

答案 3 :(得分:0)

我上面使用的代码几乎是正确的,我刚刚将ImageView.ScaleType.FIT_XY更改为ImageView.ScaleType.CENTER_CROP

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <android.support.v4.view.ViewPager
        android:id="@+id/galleryPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

    </android.support.v4.view.ViewPager>

</LinearLayout>

这是我在我的适配器中用来加载图像的代码:

@Override
public Object instantiateItem(View collection, int position) {
    ImageView imageView = new ImageView(context);
    imageView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
    imageView.setScaleType(**ImageView.ScaleType.CENTER_CROP**);
    ImageDownloader.getInstance().download(gallery.get(position), ImageFormat.CONTENT_316, imageView);

        ((ViewPager) collection).addView(imageView, 0);

        return imageView;
}