【问题标题】:Android Curved ListviewAndroid 弯曲列表视图
【发布时间】: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


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    相关资源
    最近更新 更多