Горизонтальный просмотр категорий Android с изображениями

Я реализую горизонтальную прокрутку, элементы которой содержат ImageView и Textview

Это моя основная деятельность:

    public class MainActivity extends Activity implements OnClickListener{
    List elementlist;
    LinearLayout layout;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        elementlist=new ArrayList<Element>();

        elementlist.add(new Element("Item 1", "p1"));
        elementlist.add(new Element("Item 2", "p2"));
        elementlist.add(new Element("Item 3", "p3"));
        elementlist.add(new Element("Item 4", "p4"));
        elementlist.add(new Element("Item 5", "p5"));

        layout=(LinearLayout)findViewById(R.id.lay);


        populate_list();

    }

    private void populate_list()
    {

        Iterator<Element> i=elementlist.iterator();
        while(i.hasNext())
        {
            Element e= (Element)i.next();

            LayoutInflater inflater=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
            View v=inflater.inflate(R.layout.list_element, null);

            ImageView iw=(ImageView)v.findViewById(R.id.imageView1);
            TextView tw=(TextView)v.findViewById(R.id.textView1);
            iw.setImageDrawable(getResources().getDrawable(getResources().getIdentifier(e.getImagename(), "drawable", this.getPackageName())));
            tw.setText(e.getDisplayname());

            layout.addView(v);
        }



    }   
}

Класс элемента:

public class Element {
private String displayname;
private String imagename;
public Element(String displayname, String imagename) {
    this.displayname = displayname;
    this.imagename = imagename;
}

public String getDisplayname() {
    return displayname;
}

public String getImagename() {
    return imagename;
}}

Activity_main.xml:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <HorizontalScrollView
        android:id="@+id/horizontalScrollView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true" >

        <LinearLayout
            android:id="@+id/lay"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:orientation="horizontal" >
        </LinearLayout>
    </HorizontalScrollView>

</RelativeLayout>

И listelement.xml:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >


    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/imageView1"
        android:layout_centerHorizontal="true"
        android:background="#000000"
        android:layout_alignParentRight="true"
        android:layout_alignParentLeft="true"
        android:orientation="vertical" >


        <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#ffffff" />


    </LinearLayout>

</RelativeLayout>

Теперь мой сценарий заключается в том, что у меня есть два требования:

  1. При прокрутке размер списка должен уменьшаться (как в случае с галереей nokia N72, N95 и т.д.)

  2. После завершения прокрутки список должен автоматически перейти к ближайшему элементу, и размер снова увеличится, т.е. ширина этого элемента укладывается в ширину экрана или, по крайней мере, выходит в центр.

Как я могу удовлетворить свои требования?

Я хочу сделать именно так

Пока макет статичен

Пока пользователь прокручивает, это должно выглядеть так: Пока пользователь прокручивает


person gaurav414u    schedule 10.02.2013    source источник


Ответы (1)


Из вашего вопроса я предположил, что уменьшение размера не обязательно должно быть пропорционально смещению, т.е. у вас есть 1 больший размер и 1 меньший размер.

Продолжая мое предположение, я предлагаю вам ответить на вопрос: Полный рабочий пример сценария анимации Gmail с тремя фрагментами? который покажет вам четыре реализации, связанные с требуемой анимацией изменения размера

person raghavsood33    schedule 19.12.2013
comment
На самом деле да, это не обязательно должно быть точно пропорционально, но мне нужно постепенное масштабирование. - person gaurav414u; 22.12.2013
comment
Я реализовал это в вертикальном Custom ListView, используя некоторое матричное преобразование и математику. В этом случае масштабирование и поворот пропорциональны расстоянию дочернего элемента от центра списка, и это выглядит довольно круто. - person gaurav414u; 22.12.2013