px in dpi
-
Lucifer777
- Сообщения: 122
- Зарегистрирован: 18 ноя 2013, 17:53
px in dpi
Здравствуйте!
Имеются картинки (качаются из интернета) 300 на 200 px. Каким образом её выводить на всех экранах одинаково?
Так же приветствуются любые полезные материалы для новичков накопленные вашим не посильным трудом по вёрстке приложений.
Имеются картинки (качаются из интернета) 300 на 200 px. Каким образом её выводить на всех экранах одинаково?
Так же приветствуются любые полезные материалы для новичков накопленные вашим не посильным трудом по вёрстке приложений.
Re: px in dpi
Одинаково все равно не получится. Можно конечно зафиксировать ImageView в процентном соотношении к размеру дисплея, но это тоже думаю, не изящное решение.Lucifer777 писал(а):Здравствуйте!
Имеются картинки (качаются из интернета) 300 на 200 px. Каким образом её выводить на всех экранах одинаково?
Так же приветствуются любые полезные материалы для новичков накопленные вашим не посильным трудом по вёрстке приложений.
P.S. Я так заказчикам пакостил, когда они не хотели понимать, что пиксель в пиксель - это не про android.
Re: px in dpi
А картинки подгружаются в процессе работы программы или они статичны и уже у тебя есть?
-
Lucifer777
- Сообщения: 122
- Зарегистрирован: 18 ноя 2013, 17:53
Re: px in dpi
в процессе, в bitmap гружу.adarash писал(а):А картинки подгружаются в процессе работы программы или они статичны и уже у тебя есть?
-
Lucifer777
- Сообщения: 122
- Зарегистрирован: 18 ноя 2013, 17:53
Re: px in dpi
покажешь как это в процентном соотношении делать?adarash писал(а):Одинаково все равно не получится. Можно конечно зафиксировать ImageView в процентном соотношении к размеру дисплея, но это тоже думаю, не изящное решение.Lucifer777 писал(а):Здравствуйте!
Имеются картинки (качаются из интернета) 300 на 200 px. Каким образом её выводить на всех экранах одинаково?
Так же приветствуются любые полезные материалы для новичков накопленные вашим не посильным трудом по вёрстке приложений.
P.S. Я так заказчикам пакостил, когда они не хотели понимать, что пиксель в пиксель - это не про android.
Re: px in dpi
1. При загрузке советую пользоваться Universal image Loader-ом.Lucifer777 писал(а):в процессе, в bitmap гружу.adarash писал(а):А картинки подгружаются в процессе работы программы или они статичны и уже у тебя есть?
2.
Код: Выделить всё
int w = (int) ((getWindowManager().getDefaultDisplay().getWidth()) * 0.5);
iv.setLayoutParams(new android.widget.LinearLayout.LayoutParams(
w, LayoutParams.WRAP_CONTENT));Правильно ли это или нет, я не знаю. Но делал так и претензий со стороны заказчика не было и ошибок тоже.
P.S. Если я не прав и этот метод не правильный-то скажите как правильно. Мне тоже интересно
-
Lucifer777
- Сообщения: 122
- Зарегистрирован: 18 ноя 2013, 17:53
Re: px in dpi
Спасибо большое! Если найду другой способ то выложу в этой ветке.adarash писал(а): P.S. Если я не прав и этот метод не правильный-то скажите как правильно. Мне тоже интересно.
Re: px in dpi
adarash писал(а):P.S. Если я не прав и этот метод не правильный-то скажите как правильно. Мне тоже интересно
Для этих целей я использую custom ImageView, класс:adarash писал(а):Одинаково все равно не получится. Можно конечно зафиксировать ImageView в процентном соотношении к размеру дисплея, но это тоже думаю, не изящное решение.
P.S. Я так заказчикам пакостил, когда они не хотели понимать, что пиксель в пиксель - это не про android.
[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]
