Как сделать страницу с титрами закрытия - анимировать TableLayout без обрезки по размерам дисплея

РЕДАКТИРОВАТЬ: решено! Awnser 1. не может выдвинуть / проголосовать

Я пытаюсь часами выяснить, каков наилучший способ сделать "закрытые кредиты". Прямо сейчас у меня есть TableLayout внутри RelativeLayout центрировать стол. Я использую простой файл анимации:

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

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

Есть ли более умный способ создания заключительных кредитов? Возможно ли в андроиде не разрезать стол при размерах дисплея?

Может быть, это слишком много текста в любом случае? (с ScrollView Я получаю "Просмотр слишком большой, чтобы поместиться в кэш чертежа")

РЕДАКТИРОВАТЬ: С помощью Luksprog я получил всю таблицу для прокрутки. Как уже упоминалось, сейчас очень скоро. Теперь у меня проблемы с управлением скоростью через обработчик или таймер. потому что, чтобы отобразить и сделать таблицу прокручиваемой, я нашел в сети это решение, в противном случае оно не прокручивалось:

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? Или мой код глуп и есть более удобный способ? Было бы здорово, если бы кто-то мог помочь мне с некоторым кодом, потому что у меня не хватает времени:/

1 ответ

Решение

Есть ли более умный способ создания заключительных кредитов? Возможно ли на андроиде не разрезать стол на дисплеях?

Поскольку ваша таблица, скорее всего, заключена в ScrollView Вы можете добавить другой вид в нижней части экрана размером с экран, а затем использовать smoothScrollTo() на ScrollView сам.

Поскольку вы, вероятно, хотите больше контролировать анимацию, особенно скорость, я думаю, вы могли бы использовать Handler или же CountDownTimer просто позвонить scrollTo() на ScrollView через короткие промежутки времени.

Другие вопросы по тегам