вид сетки Android с изображениями (изображения сжимаются и выглядят размытыми) - PullRequest
3 голосов
/ 20 сентября 2011

enter image description here Мне нужно показать 7 значков на главном экране моего приложения. Для этого я расположил значки в виде сетки с использованием представления изображений для показа изображений. На эмуляторе это выглядит абсолютно нормально, но изображения сжимаются и выглядят размытие, при развертывании приложения на LG Optimus p350, пожалуйста, помогите мне, как четко показать изображения реального размера:

Код, который я пробовал:

<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gridview" android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:columnWidth="61dp"
    android:numColumns="3" android:verticalSpacing="10dp"
    android:horizontalSpacing="10dp" android:stretchMode="spacingWidthUniform"
    android:gravity="center" android:layout_gravity="center" />

размер значка 61 * 80

РЕДАКТИРОВАТЬ:

<supports-screens android:smallScreens="true"
        android:normalScreens="true" android:largeScreens="true"
         android:anyDensity="true"/>

Пожалуйста, смотрите изображение и код. На эмуляторе вывод отображается следующим образом. Я хочу показать вывод на устройстве также с этой ясностью. Пожалуйста, руководство

см. Второй снимок экрана (размытие на эмуляторе qvga) и, пожалуйста, укажите, как это исправить.

enter image description here

Ответы [ 2 ]

2 голосов
/ 07 октября 2011

Изображения не кажутся мне размытыми.Они просто меньше из-за более высокого разрешения экрана.Но текст выглядит размытым.

Поэтому я бы предложил использовать комбинацию ImageView и TextView .Разделить текст и изображение.Текст будет соответствующим образом масштабирован.Вы также можете предоставить несколько наборов изображений для разных разрешений.

РЕДАКТИРОВАНИЕ: Вы можете создать макет элемента сетки, подобный следующему:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" 
android:gravity="bottom"
android:layout_width="wrap_content" 
android:layout_gravity="bottom">

<ImageView android:id="@+id/thumbnailImage"
    android:layout_height="70dp" 
    android:layout_width="fill_parent"      
    android:gravity="center_horizontal" />

<TextView android:id="@+id/thumnailTitle" android:text="TextView"
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:layout_width="fill_parent"
    android:gravity="center_horizontal|bottom" />
</LinearLayout>

Создать пользовательский адаптер сеткиРасширяющий класс BaseAdapter:

public class MyGridAdapter extends BaseAdapter
{...}

связывает адаптер с вашей сеткой:

adapter = new MyGridAdapter();

GridView gridView = (GridView) findViewById(R.id.gridView);
gridView.setAdapter(adapter);

Тогда нужно просто заполнить элементы в сетке с помощью метода адаптера getView:

public View getView(int position, View convertView, ViewGroup parent)
{
   // assuming the grid item layout is named "grid_item"
   View view = inflater.inflate(R.layout.grid_item, null);

   TextView text = (TextView) view.findViewById(R.id.thumnailTitle);
   text.setText("Test");

   ImageView thumbnail = (ImageView) view.findViewById(R.id.thumbnailImage);
...
0 голосов
/ 20 сентября 2011

Предоставляете ли вы ресурсы с несколькими разрешениями?Внимательно прочитайте эту статью о поддержке нескольких экранов .

Я не думаю, что изображения уменьшаются, они выглядят только меньше, потому что ваш телефон имеет более высокую плотность или разрешение, чем эмулятор, на котором вы тестировали.

...