Показать элементы GridView во фрейме

Как show представить сетку item в frame, я использую GridView в своем приложении, и теперь мне нужно показать каждый grid item в frame

Я использую цвет black как background и хочу использовать frame из некоторых other color (например: белый), так как я могу использовать white в качестве рамки элементов сетки?

    <ImageView
        android:id="@+id/imageItem"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:scaleType="centerCrop"
        android:background="@null"
        android:contentDescription="@null"
        />

person Sophie    schedule 14.10.2014    source источник
comment
setImageBackground для рамки и setImageResource для изображения, иначе вы можете использовать эффект маскировки.   -  person SilentKiller    schedule 14.10.2014
comment
@SilentKiller, почему я не получаю параметр setImageBackground, я уже использую setImageResource следующим образом: viewHolder.imageview.setImageResource(R.drawable.ic_launcher);   -  person Sophie    schedule 14.10.2014
comment
вы можете сделать это с imageView.setBackgroundDrawable();   -  person SilentKiller    schedule 14.10.2014
comment
@SilentKiller я пробовал это: android:background=@color/white показывает, когда изображение не загружено, но не становится белым в углу изображений сетки - разрешение (W-320xH-180)   -  person Sophie    schedule 14.10.2014


Ответы (2)


Для отображения изображения в кадре есть два способа сделать это.

  1. Установите фоновое изображение или цвет, чтобы показать, что изображение находится в кадре
  2. Установить маскировку

Для настройки фона:

<ImageView
    android:id = "@+id/imageItem"
    android:layout_width = "match_parent"
    android:layout_height = "wrap_content"
    android:adjustViewBounds = "true"
    android:scaleType = "center"
    android:padding = "5dp"
    android:background = "#FFFFFF"
    android:contentDescription = "@null" />

Для маскирования проверьте следующий код:

ImageView mImageView= (ImageView)findViewById(R.id.imageview_id);
Bitmap original = BitmapFactory.decodeResource(getResources(),R.drawable.content_image);
Bitmap mask = BitmapFactory.decodeResource(getResources(),R.drawable.mask);
Bitmap result = Bitmap.createBitmap(mask.getWidth(), mask.getHeight(), Config.ARGB_8888);
Canvas mCanvas = new Canvas(result);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
mCanvas.drawBitmap(original, 0, 0, null);
mCanvas.drawBitmap(mask, 0, 0, paint);
paint.setXfermode(null);
mImageView.setImageBitmap(result);
mImageView.setScaleType(ScaleType.CENTER);
mImageView.setBackgroundResource(R.drawable.background_frame);

Если вы хотите показать цвет в качестве фона, то первый вариант будет намного лучше и эффективнее.

person SilentKiller    schedule 14.10.2014
comment
большое спасибо, такой простой и лучший способ, используйте отступы ... могу ли я узнать, что использовать, если я хочу показать красный цвет вместо белого, когда пользователь нажимает на элемент сетки? - person Sophie; 14.10.2014
comment
вам просто нужно изменить цвет фона ImageView с #FFFFFF на #FF0000 это комбинация RGB #RRGGBB. - person SilentKiller; 14.10.2014
comment
нет, я спрашиваю, как изменить цвет рамки, когда пользователь нажимает на griditem? - person Sophie; 14.10.2014
comment
@Sophie, я говорю то же самое, поскольку в настоящее время белый цвет является цветом рамки, поэтому вам просто нужно изменить цвет на красный. - person SilentKiller; 14.10.2014

Сохраните файл XML в папке Drawable с помощью этого кода:

<?xml version="1.0" encoding="utf-8"?>

<item android:state_enabled="true"><shape>
        <solid android:color="#FFFFFF" />

        <stroke android:width="1dp" android:color="#CACACA" />

        <corners android:radius="5dp" />

 <!--       <padding android:bottom="5dp" android:left="5dp" android:right="5dp" android:top="5dp" />-->
    </shape></item>

Теперь используйте это в качестве фона вашего изображения и установите изображения в качестве фоновых ресурсов. Источник

<ImageView
        android:id="@+id/imageItem"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:scaleType="centerCrop"
        android:background="@drawable/your_xml_name"
        android:contentDescription="@null"
        />
person The Holy Coder    schedule 14.10.2014