我有一个包含一组TextViews的简单ListView。
我总是希望页面顶部的TextView顶部。
我可以使用onScrollStateChanged并在SCROLL_STATE_IDLE中稍微调整一下位置。
(类似于List view snap to item)
但这是一个后验修正,不能很顺利地进行修正。
是否有可能先控制一次投掷的结束位置? 所以我想在开始投掷后立即修改投掷的结束位置。
这可能吗?
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
public class Test extends Activity
{
private final static int N = 20;//number of HorizontalScrollView
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
LinearLayout layout = new LinearLayout(this);
//add a ListView
ListView list = new ListView(this);
layout.addView(list);
list.setAdapter(new BaseAdapter()
{
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
TextView t = new TextView(Test.this);
t.setText("line "+position);
t.setMinimumHeight(120);
return t;
}
@Override
public long getItemId(int position)
{
return 0;
}
@Override
public Object getItem(int position)
{
return null;
}
@Override
public int getCount()
{
return N;
}
});
setContentView(layout);
}
}
答案 0 :(得分:1)
遵循基本的物理定律: 设s(距离),v(速度),t(时间)和(减速加速度)。
对于给定的初始速度(从s_0 = 0开始),我们有
v(t) = a*t + v_0 (1)
s(t) = a*t^2+v*t (2)
a是一个系统常量(不知道哪个API)。 因此,对于给定的初始速度v_0
,您可以计算通过反转计算,您可以计算结束位置'
所需的初始速度