Android - Галерея изображений с фоновыми изображениями? - PullRequest
0 голосов
/ 10 июня 2011

Я новичок в разработке для Android, но знаком с концепцией представлений, элементов управления, объектов, макетов XML, C # и т. Д.

Я пытаюсь создать «список» изображений с горизонтальной прокруткой, используя как можно больше встроенных функций. (Я не против использования пользовательских компонентов, но я стараюсь максимально изучить и оптимизировать их перед тем, как что-то совместить).

В настоящее время у меня есть Галерея с привязанным к ней адаптером. Адаптер создает ImageViews, как видно во многих основных уроках. На каждом проходе адаптера я устанавливаю фоновое изображение для ImageView. Я надеялся, что смогу расположить изображение переднего плана так, чтобы оно располагалось поверх фонового изображения в определенной позиции X / Y. К сожалению, я не смог заставить фоновое изображение вести себя так, как мне бы хотелось.

Возможно ли это даже с помощью простой галереи и ImageView? Или мне нужно создать какой-то пользовательский элемент управления (возможно, с использованием вложенных макетов?) И использовать этот элемент управления на каждой итерации адаптера?

Любая помощь будет принята с благодарностью.


Вот что я вижу ...

http://philaphan.com/public/stackoverflow/gallery1.png

... и что бы я хотел увидеть ...

http://philaphan.com/public/stackoverflow/gallery2.png

Вот мой код:

public class MyAdapter extends BaseAdapter
{

    private Context mContext;

    public MyAdapter(Context c)
    {
        mContext = c;   
    }

    public int getCount()
    {
        return App.myList.size();   
    }

    public Object getItem(int position)
    {   
        return position;    
    }

    public long getItemId(int position)
    {
        return position;    
    }

    public View getView(int position, View convertView, ViewGroup parent)
    {
        String imagePath = App.myList.get(position).thumbnail;

        ImageView i = new ImageView(mContext);

        i.setLayoutParams(new Gallery.LayoutParams(150, 150));
        i.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
        i.setBackgroundResource(R.drawable.image_bk5);
        //i.setBackgroundColor(Color.BLACK);

        File f = new File(imagePath);

        if (!f.exists())
        {
            i.setImageResource(R.drawable.image_missing);
        }
        else
        {
            Bitmap bmp = BitmapFactory.decodeFile(imagePath);
            i.setImageBitmap(bmp);
        }

        return i;
    }
}

Ответы [ 4 ]

1 голос
/ 08 января 2012

Я думаю, вы можете использовать:

i.setPadding(50, 50, 50, 50); //setpadding(left,top,right,bottom)
0 голосов
/ 29 января 2012

Как правило, если вы хотите добавить фоновое изображение в какую-либо раздутую галерею или ArrayAdapter или BaseAdapter, то - Убедитесь, что фоновое изображение определено в родительском макете или родительском представлении, например, главном макет, используя атрибут " android: background =" @ drawable / backupimage". Не устанавливать фон в XML, представляющем пользовательский ряд / объектный вид повторяющихся экземпляров.

Таким образом, фоновое изображение будет отображаться только один раз, оно будет выглядеть статичным за всеми надутыми объектами, а не повторяться снова и снова на каждой отдельной строке / объекте.

0 голосов
/ 10 июня 2011

Я смог обойти это, используя HorizontalScrollView с вложенным в него LinearLayout. Затем я программно добавляю два ImageViews - один для фона и один для переднего плана - и помещаю передний план в любой выбранный X / Y.

Мне все равно было бы интересно узнать, можно ли это сделать в элементе управления Gallery, если кто-нибудь увидит это позже.

0 голосов
/ 10 июня 2011

Попробуйте использовать это ..

замените i.setScaleType(ImageView.ScaleType.CENTER_INSIDE); with i.setScaleType(ImageView.ScaleType.FIT_XY);

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

...