4

小さなメモ帳アプリであるAndroid用のアプリを開発しています。私のアプリでは、Gridviewを使用して2 * Xサイズのグリッドを作成し、各セルに、アプリ内の各保存メモのプレビューを表示するタスクを持つLinearLayout呼び出しAbstractNoteがあります。

私のAbstractNoteには、プレビューをより美しく表示するために少し回転した背景画像があります。しかし、私の問題は、画像を回転させているときに、その一部がAbstractNote領域の外に出てしまうことであり、これを示す良い方法が見つかりません。

私は使用しようとしましたが、動作しますが、頑丈な画像とテキストが表示されます。また、滑らかな画像は表示されますが、完全な画像は表示されないView.setAnimation(...)カスタムDrawable(として設定)を作成しようとしました。AbstractNote.setBackgroundDrawable(...)

注意してください、私のターゲットアンドロイドは2.1であり、私は使用していませんView.setRotation(...)

これを行うにはを使用View.setAnimationしますが、頑丈な画像とテキストを取得します

カスタムドローアブルを使用しますが、セルの外側にペイントすることはできません。

誰かがそれを修正する方法を知っているなら、試みられた1で凹凸のある画像とテキストを修正する方法、または試みられた2でセルの外側に画像を描く方法を知っているなら、私は非常に感謝します。

4

1 に答える 1

5

私はついに問題の解決策を見つけました。解決策はあまり良くありませんが、うまくいきます。セルアイテムを描画するというアイデアは、GridViewの子/アイテムではなくGridViewに直接背景を描画することでした。

新しいGridViewを次のように作成します。

public class NoteGridView extends GridView {
@Override
protected void dispatchDraw(Canvas canvas) {
    final int count = getChildCount();
    if (count > 0) {
        for (int i = 0; i < this.getChildCount(); i++) {
            // For each of my childen draw it backgrund that allow to draw bg that is bigger then cell.
            View childAt = this.getChildAt(i);
            if (childAt instanceof AbstractNote) {
                final AbstractNote note = (AbstractNote) childAt;
                // Set the zero point to the start of the childen, then call the childen draw methods.
                canvas.save();
                canvas.translate(childAt.getLeft(), childAt.getTop());
                note.drawBackground(canvas);
                canvas.restore();
            }
        }
    }
    super.dispatchDraw(canvas);
}
}

そして私の子供たちAbstractNoteに私はメソッドを追加します、これは私が描くものが今私が持っている小さなキャンバスよりもはるかに大きいGridViewキャンバスにdrawBackground描くその背景を行いますAbstractNoteAbstractNote

于 2012-09-07T13:24:22.757 に答える