Android Curved Listview

Ume*_*ani 17 android listview android-animation

我在android中实现了一个listview,看起来就像这样并滚动 在此输入图像描述

我一直在通过在我的适配器的getView中设置膨胀行的布局参数来做到这一点,但是由此产生的问题是列表视图变得生涩.即,只有当一行完全从屏幕传递并且已调用getView时,才会更新行,并为所有可见行提供新的参数,从而导致可以应用动画,并且可以预先获取listview滚动位置.我想要的是视图之间的平滑过渡,即当列表视图向上移动时,内部视图应该与该移动精确地缩放.


这是我解决这个问题的第一级实现希望它可以帮助任何感兴趣的人,使用Bezier路径算法在活动开始时动态创建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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Shi*_*yUK 1

在尝试实现“弯曲”列表视图时,我通过窃取 v2 beta Android Wear 支持库找到了一个解决方案。

关键是新的WearableRecyclerView - 在此链接中查看您需要的所有信息。有关如何将支持库添加到项目的详细信息:https ://developer.android.com/wear/preview/start.html

此回收器视图允许您提供自定义 OffsettingHelper 以根据每个列表项的当前位置实现特殊转换。

顺便说一句,无论如何,您都应该使用 RecyclerView,因为这会回收您的视图并提高性能;这将几乎消除您提到的生涩动画,因为不必每次出现新视图时都创建它们。