【问题标题】:Which Android layout can be used for panning and zooming [duplicate]哪个Android布局可用于平移和缩放[重复]
【发布时间】:2021-06-12 07:09:03
【问题描述】:

我正在创建一个应用程序作为一项挑战,用户可以在其中快速生成一个区域的示意图布局。有一个起始节点,人们可以扩展该节点或向上、向右、向左或向下创建一个新节点。每个节点都描述了该区域中的某些东西(公园、树林等)。节点之间的距离总是相同的。基本上,您逐个节点构建此布局(就像您在此视频中逐个节点创建思维导图一样:https://www.reddit.com/r/AndroidStudio/comments/m57n0f/what_layout_on_android_allows_the_user_to_pan_the/?utm_source=share&utm_medium=mweb

我希望人们能够平移和缩小以快速从布局的一端移动到另一端,从而快速添加或编辑布局。除了我不知道要使用什么布局。使用水平和垂直布局似乎不是解决方案......(没有缩放并且非常笨重,因为你不能对角线)

奖金: 如果距离和规则始终相同(类似于视频中显示的方式),您将如何以编程方式添加这些新节点?

我看到这篇关于动态添加相对于彼此的图像视图和按钮的博客文章 - 这听起来像是一个解决方案,对吧? https://abhiandroid.com/ui/dynamic-relativelayout-params-programmatically.html

【问题讨论】:

    标签: android android-layout android-relativelayout


    【解决方案1】:

    您应该覆盖 SurfaceView 并在方法 onDraw 中绘制矩形和文本,您可以使用您的表面在用户触摸的情况下使用三角形算术缩放和平移矩阵,并使所有内容保持您始终使用的相同比例一个 1x1 矩阵来存储原理图布局,并且只能从 SurfaceView 缩放它。这种方法比尝试在屏幕中调整 Android 视图要容易得多,但是如果您想遵循此路径,还有一个来自 ViewGroup 的 setScaleX/Y setScrollX/Y,您可以将其应用于屏幕的根目录,但您需要阅读用户通过触摸输入。

    【讨论】:

      【解决方案2】:

      只需使用这个库。

      implementation 'com.jsibbold:zoomage:1.3.1'
      

      在 XML 中

      <com.jsibbold.zoomage.ZoomageView
              android:id="@+id/img_view"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:scrollbars="vertical"
              android:scaleType="matrix"
              app:zoomage_animateOnReset="true"
              app:zoomage_doubleTapToZoom="true"
              app:zoomage_maxScale="9"
              app:zoomage_minScale="0.5"      
              app:zoomage_zoomable="true" />
      

      更多详情GitHub

      【讨论】:

        猜你喜欢
        • 2018-05-13
        • 2015-07-08
        • 1970-01-01
        • 2012-08-23
        • 2011-01-04
        • 2019-02-05
        • 1970-01-01
        • 1970-01-01
        • 2014-09-14
        相关资源
        最近更新 更多