Android 弯曲 ListView

标签 android listview android-animation

我正在 android 中实现一个 ListView ,它看起来就像这样并滚动 enter image description here

我一直在通过在我的适配器的 getView 中设置膨胀行的布局参数来做到这一点,但由此引发的问题是 ListView 变得生涩。即,它仅在一行完全从屏幕传递并调用 getView 时更新行,为所有可见行提供新参数,从而导致抖动可以应用动画并且可以精确地获取 ListView 滚动位置。 我想要的是 View 之间的平滑过渡,即当 ListView 向上移动一点时,内部 View 应该随着该移动精确地缩放。


这是我解决这个问题的第一级实现,希望它可以帮助任何有兴趣的人,arrHeight 和 arrWidth 是在 Activity 开始时使用贝塞尔路径算法动态创建的

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;
    }
}

最佳答案

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

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

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

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

关于Android 弯曲 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25019429/

相关文章:

java - 使用 android fragment 动画共享元素转换似乎是一场噩梦

android - 将 CustomView 导出为 Base64 编码的 PNG

java - ListView header 未按预期工作?

android - Oreo 上的单选按钮部分未选中

Android Listview - GetView 将更改应用于我不想要的项目

自定义 ArrayList Adapter 和 Cursor 的 Android 怪异行为

java - View 在动画期间被像素化以倾斜

android - 服务每分钟发送位置,即使应用程序在后台或系统重新启动

android - 如何在 Cordova/Phonegap 中使用 Google 登录 API

android - 以编程方式将应用程序安装为系统应用程序