【发布时间】:2014-09-21 01:38:16
【问题描述】:
我正在 android 中实现一个列表视图,它看起来就像这样并滚动
我一直在通过在我的适配器的 getView 中设置膨胀行的布局参数来做到这一点,但由此引发的问题是列表视图变得生涩。即,它仅在一行完全从屏幕传递并调用 getView 时更新行,为所有可见行提供新参数,导致抽搐可以应用动画并且可以精确地获取列表视图滚动位置。 我想要的是视图之间的平滑过渡,即当列表视图向上移动一点时,内部视图应该随着该移动精确缩放。
这是我解决这个问题的第一级实现希望它可以帮助任何有兴趣的人,arrHeight 和 arrWidth 是在活动开始时使用贝塞尔路径算法动态创建的
public class TimelinePinsAdapter extends ParentLazyAdapter {
LinearLayout ll_PinsContainer;
LinearLayout.LayoutParams llParams_PinParameters;
public TimelinePinsAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
super(a, d);
}
public int getCount() {
return data.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
vi = convertView;
if (convertView == null)
vi = inflater.inflate(R.layout.rowsinflate, null, false);
ll_PinsContainer = (LinearLayout) vi.findViewById(R.id.item);
llParams_PinParameters =
new LinearLayout.LayoutParams(0,
(int) TimeLineActivity.arrHeight[position % 7]);
ll_PinsContainer.setLayoutParams(llParams_PinParameters);
return vi;
}
}
【问题讨论】:
-
您与我们分享您已经拥有的东西怎么样?我们无法读懂你的想法。
-
这是我解决此问题的第一级实现,希望它对任何感兴趣的人有所帮助, arrHeight 和 arrWidth 是使用贝塞尔路径算法在活动开始时动态创建的 public class TimelinePinsAdapter extends ParentLazyAdapter { LinearLayout ll_PinsContainer; LinearLayout.LayoutParams llParams_PinParameters; public TimelinePinsAdapter(Activity a, ArrayList
> d) { super(a, d); } public int getCount() { return data.size(); } public Object getItem(int position) { 返回位置; } public long getItemId(int position) { 返回位置; } 公共视图 g -
你如何利用宽度?它甚至不在代码中?尽管贝塞尔路径算法可能是开始解决问题的好方法,但我认为这不是一个足够好的答案,不能成为公认的答案。答案留下了许多关于如何实现其余图形的问题。
-
不接受,一旦我完成它,它将发布完整的解决方案。这是一个巨大的代码发布我刚刚发布了可以像这样工作和缩放它的适配器
-
感觉你应该继承一个 ScrollView 并用画布而不是视图系统做所有事情
标签: android listview android-animation