1

编辑:解决了!Awnser 1. 无法推送/投票

我试图找出几个小时来进行“结束学分”活动的最佳方式是什么。现在我有一个TableLayout内部 aRelativeLayout来使桌子居中。我正在使用一个简单的动画文件:

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

问题是,学分表比屏幕大得多,大约大 4 倍,因此表在屏幕尺寸处被切割。动画效果很好,但只有表格的可视部分穿过显示器。

有没有更聪明的方法来创建结束学分?在android中是否可以不按显示尺寸切割表格?

也许这还是太多的文字?(ScrollView我得到“视图太大而无法放入绘图缓存”)

编辑:在 Luksprog 的帮助下,我让整个表格向下滚动。就像已经提到的那样,现在快得多了。现在我在通过处理程序或 timertask 控制速度时遇到问题。因为要显示并使表格可滚动,我在网上找到了这个解决方案,否则它不会滚动:

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是否可以不按显示尺寸切割桌子?

由于您的表格很可能包含在 a 中,ScrollView您可以在底部添加另一个与屏幕一样大的视图,然后smoothScrollTo()在其ScrollView本身上使用。

由于您可能希望对动画进行更多控制,尤其是速度,我认为您可以使用HandlerorCountDownTimer来简单地scrollTo()ScrollView较短的时间间隔调用。

于 2013-06-23T11:23:27.637 回答