плавающий анимированный ImageView поверх других элементов в LinearLayout - android - PullRequest
0 голосов
/ 24 августа 2010

У меня расширенный ImageView, который я повторно использую 7 раз по горизонтали (в пределах LinearLayout) по всему экрану. Непосредственно над и под этим ImageView находятся другие расширенные ImageView, которые находятся в пределах их собственных LinearLayouts. Я распределяю их все равномерно, используя свойство weight в LinearLayout, чтобы они равномерно распределялись по экрану. Мне нужно, чтобы этот средний ImageView мог плавать поверх верхнего или нижнего ImageViews, к которому он соответствует анимации. Есть ли какой-нибудь z-индекс, который я могу поставить на элементы, чтобы я мог плавать эту среднюю IV над другими?

Фрагмент моего xml:

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/opponentrow">
    <ImageView
        android:id="@+id/your1"
        android:layout_width="45px"
        android:layout_height="60px"
        android:src="@drawable/topimage"
        android:layout_weight="1" />
        ...
</LinearLayout>
<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/tokenrow">
    <ImageView
        android:id="@+id/your1"
        android:layout_width="20px"
        android:layout_height="20px"
        android:src="@drawable/centerimage"
        android:layout_weight="1" />
        ...             
</LinearLayout>
<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <ImageView
        android:id="@+id/your1"
        android:layout_width="45px"
        android:layout_height="60px"
        android:src="@drawable/bottomimage"
        android:layout_weight="1" />
        ...
</LinearLayout>

эллипсы просто указывают, что эти изображения повторяются 7 раз каждый. Кроме того, как я уже сказал, они не являются ИСТИННЫМИ ImageViews, они расширены.

Вот фрагмент изображения, который находится посередине (с центром изображения в качестве источника), который выполняет анимацию (это находится в файле .java)

    public Tokens(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
        setOnClickListener(myListener);
    }

    private OnClickListener myListener = new OnClickListener(){
    public void onClick(View v) {
        doAnimate();
    }
}; 

private void doAnimate(){
    final Animation animUp = new TranslateAnimation(0,0,0,-22);
    animUp.setDuration(200);
    animUp.setFillAfter(true);

    final Animation animDown = new TranslateAnimation(0,0,0,22);
    animDown.setDuration(200);
    animDown.setFillAfter(true);
    if(avail)
        startAnimation(animDown);

}

некоторые важные соображения: мне нужно сохранить равномерный горизонтальный интервал для 7 элементов (все 3 ряда из них). Я открыт для использования другого типа макета, если мои цели не могут быть достигнуты с помощью LinearLayout.

спасибо за ваше время

1 Ответ

0 голосов
/ 25 августа 2010

В итоге я написал собственный вид и вызвал сложенный xml-файл с:

View view=layoutInflater.inflate(R.layout.handlayout, this);

похоже, что оно работает, и на самом деле мне все равно нравится это решение, потому что я включаю все три элемента (в столбце) в одно представление.

...