android - 如何在 Android L 中创建类似 "Recent apps list"的列表

标签 android user-interface

<分区>

如何在 android L 中创建项目列表,如最近应用列表:

enter image description here

最佳答案

这很简单:

  • 从单个项目的布局开始。创建一个带有工具栏、图标、标题、[x] 按钮等的 xml。
  • 为放置这些元素创建一个布局。您可以从您希望的任何布局类开始 - FrameLayout 非常简单并且在这种情况下效果很好。
  • 将项目添加到您的容器中。您可能需要使用适配器。在这种情况下,请检查 ListView 或类似的来源。
  • 实现手势检测。滚动非常简单,但您可能想要处理滑动手势以轻松关闭项目。查看任何滑动关闭库以了解更多详细信息。
  • 实现布局。这部分是最难的。项目在屏幕上的位置是滚动+布局位置的非线性函数。基本上,您希望容器顶部的项目有一个接近于零的位置,而 container.getHeight()-item.getHeight() 作为底部项目的位置。然后你必须找到一个适合你的功能。对我来说是这样的:

    private void layoutChildren() {
        int width = getWidth() - getPaddingLeft() - getPaddingRight();
        int height = getHeight() - getPaddingTop() - getPaddingBottom();
        for (int i = 0; i < getChildCount(); i++) {
            float topSpace = height - width;
            int y = (int) (topSpace * Math.pow(2, (i * width - scroll) / (float) width));
            float scale = (float) (-Math.pow(2, -y / topSpace / 10.0f) + 19.0f / 10);
            ViewHelper.setTranslationX(getChildAt(i), getPaddingLeft());
            ViewHelper.setTranslationY(getChildAt(i), y + getPaddingTop());
            ViewHelper.setScaleX(getChildAt(i), scale);
            ViewHelper.setScaleY(getChildAt(i), scale);
        }
    }
    

有关更多详细信息和实现,您可以查看我的项目:

https://github.com/ZieIony/MaterialRecents

或者,如果您希望看到实际效果,它是 Carbon 库的一部分。您可以在小部件部分找到带有 RecentsList 的示例应用程序:

https://github.com/ZieIony/Carbon

关于android - 如何在 Android L 中创建类似 "Recent apps list"的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30072678/

相关文章:

android - 将 Google Play 游戏服务添加到现有应用

Android Fragment 不尊重 match_parent 作为高度

android - 如何在 styles.xml 中设置所有 Activity 的背景

java - 使用 AWT 关闭一个框架(不是整个应用程序)

iPhone – 导入/绘制 UI 图形元素的最佳方法? CGContextDrawPDFPage?

java - OpenCV Android,绘制最大轮廓,出现问题

android - 如何动态添加多个TextView到main.xml中定义的LinearLayout

javascript - Sencha allowedBlank 配置属性不适用于 TextField 小部件

python - Tkinter 图形用户界面主循环 "ex ="

java - 启动 Java Swing 桌面应用程序的正确方法