2015-10-15 19 views
1

我想创建一个照片库包含两列创建Android画廊,像这里显示我想用不同大小的列

enter image description here

图像中的图像必须被二次采样,也让她的方面比。 这是一个子样本图像的自定义转换:

public ImageCustomTransformation(Context context, int maxWidth, int maxHeight) { 
    super(context); 
    this.maxWidth = maxWidth; 
    this.maxHeight = maxHeight; 
} 

@Override 
protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { 

    int targetWidth, targetHeight; 
    double aspectRatio; 

    if (toTransform.getWidth() > toTransform.getHeight()) { 
     targetWidth = maxWidth; 
     aspectRatio = (double) toTransform.getHeight()/(double) toTransform.getWidth(); 
     targetHeight = (int) (targetWidth * aspectRatio); 
    } else { 
     targetHeight = maxHeight; 
     aspectRatio = (double) toTransform.getWidth()/(double) toTransform.getHeight(); 
     targetWidth = (int) (targetHeight * aspectRatio); 
    } 

    Bitmap result = Bitmap.createScaledBitmap(toTransform, targetWidth, targetHeight, false); 
    if (result != toTransform) { 
     toTransform.recycle(); 
    } 
    return result; 
} 

这里是为GridView的代码:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/gallery" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="@android:color/darker_gray"> 

<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/grid_view_photos" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_above="@+id/set_photo_button" 
    android:layout_below="@+id/relativeLayout2" 
    android:layout_marginLeft="10dp" 
    android:layout_marginRight="10dp" 
    android:layout_marginTop="10dp" 
    android:numColumns="2" 
    android:horizontalSpacing="10dp" 
    android:verticalSpacing="10dp" /> 

<Button 
    android:id="@+id/set_photo_button" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:text="Upload Photo" /> 
</RelativeLayout> 

这里是为GridView的项目:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.CardView 
xmlns:android="http://schemas.android.com/apk/res/and`enter code here`roid" 
xmlns:cardview="http://schemas.android.com/apk/res-auto" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_margin="5dp" 
android:layout_marginBottom="10dp" 
android:layout_marginLeft="10dp" 
android:layout_marginRight="10dp" 
android:layout_marginTop="10dp" 
android:background="@android:color/white" 
cardview:cardCornerRadius="5dp"> 

<ImageView 
    android:id="@+id/image_view_gallery" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="5dp" 
    android:layout_marginLeft="5dp" 
    android:layout_marginRight="5dp" 
    android:layout_marginTop="5dp"></ImageView> 
</android.support.v7.widget.CardView> 

要加载我使用Glide Library的图像,然后将上下文和维度传递给二次采样(变换)图像。结果不是我想象的那个。 任何人都可以帮助我弄清楚如何从上面的示例图像完成布局? 谢谢!

回答

1

寻找AsymmetricGridView或QuiltViewLibrary,这些例子可能会有用。