1

編集:解決しました!Awnser 1.プッシュ/投票できない

私は何時間もの間、「クロージング クレジット」アクティビティを作成する最善の方法を見つけようとしています。現在、テーブルの中央にTableLayoutaがあります。RelativeLayout私は単純なアニメーション ファイルを使用しています。

<translate
android:duration="20000" 
android:fromYDelta="100%p"
android:toYDelta="-100%p" /> 

問題は、クレジット テーブルが画面よりもはるかに大きく、約 4 倍大きいため、テーブルが画面の寸法で切り取られることです。アニメーションは正常に機能しますが、テーブルの表示可能な部分だけがディスプレイを通過します。

クロージング クレジットを作成するよりスマートな方法はありますか? Androidでテーブルを表示サイズでカットしないことは可能ですか?

とにかくこれはあまりにも多くのテキストですか?(ScrollView「ビューが大きすぎて描画キャッシュに収まりません」というメッセージが表示されます)

編集:Luksprogの助けを借りて、テーブル全体をスクロールダウンしました。すでに述べたように、今はかなり断食しています。今、ハンドラーまたはタイマータスクを介して速度を制御するのに問題があります。テーブルを表示してスクロール可能にするために、Webでこのソリューションを見つけました。そうしないと、スクロールしませんでした:

public class Credits extends Activity {
int mesuredHeightScroll;
ScrollView scroll;
boolean first_time = true;

protected void onCreate(Bundle savedInstanceState) {
    if (first_time == true) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.credits);
        scrolldownthetable();
    }
}

private void scrolldownthetable() {
    // TODO Auto-generated method stub
    final ScrollView scroll = (ScrollView) findViewById(R.id.scrolltable);
    TableLayout table = (TableLayout) findViewById(R.id.table);

    OnGlobalLayoutListener listener = new OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {

            scroll.smoothScrollTo(0, mesuredHeightTable);

        }
    };
    table.getViewTreeObserver().addOnGlobalLayoutListener(listener);
};

/**
 * Draw the Layout, otherwise getMesuredHeight returns 0, null onCreate 
 * to call it again, first time to false, so onCreate doesn't call again on
 * focus change (resume,pause...)
 */
@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);

    ScrollView scroll = (ScrollView) findViewById(R.id.scrolltable);
    TableLayout table = (TableLayout) findViewById(R.id.table);
    mesuredHeightTable = table.getMeasuredHeight();
    mesuredHeightScroll = scroll.getMeasuredHeight();

    onCreate(null);
    first_time = false;
}

}

この scrollTo() を Globallayoutlistener 内で自動化する方法はありますか? または、私のコードは愚かで、より快適な方法がありますか? 私は時間がなくなっているので、誰かがコードで私を助けることができれば素晴らしいでしょう:/

4

1 に答える 1

1

クロージング クレジットを作成するよりスマートな方法はありますか? android が displydimensions でテーブルをカットしないことは可能ですか?

テーブルは で囲まれている可能性が高いScrollViewため、下部に画面と同じ大きさの別のビューを追加してsmoothScrollTo()から、ScrollViewそれ自体で を使用できます。

Handlerおそらくアニメーション、特に速度をより細かく制御したいので、またはを使用して短い時間間隔でCountDownTimer単に呼び出すことができると思います。scrollTo()ScrollView

于 2013-06-23T11:23:27.637 に答える