Как сделать страницу с титрами закрытия - анимировать 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
через короткие промежутки времени.