adarash писал(а):P.S. Если я не прав и этот метод не правильный-то скажите как правильно. Мне тоже интересно
adarash писал(а):Одинаково все равно не получится. Можно конечно зафиксировать ImageView в процентном соотношении к размеру дисплея, но это тоже думаю, не изящное решение.
P.S. Я так заказчикам пакостил, когда они не хотели понимать, что пиксель в пиксель - это не про android.
Для этих целей я использую custom ImageView, класс:
[syntax=java5]
package com.mypackegename.photoview;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ImageView;
public class SquareImageView extends ImageView {
public SquareImageView(Context context) {
super(context);
}
public SquareImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SquareImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
setMeasuredDimension(getMeasuredWidth(), getMeasuredWidth()); //Snap to width
}
}
[/syntax]
layout square_image_view.xml:
[syntax=xml]
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="
http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.mypackegename.photoview.SquareImageView
android:id="@+id/picture"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="3dp"
android:scaleType="centerCrop"
/>
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="15dp"
android:paddingBottom="15dp"
android:layout_gravity="bottom"
android:textColor="@android:color/white"
android:background="#55000000"/>
</FrameLayout>
[/syntax]
В результате все изображения выравниваются по шаблону, т.е. имеют одинаковый(заданный) размер отображения абсолютно не зависящий от размера экрана.
Если использовать в связке с UniversalImageLoader, то вообще удобно, в getView:
[syntax=java5]
@Override
public View getView(int position, View convertView, ViewGroup parent) {
SquareImageView imageView = new SquareImageView(mContext);
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_stub)
.showImageForEmptyUri(R.drawable.ic_empty)
.showImageOnFail(R.drawable.ic_error)
.cacheInMemory(true)
.cacheOnDisc(true)
.considerExifParams(true)
.bitmapConfig(Bitmap.Config.RGB_565)
.build();
if (convertView == null) {
imageLoader.displayImage(photoUrls.get(position), imageView, options); // Запустили асинхронный показ картинки
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
} else {
imageView = (SquareImageView) convertView;
}
/*imageView.setImageUrl(photoUrls.get(position));*/
return imageView;
}
[/syntax]