0

画面全体で(LinearLayout内で)水平方向に7回再利用している拡張ImageViewがあります。この ImageView のすぐ上と下には、独自の LinearLayouts 内にある他の拡張 ImageViews があります。LinearLayout 内で weight プロパティを使用してこれらをすべて均等に配置しているため、画面全体に均等に配置されます。私がする必要があるのは、この中間の ImageView を、アニメーションで整列する上部または下部の ImageViews の上に浮かせることができるようにすることです。この中間の IV を他の IV の上に浮かせることができるように、要素に配置できる z-index のようなものはありますか?

私の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 ではなく、拡張されています。

これは、アニメーションを実行する中央 (ソースとして centerimage を持つもの) にある imageview のスニペットです (これは .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 で目的を達成できない場合は、別のレイアウト タイプを使用することにオープンです。

御時間ありがとうございます

4

1 に答える 1

0

私は最終的にカスタムビューを作成し、スタックされたxmlファイルを次のように呼び出しました:

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

それは機能しているようで、実際には、3 つの要素 (「列」内) をすべて 1 つのビューに含めているため、このソリューションの方が気に入っています。

于 2010-08-24T22:37:52.820 に答える